PDA

View Full Version : DataSetProvider



MNosouhi
پنج شنبه 02 آذر 1385, 18:59 عصر
آقا این DataSetProvider چیه و کجا کاربرد داره ؟ فرقی می کنه که اون رو با Ado استفاده کنی یا Bde ؟
جستجو کردم ، اما چیزی پیدا نکردم . برام خیلی عجیبه که تا حالا کسی در این مورد سوال نکرده.

ghabil
جمعه 03 آذر 1385, 00:51 صبح
پروایدر Midas هست، یعنی برای سرویس دادن به یک کلاینت که به یک Com سرور وصل میشه استفاده میشه . اصولا من هم کم دیدم اینجا در مورد Multitier بحث بشه.

vcldeveloper
جمعه 03 آذر 1385, 08:54 صبح
در برنامه های چند لایه ساخته شده بر اساس DataSnap (با نام قدیمی تر Midas) در دلفی، DataSetProvider در Application Server (لایه میانی) قرار می گیره و بعنوان پلی بین Client ها و Database Server عمل میکنه. با استفاده از این کامپوننت برنامه نویس می تونه درخواست های Client را قبل از ارسال به سرور بانک اطلاعاتی در مراحل مختلف پردازش کنه، یا بالعکس.
درباره DataSnap, DataSetProvider و ClientDataSet در راهنمای دلفی مفصلا توضیح داده شده.

MNosouhi
جمعه 03 آذر 1385, 09:18 صبح
یعنی من اگر بخام برنامه نویسی شبکه 2 لایه انجام بدم ، احتیاجی بهش ندارم ، درسته؟

vcldeveloper
جمعه 03 آذر 1385, 09:31 صبح
یعنی من اگر بخام برنامه نویسی شبکه 2 لایه انجام بدم ، احتیاجی بهش ندارم ، درسته؟
بستگی به نوع پروژه شما داره؛ اگر فکر می کنید بعدها ممکنه این پروژه به یک پروژه 3 لایه تغییر پیدا بکنه، می تونید الان از DataSetProvider و ClientDataSet در یک برنامه استفاده کنید، تا برای تغییر معماری برنامه به سه لایه فقط کدهای مربوط به DataSetProvider را به Application Server منتقل کنید.
بعضی مواقع هم مجبورید از DataSetProvider در برنامه های Client/Server استفاده کنید - مثل زمانی که با داده ها را بصورت unidirectional از بانک دریافت می کنید (مثلا هنگام کار با dbExpress).

MNosouhi
جمعه 03 آذر 1385, 10:01 صبح
بستگی به نوع پروژه شما داره؛ اگر فکر می کنید بعدها ممکنه این پروژه به یک پروژه 3 لایه تغییر پیدا بکنه،
راستش من نمی دونم چطوری میتونم یه برنامه 3 لایه بنویسم ، از جستجو در سایت هم به جایی نرسیدم ، مطالب کم و جسته و گریخته بود ، فقط گفته بودند که از چی باید استفاده بشه ، اما اینکه دقیقا چه کارهایی باید انجام بشه رو نگفته بودن ، میشه در مورد مزایای برنامه های 3 لایه نسبت به 2 لایه ، و همچنین چگونگی نوشتن برنامه های 3 لا یه توضیح بدبد.

mzjahromi
شنبه 04 آذر 1385, 08:18 صبح
برخی از ویژگیهای برنامه های 3 لایه نسبت به برنامه های کلاینت سرور معمولی(دو لایه) عبارتند از:
1-نرم افزار کلاینت خلاصه تر و تنظیمات آن ساده تر است
2-مدیریت خطا ها و تصمیم گیری هنگام بروز خطا ساده تر است
3-عدم نیاز به باز نگهداشتن اتصالات(connections)
4-امکان انجام کار در صورت بروز مشکل برای سرور(در صورتیکه سرور بانک اطلاعاتی یا .. با مشکلی مواجه شود کلاینت میتواند عملیات خود را بر روی کپی اطلاعات انجام دهد)
5- کنترل لود سرور توسط نرم افزار سرویس دهنده با ارجاء کلاینتها به سرور با لود پائین تر

MNosouhi
شنبه 04 آذر 1385, 09:54 صبح
آقای کشاورز میشه در مورد این بیشتر توضیح بدید:

با استفاده از این کامپوننت برنامه نویس می تونه درخواست های Client را قبل از ارسال به سرور بانک اطلاعاتی در مراحل مختلف پردازش کنه،
آقای ذوالقدر من این رو نفهمیدم یعنی چی؟

5- کنترل لود سرور توسط نرم افزار سرویس دهنده با ارجاء کلاینتها به سرور با لود پائین تر

