ورود

View Full Version : سوال درباره Multi-tier



soroush_vs
یک شنبه 07 خرداد 1385, 16:50 عصر
چرا در برنامه چند ردیفه بعد از مدتی که از برنامه استفاده میشود برنامه قفل میکند (البته نزدیک 12 کاربر در حال استفاده)
شاید تنظیمات مربوط به برنامه سرور درست نیست مثلا
Multi , Single Instance
Single ,Appartment Instance
من از بیشتر ترکیبات تنظیمات استفاده کردم اما باز هم برنامه قفل میکند
لطفا راهنمایی کنید حیاتیه
قبلا متشکرم

ghabil
یک شنبه 07 خرداد 1385, 21:31 عصر
بیشترین مشکلی که تو استفاده از Midas دیدم که این مشکل رو بوجود میاره ThreadSafe نبودن کدهایی که نوشته میشه . از همه بیشتر هم بحث دسترسی همزمان به یک Resource هست مثلا کافیه یک Thread یک فایل رو باز کرده باشه و یک فایل دیگه هم بخواد بهش Access بکنه ...
احتمال دیگه هم Memory Leak هست که متاسفانه خود Midas هم در این ضمینه باگ داره ولی بیشتر در DLLها .
به هر حال تجربه میگه راح حلت اینه که جاهای مختلف برنامت لاگ بزاری و بزاریش زیر بار ، ولی قبلش مطدن بشو که برنامت ThreadSafe نوشته شده باشه

soroush_vs
یک شنبه 07 خرداد 1385, 22:01 عصر
از جوابتون متشکرم!
من می خوام از مکانیسمی استفاده کنم که دیگه لازم نباشه درگیره Thread ها بشم..
آیا این مکانیسم برای Multi-tier وجود داره؟
مثلا اگر server را ازنوع SingleInstance بزاریم قانونا چون برای هر کلاینت یه سرور مجزا در کامپیوتر سرور اجرا میشه دیگه نباید مشکل Thread ها بوجود بیاد!
من در برنامه برای Thread ها هیچ اقدامی نکردم اما دنبال راهی هستم که با Thread ها درگیری مستقیم پیدا نکنم یعنی کار رو راحت کنه!
آیا این کار امکان داره؟

soroush_vs
دوشنبه 08 خرداد 1385, 17:00 عصر
این که کسی نمیتونه جواب بده چندان تعجب آور نیست
اگر در کل سایت درباره Multi-tier جستجو کنیم چند تا مورد جزیی هم پیدا نمی شه!
یه نفر نیست که بتونه به ما کمک کنه؟

ghabil
چهارشنبه 10 خرداد 1385, 22:23 عصر
اینقدر سخت نگیر جوون ...
من بیشتر زمان برنامه نویسیمو صرف دیباگ Midas کردم ، هیچ کی هم نبود کمکم کنه (دلم واسه خودم سوخت)
من بهت گفتم احتمالا مشکلت چیه ، ولی بجای اینکه بری بگردی میل زدی میگی ThreadSafe یعنی چی ، خب منکه نمبتونم بشینم برای تو مقاله بنویسم ThreadSafe چیه و راه های ThreadSafe کردن یک برنامه چیه ، من بهت سرنخ رو دادم دیگه ، حالا اگر رشتت نرم افزار برو کتاب سیستم عامل رو بخون اگر هم نیست یک سرچ ناقابل تو گوگل بزن ببین چقدر مطلب پیدا میکنی .... اونوقت اگه اومدی اینجا گفتی من رفتم سرچ کردم MSDN رو هم خوندم ولی هنوز تو ساختن Critical Section تو دلفی مشکل دارم (که خیلی بعیده مشکل پیدا کنی)،من خودم مخلصتم کد هم برات مینویسم...
اما اینی که میگی یک جوری بشه من اصلا ندونم Thread چیه باهاش سرو کار هم نداشته باشم ، ضمنا Application چند لایه هم میخوام بنویسم (وسطش هم یک طعنه بزنی : "که شماها تو این سایت بلد نیستین") میشه شتر سواری دولا دولا ...
یک سرچ بزن تو گوگل نتیجش رو هم اینجا واسه بقیه هم بزار، اینجوری بجای اینگه بگن چقدر پرتوقعی بهت میگن دمت گرم، هرجا هم سرچ کردی ولی به نتیجه نرسیدی من تا حدی که بلدم در خدمتم.

