PDA

View Full Version : راهنمایی در مورد اتصال به بانک با ADO و جلو گیری از قفل کردن سرور



saied7468
پنج شنبه 01 اسفند 1387, 00:23 صبح
با سلام

من تا الان برنامه تحت شبکه ننوشتم و فقط برنامه هام تک کاربره بوده الان یکی از مشتری ها امده و می خوات برنامه رو تحت شبکه کنم که 100 تا کاربر بتونن باهاش کار کنم . مشخصات برنامه و بانک و ابزاری که برای اتصال به بانک استفاده کردم :
محیط برنامه نویسی : delphi 7
بانک : sql 2000
ابزاری که برای اتصال به بانک استفاده کردم : DataSource و ADOTable

من جستجو کردم اما چیزی راجب به اتصال برنامه های کلایت به بانکی که روی سرور هست با ADOTable پیدا نکردم .
اما مطالبی بود در مورد Indy :
http://barnamenevis.org/forum/showthread.php?t=52037
و
یه مختصر در مورد SocketConnection :
http://www.barnamenevis.org/forum/showthread.php?t=59232
و
یه مختصری هم در مورد BDE :
http://barnamenevis.org/forum/showthread.php?t=7933&page=9

چهار تا سوال اگه دوستان لطف کنن و جواب بدن ممنون می شم :
1- من چطوری می تونم کلاینت ها رو با ADOTable به بانکی که روی سرور هست متصل کنم ؟ (لطفا توضیح مختصر ندید من مبتدی هستم)

2-تا اونجایی که فهمیدم هر کلاینت که به سرور وصل می شه یه Thread روی سرور می سازه اگه مثلا هم زمان 100 تا کلاینت به سرور وصل بشه با تو جه به اینکه 2 برنامه دیگه هم دارن روی سرور کار می کنن قانونا قفل می کنه آیا فقط تنها راه جلو گیری اینه که نزارم مثلا بیشتر از 30 کلاینت هم زمان به سرور وصل بشن؟

3- از چه پورتی باید برای اتصال کلاینت به سرور و سرور به کلاینت استفاده کنم؟(شبکه LAN هست . 2 تا برنامه دیگه هم دارن از شبکه استفاده می کنن و من نمی دونم از چه پورتی دارن استفاده می کنن)
4- ADOTable باعث نمی شه بار شبکه سنگین شه تا اونجایی که تونستم فقط موقع انجام عملیات ADOTable رو فعال و بعد از عملیات ADOTable رو غیر فعال کردم ؟

بازم تشکر می کنم از دوستانی که وقت می زارن و جواب منو می دن.

saied7468
پنج شنبه 01 اسفند 1387, 20:09 عصر
اساتیدی که با شبکه کار کردن لطفا راهنمایی کنن .

accpascal
جمعه 02 اسفند 1387, 00:51 صبح
برای اتصال به شبکه هیچوقت مستقیم از تیبل استفاده نکنید
اگر از ado استفاده می کنید با یک adoconnection به شبکه وصل شوید سپس خاصیت connection تیبلها و یا کوئری هارا معادل adoconnection قرار دهید
در مورد سوال هایتان
2 - تعداد کلاینت ها خیلی محدودیت ندارند که باعث قفل برنامه بشوند نوع برنامه نویسی مهم است
3 - بانک اطلاعاتی sqlserver از پورت 1400 استفاده می کند
4 - تعدادadotable ها هم بسته به نیاز برنامه لازم است و نوع استفاده آنها است که باعث کندی برنامه می شود

saied7468
جمعه 02 اسفند 1387, 11:00 صبح
ممنون از توضیحاتی که دادید.
من توی تاپیک زیر خوندم که چطوری کلاینت به سرور وصل می شه و از بانک استفاده می کنه . امتحان کردم و جواب داد توی این تا پیک گفته که برای اتصال به بانک از طرف کلاینت باید از SocketConnection و ClientDataSet و DataSource استفاده کنی و برای اتصال سرور به بانک هم از ADOConnection و ADOTable باید استفاده کنی. مشکل اینه که من تمام کد نویسی های برنامم رو بر اساس ADOTable انجام دادم آیا راهی هست که درطرف کلاینت هم بتونم ADOTable رو به بانک وصل کنم و کارای ثبت و ویرایش و جستجو و ... رو با ADOTable انجام بدم؟

لینک تاپیک :
http://barnamenevis.org/forum/showthread.php?t=132911&highlight=ado&page=6

daffy_duck376
چهارشنبه 07 اسفند 1387, 16:12 عصر
دوست من تو همه جای سایت گفته واسه ارتباط با سرور کافی است IP سرور را به جای نام سرور بزنی !
اما من فقط یک بار تونستم جواب بگیرم یا سرور رو پیدا نمی کنه و یا دسترسی نداره (Acess deny ) می ده . شبکه هم هیچ مشکلی نداره . سرور راحت PING میشه !

babak_delphi
چهارشنبه 07 اسفند 1387, 19:30 عصر
تا جایی که میدونم :

موقع استفاده از ADOTable ، رکوردها روی Client لود میشوند و در Client فیلتر میشوند (روش Direct Table) ولی موقع استفاده از ADOQuery عمل فیلتر کردن (با دستور Select) توسط DBMS و روی سرور انجام میشود و نتیجهء فیلتر که یک مجموعه رکورد (RecordSet) است به کلاینت منتقل میشود
با این حساب میبینید که استفاده از روش Direct Table (استفاده از ADOQuery) سربار زیادی روی شبکه ایجاد میکند
پس بهتر است در برنامه های تحت شبکه به جای ADOTable از ADOQuery استفاده شود.

saied7468
یک شنبه 11 اسفند 1387, 00:33 صبح
babak_delphi ممنون از راهنمایی تون من ابزاری که به بانک وصل می شه رو عوض کردم :
ابزاری که برای اتصال به بانک استفاده کردم : DataSource و Ado query و ADOConnection

الان می تونم از طریق اینترنت با سرور ارتباط برقرار کنم ولی بعضی وقتا همون مشکلی که جناب daffy_duck376 گفتن برام پیش می یاد از دوستان کسی راحلی برای این مشکل داره؟


یا سرور رو پیدا نمی کنه و یا دسترسی نداره (Acess deny ) می ده . شبکه هم هیچ مشکلی نداره . سرور راحت PING میشه !