View Full Version : حرفه ای: بهترین روش ارتباط کلاینت و سرور از طریق dialup
Site Admin
دوشنبه 18 مهر 1390, 17:48 عصر
با عرض سلام خدمت تمامی دوستان برنامه نویس
اینجانبم برنامه ای قصد دارم برنامه ای با امکانات زیر طراحی کنم
زبان برنامه نویسی دلفی 7
دیتابیس sql هر ورژنی که شما بگین
نوع برنامه کلاینت سرور حدود 50 کلاینت از نقاط دور شهر از طریق دیالاپ (شاید در آینده اینترنت پرسرعت شود) ولی در حال حاضر با استفاده از تلفن و ساخت کانکشن دیال آپ اینکار صورت می پذیرد
برنامه به این صورت است که اطلاعات در کلاینت ثبت شده و با فشردن دکمه ارسال اطلاعاته بانک sql کلاینت به بانک سرور منتقل میشود
موارد مهم اینکه در مورد سرعت بسیار پایین دیالاپ جهت انتقال اطلاعات چه باید کرد
مورد دیگر عدم تصادف دیتا(همزمان ارسال نمودن اطلاعات توسط چند کلاینت ) را چگونه میشود کنترل کرد
از دوستان گرامی خواهشمندم نظرات خود را مطرح کنید.
firststep
سه شنبه 19 مهر 1390, 16:01 عصر
مورد دیگر عدم تصادف دیتا(همزمان ارسال نمودن اطلاعات توسط چند کلاینت ) را چگونه میشود کنترل کرد
سلام
فکر می کنم اصول بر روی اینه که برای هر کلاینت یک ترد(thread) باز می کنیم
توی indy که اینکار می کدیم
vcldeveloper
سه شنبه 19 مهر 1390, 18:20 عصر
نوع برنامه کلاینت سرور حدود 50 کلاینت از نقاط دور شهر از طریق دیالاپ (شاید در آینده اینترنت پرسرعت شود) ولی در حال حاضر با استفاده از تلفن و ساخت کانکشن دیال آپ اینکار صورت می پذیرد
برنامه به این صورت است که اطلاعات در کلاینت ثبت شده و با فشردن دکمه ارسال اطلاعاته بانک sql کلاینت به بانک سرور منتقل میشود
موارد مهم اینکه در مورد سرعت بسیار پایین دیالاپ جهت انتقال اطلاعات چه باید کرد
باید حجم داده های رد و بدل شده و تعداد دفعات رجوع به سرور را کاهش بدید؛ یعنی اولا کلاینت ها فقط داده های مورد نیاز خودشون برای هر کار را از سرور دریافت کنند، و داده های غیر ضروری به کلاینت ها ارسال نشه (مثلا اگر یک رکوردی حاوی عکس هست، ولی کلاینت فعلا به عکس نیازی نداره، در کوئری مربوطه فیلد عکس قید نشه، و فقط اگر کلاینت نیاز به عکس داشت، اون فیلد براش ارسال بشه)؛ ثانیا، هر کلاینت بخشی از داده ها رو که از سرور گرفت، با همون داده ها کار کنه، حتی اگر ارتباطش با سرور قطع شد، و فقط در زمان ارسال درخواست جدید به سرور یا ثبت تغییرات در سرور وضعیت اتصال را بررسی کنه، و در صورت برقرار بودن اتصال، تغییرات را ارسال کنه؛ و ثالثا اینکه، کلاینت ها فقط تغییرات را به سرور ارسال کنند (ارسال delta)، نه کل داده مربوطه (مثلا در صورت تغییر یک رکورد در یک کلاینت، اون کلاینت فقط شناسه رکورد و مقدار فیلد تغییر یافته را به سرور ارسال کنه، نه کل داده های اون رکورد را).
بخشی از کارهای بالا به طراحی درست بانک اطلاعاتی و کوئری های شما برمیگرده؛ بخش دیگه اش به طراحی برنامه خودتون و ابزارهای مورد استفاده شما. می تونید برنامه تون رو به صورت 3-لایه طراحی کنید تا کنترل بیشتری روی ارسال و دریافت داده بین کلاینت ها و سرور داشته باشید، و همچنین بتونید تغییرات را به صورت delta به سرور ارسال کنید. برای همچین کاری در دلفی می تونید هم از DataSnap دلفی + ClientDataset استفاده کنید، و هم از RemObjects DataAbstract یا کتابخانه های مشابه.
مورد دیگر عدم تصادف دیتا(همزمان ارسال نمودن اطلاعات توسط چند کلاینت ) را چگونه میشود کنترل کرد
دیتابیس های مختلف و ابزارهای مختلف ارتباط با بانک های اطلاعاتی مکانیزم های متنوعی برای lock کردن رکورد های در حین ویرایش و یا رفع تصادم های احتمالی به شما ارائه می کنند؛ از ADO گرفته که به شما امکان قفل کردن رکورد در حال ویرایش رو میده، تا DataSnap و DataAbstract که به شما امکان تعریف پیام و فرم مناسب در صورت ایجاد تصادم رو میدن، تا کاربر تصمیم بگیره که آیا تغییراتش را ثبت کنه، یا تغییراتش را لغو کنه.
فکر می کنم اصول بر روی اینه که برای هر کلاینت یک ترد(thread) باز می کنیم
توی indy که اینکار می کدیم
ارتباطی مستقیمی به بحث نداره.
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.