mzjahromi
شنبه 04 آذر 1385, 10:01 صبح
برای کنترل لود سرور دو راه وجود دارد
1- روش ایستا: که در این روش شما باید یک سرور دیگر را در نظر گرفته و تعدادی از کلاینتها را به آن ارجاء دهید و تعدادی هم به سرور جاری و در صورتیکه کلاینتهای سرور دوم هیچکدام فعال نباشند کل بار به سرور اول تحمیل میشود
2- روش پویا: که با استفاده از این روش میتوانید به کلاینتها بگوئید که به کدام سرور متصل شوند . در برنامه های سه لایه نرم افزار سرویس دهنده می تواند این کار را برای شما انجام دهد

MNosouhi
شنبه 04 آذر 1385, 11:25 صبح
1- روش ایستا: که در این روش شما باید یک سرور دیگر را در نظر گرفته و تعدادی از کلاینتها را به آن ارجاء دهید و تعدادی هم به سرور جاری و در صورتیکه کلاینتهای سرور دوم هیچکدام فعال نباشند کل بار به سرور اول تحمیل میشود
مگه یه برنامه چند تا سرور میتونه داشته باشه . تا حالا فکر میکردم یک سرور داریم و چند تا کلاینت . اما اینطور که معلومه ، میشه چند تا سرور داشت و چند تا هم کلاینت؟ درسته؟در اینصورت سرورها چطوری با هم ست میشن؟(اینطوری برنامه باید 4لایه بشه؟درست گفتم؟)

vcldeveloper
یک شنبه 05 آذر 1385, 01:16 صبح
وقتی از ترکیب DataSetProvider و ClientDataSet استفاده می کنید، DataSetProvider داده ها را بین ClientDataSet و Database Server رد و بدل میکنه؛ پس هر تغییری که کاربر در سمت کلاینت روی داده ها اعمال بکنه، قبل از رسیدن به بانک اطلاعاتی از DataSetProvider عبور میکنه. DataSetProvider رویدادهای مختلفی به شما ارائه میده که می تونید از اونها برای چک کردن داده ها یا تغییر در داده ها قبل از ارسال به بانک اطلاعاتی استفاده کنید.
یکی از مزایای معماری 3-لایه هم همینه که شما بتونید یک کنترل مرکزی بر روی جریان داده ها داشته باشید و در یک مرکز واحد برای ورود/خروج داده ها قوانیی وضع کنید. به این ترتیب اگه روزی قوانین سازمان یا شرکت مربوطه تغییر کرد، میشه با تغییر کد لایه میانی تغییر مربوطه را بر روی تمامی کلاینت ها اعمال کرد.
در این مدل کلاینت برای نمایش داده ها، گرفتن دستورات کاربر و احیانا گزارش سازی (بستگی به نوع پروژه داره) استفاده میشه و بخش عمده پردازش ها بصورت متمرکز در لایه میانی صورت میگیره. لایه میانی می تونه روی همون سیستمی نصب بشه که سرور بانک اطلاعاتی هم نصبه، یا اینکه میشه هر لایه را بر روی سیستم های جداگانه نصب کرد تا فشار کمتری به سرور ها بیاد. از طرفی چون کلاینت ها فقط لایه میانی را میشناسند و مستقیما با سرورهای بانک اطلاعاتی ارتباط ندارند، لایه میانی می تونه داده های مورد نیاز کلاینت ها را از چندین سرور بانک اطلاعاتی یا از برنامه های دیگه دریافت کنه و اونها را در اختیار کلاینت قرار بده. در اون صورت معماری برنامه به n-لایه تغییر میکنه.
دسترسی غیر مستقیم به داده ها موجب افزایش ضریب امنیت هم میشه.

MNosouhi
یک شنبه 05 آذر 1385, 06:34 صبح
مثل همیشه ، دقیق و کامل ، می دونم باید از گزینه تشکر استفاده کنم ، اما حیفم اومد به اون اکتفا کنم . زحمات شما آقای کشاورز واقعا قابل تقدیره .

mzjahromi
یک شنبه 05 آذر 1385, 07:53 صبح
مگه یه برنامه چند تا سرور میتونه داشته باشه . تا حالا فکر میکردم یک سرور داریم و چند تا کلاینت . اما اینطور که معلومه ، میشه چند تا سرور داشت و چند تا هم کلاینت؟ درسته؟در اینصورت سرورها چطوری با هم ست میشن؟(اینطوری برنامه باید 4لایه بشه؟درست گفتم؟)
البته آقای کشاورز جواب سوالتون رو دادن ولی
بسته به نوع طراحی و کاری که میخوای انجام بدی ممکنه چند تا AppServer یا در سیستمهای توزیع شده چند تا DBMS داشته باشی. ارتباط بین سرور ها هم اگر نیازی باشه خودش نیاز به بررسی داره. ولی در همه موارد نیاز نیست AppServer ها با هم رابطه داشته باشند



اینهم یه شکل که میتونه موقعیتهای ClientDataSet و DataSetProvider رو مشخص کنه


http://info.borland.com/midas/papers/technical/Image53.gif