PDA

View Full Version : سوال: مشکل با دیتاتیبل استاتیک



mahdidabaghi
یک شنبه 13 مرداد 1392, 01:13 صبح
با سلام خدمت دوستان و اساتید
بنده پروژه ای رو مشغول انجامش هستم که یه cms فول ایجکسیه که برای یه صنف خاصه.
برای این منظور هم سراغ JQuery-Ajax همراه با Json و Web Service رفتم.
قسمتی از کار شبیه به یه سبد خرید میمونه(البته سبد خرید نیست) و یه دیتاتیبل به صورت استاتیک (جهت شناسایی توسط وب سرویس)و public (چون در چندتا وب سرویس با این دیتاتیبل کار دارم) تعریف کردم.
مشکل اینه وقتی پروژه رو روی هاست میذارم و دو نفر همزمان روی این دیتاتیبل کار میکنند(مثلا دارن سبد خریدشون رو پر میکنند) سبدشون مشترک میشه.
یعنی انتخابهای نفر اول و نفر دوم با هم ریخته میشه توی دیتاتیبل.
بنده سوالم اینه چطور میشه یه دیتاتیبل به صورت استاتیک داشت که این مشکلی که عرض کردم واسش پیش نیاد
سپاسگزار میشم راهنمایی بفرمایید

Alireza_Salehi
یک شنبه 13 مرداد 1392, 08:17 صبح
با توجه به دو تا پست دیگری هم که در این زمینه دارید به نظرم کمی صورت مسئله اشتباه تعریف شده. اگر مسئله را به صورت کامل شرح دهید به راه حل بهتری خواهید رسید.

ولی به طور کلی ساده ترین راه برای نگهداری اطلاعات به ازای هر کاربر استفاده از Session است.

mahdidabaghi
یک شنبه 13 مرداد 1392, 10:32 صبح
با توجه به دو تا پست دیگری هم که در این زمینه دارید به نظرم کمی صورت مسئله اشتباه تعریف شده. اگر مسئله را به صورت کامل شرح دهید به راه حل بهتری خواهید رسید.

ولی به طور کلی ساده ترین راه برای نگهداری اطلاعات به ازای هر کاربر استفاده از Session است.
ممنونم مهندس
در اوندو تایپیکی که ایجاد کرده بودم ئرسته عنوانشون همین نام بود ولی داستان اونا فرق میکرد.
راجع به سشن هم باید خدمتتون عرض کنم که منم از سشن استفاده میکنم.ولی با این مشکل عجیب برخورد کردم.
بذارین اینجوری توضیح بدم:
فرض کنید من یه سبد خرید دارم و کاربر در صورت داشتن مجوز(سشن) میتونه بیاد و محصولاتشو انتخاب کنه و توی سبد بذاره.برای این منظور هم یه دیتاتیبل استاتیک تعریف کردم و با هر انتخاب کاربر رکورد مربوط به اون محصول داخل دیتاتیبل قرار گرفته و گریدی هم برای نمایش موارد انتخابی گذاشتم که از این دیتاتیبل پر میشه.(تمام کارها به صورت ایجکسی انجام میشه)
حالا اگه نفر اولی بیاد و یه محصول رو در سبد خریدش بذاره(یعنی تا اینجا دیتاتیبل یه رکورد توش وجود داره) و در همون لحظه نفر دومی هم یه محصول دیگه رو در سبد خریدش قرار بده اونوقت انگار هر دو کاربر دو محصول رو انتخاب کردند.یعنی بجای اینکه دیتاتیبل واسه هر کاربر یه سطر داشته باشه واسه هر دوتاشون دو سطر در نظر میگیره!!!!!!!!!!!!!!!!
میبخشید که طولانی شد.ممنون میشم که راهنمایی کنید

mahdidabaghi
یک شنبه 13 مرداد 1392, 12:30 عصر
دوستان نظری ندارند

mahdidabaghi
یک شنبه 13 مرداد 1392, 16:19 عصر
یعنی روشی وجود نداره؟

fakhravari
یک شنبه 13 مرداد 1392, 18:25 عصر
اينم يه نظري
يه كوكي بزار يه كد unique بدش .
موقع اضافه يا كم برسي كن ................

Alireza_Salehi
دوشنبه 14 مرداد 1392, 14:07 عصر
در برنامه های تحت وب طراحی ساختار برنامه باید به ازای هر درخواست صورت پذیرد. یعنی به ازای هر درخواستی که به سرور می رسد همه چیز از نو پردازش می شود و همه متغیر ها و اشیا از نو ساخته می شوند (فعلا به بحث کش کاری نداریم)
صرفا در صورتی که نیاز به حفظ حالت (State) چیزی وجود داشت به یکی از روش ها (Cookie, Session,Application,Cache, ViewState,....) آن را حفظ می کنید که در درخواست بعدی از بین نرود.

وقتی از یک کلاس یک نمونه (Instance) ساخته می شود (در اینجا کلاس Page به ازای هر کاربر) کلیه اشیا و متغیر های داخلی آن به ازای هر نمونه یک حافظه مجزا خواهد داشت. ولی وقتی به صورت static تعریف شده باشند به ازای همه نمونه ها (به ازای کاربران مختلفی که صفحه مورد نظر را درخواست کرده اند) از یک حافظه مشترک استفاده خواهد شد.

بنابراین در ASP.NET از static به جا و به موقع استفاده کنید.

mahdidabaghi
سه شنبه 15 مرداد 1392, 00:46 صبح
در برنامه های تحت وب طراحی ساختار برنامه باید به ازای هر درخواست صورت پذیرد. یعنی به ازای هر درخواستی که به سرور می رسد همه چیز از نو پردازش می شود و همه متغیر ها و اشیا از نو ساخته می شوند (فعلا به بحث کش کاری نداریم)
صرفا در صورتی که نیاز به حفظ حالت (State) چیزی وجود داشت به یکی از روش ها (Cookie, Session,Application,Cache, ViewState,....) آن را حفظ می کنید که در درخواست بعدی از بین نرود.

وقتی از یک کلاس یک نمونه (Instance) ساخته می شود (در اینجا کلاس Page به ازای هر کاربر) کلیه اشیا و متغیر های داخلی آن به ازای هر نمونه یک حافظه مجزا خواهد داشت. ولی وقتی به صورت static تعریف شده باشند به ازای همه نمونه ها (به ازای کاربران مختلفی که صفحه مورد نظر را درخواست کرده اند) از یک حافظه مشترک استفاده خواهد شد.

بنابراین در ASP.NET از static به جا و به موقع استفاده کنید.
سپاس مهندس ... بنده هم با شما موافقم ولی داستان josn و web service داستان استاتیکیه!!!!
کدهامو تغییر دادم و با کمک سشن برنامه رو اکی کردم ... باز هم به صورت ایجکسی و البته پیشنهادات دوستان گل خودم تو سایت:لبخندساده: