PDA

View Full Version : آیا تعداد کنتریهای Ado با سرعت اجرای برنامه ارتباط داره؟



oghab
یک شنبه 20 آذر 1384, 20:33 عصر
آیا تعداد کنترلهای Ado با سرعت اجرای برنامه و همینطور سرعت هنگام استفاده از برنامه در شبکه ارتباط داره؟

به نام خدا
سلام
من یه برنامه نصفه کاره دارم که تاحالاش چیزی بیشتر از 20 تا adocommand و بیشتر از 40 تا adoQuery و بیشتر از 20 تا adotable دارم. و نا برنامه تموم بشه احتمالا یه 10-20 تا Adoquery و adotable دیگه بهش اضافه میشه!
من چون مثل شما اساتید دلفی کار نکردم و فقط کارهایی که تابحال باهش انجام دادم نه بیشتر! اینجور موقع ها نمی دونم چیکار باید بکنم!
من برای تمام این adocommand ها و adotable ها وadoquery ها برای اتصال به sql از connectionstring استفاده کردم! یعنی برای هر کدوم conctionstriong را جدا ساختم!
و حالا وقتی برنامه را اجرا می کنم. خیلی طول میکشه تا فرم اول بیاد!
حالا تو جستجویی که تو انجمن دلفی داشتم انجام میدادم به موردی بر خوردم که البته در رابطه با ado نبود ولی برداشت من این بود که connection های زیاد باعث کند شدن برنامه میشه! فکر کردم شاید باید یه adoconnection داشته باشم و ارتباطشو به sql درست کنم! و بعد بقیه adotable ها و adoquery ها و adocommand ها را از طریق اون به sql وصل کنم!
حالا درست فکر کردم یا نه؟ اگه باید این کارو بکنم تا قبل از این که تعداد کنترلهای ado بیشتر از این بشه! این کارو بکنم!
اگه مال این نیست، پس از چی ممکنه باشه که برنامه دیر اجرا میشه!
و از اون مطلبی که جستجو پیدا کردم، این برداشت هم کردم که اگه برنامه را تو شبکه استفاده کنیم ، این coonection های زیاد باعث کند شدن میشه! درسته؟
و یه سوال دیگه اینکه من database ام sql است و دلفی از طریق ado همونطور که گفتم به sql وصل شدم. ولی حالا برنامه داره روی یک کامپیوتر اجرا میشه! اگه یه زمانی بخواهم از برنامه ام توی شبکه (حالا نه بزرگ، مثلا یه شبکه 5 تا کامپیوتری استفاده کنم) و بعد sqlserver را روی کامپیوتر اصلی نصب بشه و برنامه ام را که با دلفی نوشتم روی بقیه کامپیوترها قرار بگیرة! می تونه از طریق شبکه به database روی sql کامپیوتر اصلی وصل بشه! یا connection هاش مشکل پیدا میکنه؟ در این مورد اینکه برنامه بعدا تو همچین شبکه استفاده بشه، چه چیزی باید در نظر یگیرم؟
لطف کنید راهنمایی کنید!
با آروزی موفقیت و سلامتی

vcldeveloper
دوشنبه 21 آذر 1384, 02:32 صبح
حالا تو جستجویی که تو انجمن دلفی داشتم انجام میدادم به موردی بر خوردم که البته در رابطه با ado نبود ولی برداشت من این بود که connection های زیاد باعث کند شدن برنامه میشه! فکر کردم شاید باید یه adoconnection داشته باشم و ارتباطشو به sql درست کنم! و بعد بقیه adotable ها و adoquery ها و adocommand ها را از طریق اون به sql وصل کنم!
حالا درست فکر کردم یا نه! اگه باید این کارو بکنم تا قبل از این که تعداد کنترلهای ado بیشتر از این بشه! این کارو بکنم!
درست فکر کردید، در همچین مواقعی باید از AdoConnection استفاده کنید.


ولی حالا برنامه داره روی یک کامپیوتر اجرا میشه! اگه یه زمانی بخواهم از برنامه ام توی شبکه (حالا نه بزرگ، مثلا یه شبکه 5 تا کامپیوتری استفاده کنم) و بعد sqlserver را روی کامپیوتر اصلی نصب بشه و برنامه ام را که با دلفی نوشتم روی بقیه کامپیوترها قرار بگیرة! می تونه از طریق شبکه به database روی sql کامپیوتر اصلی وصل بشه! یا connection هاش مشکل پیدا میکنه؟ در این مورد اینکه برنامه بعدا تو همچین شبکه استفاده بشه، چه چیزی باید در نظر یگیرم؟
ممکنه نام سرور در داخل شبکه با نام سرور در سیستم شما تفاوت داشته باشه، باید مکانیزمی در نظر بگیرید تا کاربر بتونه نام سرور را برای اتصال از طریق شبکه وارد کنه.

