PDA

View Full Version : مسئله معماری



lollypop
دوشنبه 30 بهمن 1385, 18:50 عصر
با سلام
همونطور که میدونید برنامه های تحت وب state less هستند و نمیشه یک Dataset رو (مثل برنامه های تحت ویندوز) پر کرد، بعد رکوردهاش رو ویرایش کرد و بعد روی دیتابیس ذخیره کرد. حالا ما قراره دو تا موجودیت که رابطه master/detail دارند (مثل سند حسابداری و اقلام سند) داشته باشیم و در یک صفحه aspx سند حسابداری رو دریافت کنیم. در این حالت باید اطلاعات هدر سند (شماره سند، تاریخ و ...) اخذ بشه و سپس اقلام سند دریافت بشه. در نهایت هدر سند و اقلامش یکجا در بانک اطلاعاتی ذخیره بشه. در زمان ذخیره شدن سند، قسمت هدر سند باید چک کنه که مجموع بدهکار کلیه اقلام با مجموع بستانکار اقلام برابر باشه (اصطلاحا" میگیم سند بالانس باشه) ، به عبارت دیگه یک Business rule رو هدر روی اقلام انجـام میده ، شما چه راهی برای حل مسئله پیشنهـاد میکنید؟ آیا یک Dataset در session نگهداری میکنید؟ یا راه دیگه؟

Behrouz_Rad
سه شنبه 01 اسفند 1385, 15:36 عصر
می تونی از Session استفاده کنی اما اگر قصد داری که کار بی نقصی رو ارائه بدی، بهتره از Cache استفاده کنی.
استفاده از Session ها مستلزم فعال بودن کوکی ها بر روی کلاینت هست که اگر حتی 1 درصد هم احتمال میدی که کوکی ها فعال نباشند (که من همیشه این احتمال رو میدم) بهتره از Session استفاده نکنی. مگر اینکه ناچار باشی که در اینجا اجباری در کار نیست!

موفق باشید.

nazaninam
سه شنبه 01 اسفند 1385, 19:18 عصر
آقای راد این باسم سواله که مگر session روی سرور ذخیره نمیشه؟ پس چرا اگر cookie ها در سمت کلاینت غیر فعال بشه نمیشه از session استفاده کرد؟

Behrouz_Rad
سه شنبه 01 اسفند 1385, 22:23 عصر
مقدار Session بر روی سرور ذخیره میشه اما مشخصه ی Session یا همون SID به صورت یک کوکی موقت بر روی کلاینت ذخیره میشه تا در هنگام رد و بدل شدن درخواست ها، مشخص بشه که این Session متعلق به کدام کلاینت است!
البته میشه SID رو از طریق URL نیز رد و بدل کرد که این کار با تنظیم خاصیت cookieless قسمت sessionState به true در فایل Web.Config امکان پذیر هست. اما در این حالت، URL شکل جالبی پیدا نمی کنه!

موفق باشید.

lollypop
شنبه 03 فروردین 1387, 23:51 عصر
میشه اون مورد cache رو یه کم توضیح بدی؟ ضمنا نگه داشتنش توی session زیاد جالب نیست. مثلا اگر کاربر دکمه back رو بزنه شما به یه صفحه دیگه میری در حالیکه session اطلاعات این صفحه رو داره.