PDA

View Full Version : کش کردن کانکشن(Connection Cache)



مهدی فهمیده غلامی
چهارشنبه 21 بهمن 1383, 20:25 عصر
در کتاب asp.net از انتشارات مایکروسافت (برنامه switch board)
اصطلاحی را تحت عنوان کش کردن اتصال به پایگاه داده را نام برده است.
منظور از این اصطلاح چیست؟
فرم کلی این قسمت از برنامه برنامه بصورت زیر است:


.
.
.
cnn = new adoconnection(strCnn)
addtochache(cnn)
.
.
.
.
دوستانی که این فصل از کتاب را مطالعه کرده اند لطفا جواب بدهند

Behrouz_Rad
پنج شنبه 22 بهمن 1383, 08:49 صبح
Cache، یک ناحیح از حافظه سرور است که اطلاعاتی که برای بار اول از سرور درخواست می شوند تا یک مدت زمانی مشخص در این فضا قرار می گیرند.
این عمل باعث می شود که در درخواست های بعدی، سرعت ارسال درخواست و پردازش صفحه تا حد زیادی بالا برود.
در مثالی که شما زدید (که البته زیاد جالب نیست)، Connection String شما در حافظه Cache سرور قرار می گیرد که تا حدودی زمان اتصال به بانک را افزایش می دهد.
البته بهترین حالت قرار دادن Connection String در فایل Web.Config هست.
موفق باشید.
:wise1:

M.GhanaatPisheh
پنج شنبه 22 بهمن 1383, 14:02 عصر
در مثالی که شما زدید (که البته زیاد جالب نیست)
ببخشید بهروز خان ایشون خود Connection رو cache کردن نه connection String
:)

مهدی فهمیده غلامی
پنج شنبه 22 بهمن 1383, 15:03 عصر
دوست عزیز من در کد ارایه شده خود ابجکت کانکشن را cache کرده ام نه connection string را !!!
در این حالت چه اتفاقی می افتد؟؟

Behrouz_Rad
پنج شنبه 22 بهمن 1383, 18:28 عصر
در مورد Cache کردن شی Connection به شخصه امتحان نکردم ولی فکر نمی کنم اصولا Cache کردن شی Connection کار درستی باشه.
مثلا اگر شی Connection رو در Session ذخیره کنید، برای هر بار درخواست اتصال یک Session جدید ایجاد میشه که منابع سرور رو به شدت تخریب می کنه.
یا اگر در Application‌ یا Cahce ای که شما میگید ذخیره بشه، چون Client ها برای درخواستشون سر این Object می جنگن، راندمان کار پایین میاد.
البته تا نظر دیگر دوستان چی باشه.
موفق باشید.
:wise1:

M.GhanaatPisheh
جمعه 23 بهمن 1383, 02:10 صبح
من فکر میکنم performanceی که میتونیم با cacheکردن Connectionبگیریم (ساخته شدن به دفعات کمتر )
در مقابل قابل دفاع هست.
البته این رو یه Developer باید بسنجه ببینه بهترین راه در شرایط موجود چی هست.
اینطور نیست؟

titbasoft
یک شنبه 25 بهمن 1383, 11:55 صبح
کش کردن cn روی سرور می تونه برای استفاده از یک cn در طی حرکت کاربر بین صفحات مختلف یا صفحه جاری در صورت refresh شدن استفاده بشه . برای مثال فرض کنید یک transaction دارید که پس از طی چندین مرحله قراره commit بشه که از این روش می شه استفاده کرد. البته این solution پیشنهاد نمیشه چون overhead بسیار زیادی روی سرور میزاره و باعث مصرف پهنای باند شما هم خواهد شد ؟؟ بهترین راه حل استفاده از enterprise transaction و استفاده از +Com هست!
(ایده از کتاب MS training kit) :wink:

Behrouz_Rad
یک شنبه 25 بهمن 1383, 13:27 عصر
بهترین راه حل استفاده از enterprise transaction و استفاده از +Com هست!
در مورد گفته ی فوق بیشتر توضیح بدید... یه کم حرفتون مشکوک ولی من زود قضاوت نمی کنم....
:D