hr110
دوشنبه 21 آذر 1384, 06:54 صبح
در تکمیل فرمایشات استاد عزیز ، چند نکته را یادآور میشوم:
1- بهتر است از یک Data Module استفاده کنید، البته من گاهی در پروژههای بزرگ و پیچیده از روش ایجاد runtime استفاده میکنم که در هر زمان که نیاز بود یک dataset ایجاد کرده و در پایان تراکنش نیز تخریب میشود ...
2- به احتمال زیاد برخی از اجزاء نام برده شده تکراری بوده و میتوانید مثلاً از یک یا چند adoquery برای تمامی مصارف استفاده نمایید.
3- بهتر است یک متد برای ایجاد connection string (مثلاً getConnectionString) ایجاد نمایید.
4- حداکثر یک یا دو ADOConnection برای سراسر App شما کفایت میکند، دومی برای مواردی مورد استفاده قرار میگیرد که بخواهید از transactionها استفاده نمایید(تجربه نشان داده است که اینگونه مشکلات کمتری خواهید داشت)
5- جستجوی مختصری در سایت داشته باشید و از تجربیات و مقالات پربار سایت استفاده کنید.:لبخندساده

oghab
دوشنبه 21 آذر 1384, 19:13 عصر
با سلام
و ممنون از راهنماییهاتون و لطفتون

درست فکر کردید، در همچین مواقعی باید از AdoConnection استفاده کنید..
پس یعنی من یه adoconnection بذارم و بار ارتباط adotable و غیره از اون استفاده کنم؟



ممکنه نام سرور در داخل شبکه با نام سرور در سیستم شما تفاوت داشته باشه، باید مکانیزمی در نظر بگیرید تا کاربر بتونه نام سرور را برای اتصال از طریق شبکه وارد کنه.
میشه در این مورد یک کمی بیشتر توضیح بدید! چطور مکانیزمی باید در نظر بگیرم؟



1- بهتر است از یک Data Module استفاده کنید، البته من گاهی در پروژههای بزرگ و پیچیده از روش ایجاد runtime استفاده میکنم که در هر زمان که نیاز بود یک dataset ایجاد کرده و در پایان تراکنش نیز تخریب میشود ...
4- حداکثر یک یا دو ADOConnection برای سراسر App شما کفایت میکند، دومی برای مواردی مورد استفاده قرار میگیرد که بخواهید از transactionها استفاده نمایید(تجربه نشان داده است که اینگونه مشکلات کمتری خواهید داشت)

متاسفانه من چیزی از Data Module و transactionو datset نمی دونم! و البته انتظارم ندارم، حالا اینجا به من آموزش بدین.




2- به احتمال زیاد برخی از اجزاء نام برده شده تکراری بوده و میتوانید مثلاً از یک یا چند adoquery برای تمامی مصارف استفاده نمایید.

من سعی کردم در این مورد صرفه جویی کنم. ولی مطمئنم فرمایش شما درسته و بازم خیلی هاشون هستند که زیادیند و می شده از یک adoquery واسه چند منظور استفاده کرد. سعی می کنم از این به بعد این موضوع را بیشتر رعایت کنم!



3- بهتر است یک متد برای ایجاد connection string (مثلاً getConnectionString) ایجاد نمایید.

خیلی ببخشید! ولی میشه بگید چطوری؟



5- جستجوی مختصری در سایت داشته باشید و از تجربیات و مقالات پربار سایت استفاده کنید.:لبخندساده
حتما، به روی چشم. ولی میشه بگید، چی search کنم! آخه شما که قبلا این مقالات را خوندید، بهتر می دونید اگه چه اصطلاحاتی را جستجو کنیم، اونا را راحتر پیدا می کنیم!

ممنون از راهنماییهاتون و وقتی که صرف می کنید!
امیدوارم موفق و سلامت باشید!

oghab
سه شنبه 22 آذر 1384, 15:55 عصر
3- بهتر است یک متد برای ایجاد connection string (مثلاً getConnectionString) ایجاد نمایید.




ممکنه نام سرور در داخل شبکه با نام سرور در سیستم شما تفاوت داشته باشه، باید مکانیزمی در نظر بگیرید تا کاربر بتونه نام سرور را برای اتصال از طریق شبکه وارد کنه.

خواهش می کنم، راجع به این دو مورد یه مقدار توضیح بدید! لطفا!