MNosouhi
یک شنبه 26 آذر 1385, 21:11 عصر
بیشتر زمان برنامه نویسیمو صرف دیباگ Midas کردم
آقای کوشا ، میشه تعدادی از این باگها رو نام ببرید. البته خودم یکیشو دیدم ، درمورد RefreshRecord . میخام بدونم غیر از این دیگه چی هست؟

ghabil
دوشنبه 27 آذر 1385, 14:08 عصر
سوال سختی میپرسی، چون داستان مال یکمی قدیماست ولی یک نگاه تو همون یونیت پروایدر که کردم اینا به چشمم اومد :
InternalRowRequest به اشتباه FDSWriter رو Reset میکنه
InternalGetRecords اصلا 0 بودن Count رو هندل نکرده و با اشتباه BufferSize رو هم صفر میکنه.
یک باگ تابلو توی GetUpdateSql که اگر ModifiedField نداشته باشیم اشتباها آخرین حرف کامند رو پاک میکنه.
بازم تغییرات زیاده اما نمیدونم کارای خودمون بوده یا باگ.
ولی کلا همه باگهاش هم اینقدری که این تابلو تابلو نیستند زیاد نگران نباش.

راستی تونستی ddl رو دیباگ کنی؟

MNosouhi
دوشنبه 27 آذر 1385, 14:42 عصر
ممنون
یعنی حالاحالا طول میکشه تا بتونم یه ببرنامه 3 لایه بدون اشکال بنویسم؟

راستی تونستی dll رو دیباگ کنی؟
جستجو کردم ، اما چیزی پیدا نکردم.

ghabil
دوشنبه 27 آذر 1385, 18:15 عصر
ممنون
یعنی حالاحالا طول میکشه تا بتونم یه ببرنامه 3 لایه بدون اشکال بنویسم؟


چرا بابا اینطوری ها هم نبست دیگه، میداس یکی از بزرگترین امتیازات دلفی نسبت به سایر IDE ها برای سالها بوده و نرم افزارهای بسیار بزرگی هم بر اساسش نوشته شده اند ولی همیشه جای تعجب داشته که چرا بورلند همیشه تو رفع باگهاش تنبلی میکرده.
ضمنا یک پیشنهادی اگر میخوای وقت بزاری و میداس یاد بگیری من بهت پیشنهاد میکنم یکمی بیشتر وقت بزاری ADO.Net یاد بگیری ، بنظر میاد یواش یواش میداس داره وارد مرحله انقراض میشه (در طی 2-3 سال آینده)



جستجو کردم ، اما چیزی پیدا نکردم.

برو توی Administrative Tools> Component Services >> my Computer >> Com+ Applciations آبجکت Com خودت رو که اینجا نصب هست رو پیدا کن ؛ حالا روش رایت کلیک کن و پراپرتیز بگیر اون پایین Application ID رو کپی کنی بعد هم روی آبجکتت رایت کلیک کن و ShutDownش کن.
حالا برو تو دلفی روی پروژه سرورت بعد منو Run>> RunParameters بعد Host Application رو بزار c:\WINDOWS\system32\dllhost.exe (بدیهی که ممکنه ویندوز کامپیوتر شما در جای دیگه ای نصب باشه) و اون پایین هم Parameters رو بزار هم Application ID که کپی کردی. یعد هم تایید کن برگرد تو پروژت و پروژت رو Runکن .
میبینی تو حالت اجرا شدن میره و همینطوری میمونه ، حالا اولین باری که یک کلاینت وصل بشه بهش سرورت هم Run میشه و اگر جایی Break Point گذاشته باشی وایمیسته.

من این Key Word ها رو هم میزارم اینجا دفعه بعد کسی خواست سرچ کنه راحتتر پیدا کنه:
Debug DLL MIDAS multitier multi-tier Breakpoint Server
دیباگ سرور چند لایه