titbasoft
یک شنبه 25 بهمن 1383, 17:32 عصر
با سلام خدمت جناب کاراگاه ؟! (چون حرفم مشکوک بود!) :wink:
اما پشتوانه حرفم یک پاراگراف از همون کتابی که قبلا هم خدمتون عرض کردم
-----------------
کتاب: Developing Web Applications with Microsoft Visual Basic .NET and Microsoft Visual C# .NET.
البته ویرایش دوم (2003)
فصل 5 درس 3
کپی متن کتاب:
The System.EnterpriseServices namespace provides enterprise-level transactions through the ContextUtil class.
Enterprise-level transactions use the Microsoft Distributed Transaction Coordinator (MS DTC) provided with Microsoft SQL Server 2000 to track transactions across multiple Web forms and across multiple COM+ components
-------------------------------------------------
در هر صورت خوشحال می شم اگر اشتباهی هم داشتم بدونم کجا بوده؟
:cry: take it easy

titbasoft
یک شنبه 25 بهمن 1383, 17:51 عصر
2) من نگفتم ربطی به کش کردن cn داره فقط گفتم بهترین راه حل برای transaction tracking روی صفحات وب هست! :sorry:
(دوباره تکرار می کنم من گفته بودم یکی از استفاده های کش کردن cn می تونه transaction tracking باشه)
در ضمن اگه در مورد اون namespace ای که گفتم کسی مطلبی جایی دیده خوشحال میشم بیشتر در موردش بدونم چون اطلاعاتم هنوز خیلی ناقصه!

---

titbasoft
یک شنبه 25 بهمن 1383, 18:31 عصر
دوست خوبم توجه کن:

سوال 1) کش کردن cn به چه درد می خوره؟
جواب 1) می تونه برای transaction tracking استفاده بشه!

سوال 2) آیا کش کردن cn برای براورده کردن نیاز transaction tracking راه حل مناسبی است؟
جواب 2) خیر ! راه حل بهتر استفاده از enterprise transaction است. :)

(فکر نمی کنم خیلی مهم باشه ولی چون پرسیدید عرض می کنم که titbasoft شرکتی است با هدف توصعه نرم افزارهای جامع . البته وب سایت titbasoft الان در مرحله تسته پس شما به نسخه beta دسترسی دارید)

Behrouz_Rad
یک شنبه 25 بهمن 1383, 18:37 عصر
در مورد Enterprise Transaction بیشتر توضیح بدید.
مرسی

مهدی فهمیده غلامی
پنج شنبه 06 اسفند 1383, 23:14 عصر
اقا اخرش جمع بندی این نظرات حکیمانه چیه؟
این کتاب چکار کرده؟ :گیج: :گیج: :گیج:

مهدی فهمیده غلامی
جمعه 14 اسفند 1383, 23:24 عصر
جمع بندی این مطالب چیه دوستان
تکنیکی که در کتاب عنوان شده چه کار می کند؟

hpx
پنج شنبه 27 اسفند 1383, 15:35 عصر
سلام
ado.net
خودش از pattern سهدلمث فخدث استفاده می کنه

یعنی اولین بار که connection string رو میدید connection ایجاد شده را pool می کنه و دفعه های بعد با مقایسه connection string از pool استفاده می کنه.

hpx
پنج شنبه 27 اسفند 1383, 15:37 عصر
sorry for my type :d
i mean single tone pattern

M.GhanaatPisheh
جمعه 28 اسفند 1383, 00:30 صبح
من کاربرد Singleton رو اینجا نمی بینم
بفرمایید کجاست؟

M.GhanaatPisheh
جمعه 28 اسفند 1383, 00:34 صبح
یعنی اولین بار که connection string رو میدید connection ایجاد شده را pool می کنه و دفعه های بعد با مقایسه connection string از pool استفاده می کنه.
ولی ظاهرا حق با شما بود .
کاملا درسته.

.مهدی فهمیده غلامی.
یک شنبه 10 اردیبهشت 1385, 06:25 صبح
با تشکر از پاسخ همه دوستان ولی من به سوال من هنوز یه جواب درست داده حسابی نشده
کسی واقعا این فصل رو خونده ؟

babakj
سه شنبه 09 بهمن 1386, 13:36 عصر
نه آقا کسی مثل اینکه این فصل رو نخونده اگه میشه اسم کتاب رو دقیقا بگو


در کتاب asp.net از انتشارات مایکروسافت (برنامه switch board) !!!
آخه مایکروسافت چند تا کتاب در زمینه Asp.net داره کدومش؟

مسله دیگه اینکه وقتی مایکروسافت یه راه حلی ارائه می ده حتما درسته
حالا خیلی از علما ممکنه اونو قبول نداشته باشند :))