View Full Version : پیغام Refresh به تمام کلاینتها
Developer Programmer
دوشنبه 06 آبان 1387, 11:19 صبح
یه بیمارستان و برنامه پذیرش بیمار رو تحت شکبه درنظر بگیرین
بیمار، پذیرش میشه میره داخل بیمارستان. حالا میتونه بره داروخونه ... میتونه بره پیش دکتر و ...
میخوایم بعد از پذیرش بیمار، به تمامی کلاینتها ( داروخانه و دکتر و...) Broadcast کنیم که همگی، بعد از اتمام عمل جاری، اطلاعات خود را Refresh کنین.
vcldeveloper
دوشنبه 06 آبان 1387, 11:54 صبح
سوال تکراری پرسیدی. بطور خلاصه:
1- میتونی در سمت سرور با Indy برنامه ایی بنویسی که نقش Message Server را داشته باشه، و کلاینت ها موقع اتصال به سرور، به نوعی در این برنامه هم ثبت نام کنند تا بعدا Message Server بتونه براشون پیام بفرسته.
2- میتونی از یک معماری 3-لایه با استفاده از DataSnap یا هر چیز دیگه ایی که دوست داشتی استفاده کنی، در این حالت همه اتصالات از مجرای Application Server عبور میکنه، و این Application Server میدونه چه کلاین هایی بهش کانکت شدند. در واقع روش اول هم به نوعی همین روش هست. البته در این حالت DataSnap فقط در شرایطی که از DCOM برای ارتباط استفاده کرده باشی، امکان فراخوانی یک متد کلاینت از سمت سرور را فراهم میکنه. برای سایر انواع کانکشن ها باید خودت یک راه حل مثل راه حل بالا (پیدا کنی)، یا از خیر DataSnap بگذری و بری سراغ روش های 3rd Party مثل RemObjects SDK.
3- از امکانات SQL Server 2005 (و نسخه های بالاتر: 2008) استفاده کنی:
3-1 : اگر فقط تغییر در داده های یک سری کوئری های خاص هست که باید به کلاینت اطلاع داده بشه، از Query Notification موجود در SQL Server میتونی استفاده کنی. البته در دلفی فقط کامپوننت های SDAC از آن پشتیبانی می کنند. در این حالت همه کارها بصورت خودکار انجام میشه؛ یعنی هر وقت رکوردی تغییر کنه، خود کلاینت بطور خودکار متوجه میشه و Dataset خودش را Refresh میکنه.
3-2: اگر پیام های رد و بدل شده بیش از مورد 3-1 هست، میتونی از Notification Service موجود در SQL Server استفاده کنی. یک سیستم پیام رسانی کامل هست که برای ارتباط بین کلاینت ها و سرور و بالعکس استفاده میشه. درباره جزئیاتش اطلاع خاصی ندارم، باید در بخش SQL Server بپرسی.
4- اگر دیتابیسی که استفاده میکنی از Dynamic Cursor پشتیبانی میکنه (خصوصیت CursorType) اون وقت همون حالت 3-1 بوجود میاد و با هر تغییر در سمت سرور، کلاینت ها Refresh میشند.
درباره هر کدوم از اینها یک یا چند تاپیک در سایت وجود داره.
موفق باشی
Developer Programmer
دوشنبه 06 آبان 1387, 12:38 عصر
4- اگر دیتابیسی که استفاده میکنی از Dynamic Cursor پشتیبانی میکنه (خصوصیت CursorType) اون وقت همون حالت 3-1 بوجود میاد و با هر تغییر در سمت سرور، کلاینت ها Refresh میشند.
علی جان، Cursor Location سرور باشه یا کلاینت، فرقی نمیکنه ؟
vcldeveloper
سه شنبه 07 آبان 1387, 01:50 صبح
Cursor Location سرور باشه یا کلاینت، فرقی نمیکنه ؟
CursorLocation باید سرور باشه، کلاینت فقط Static رو پشتیبانی میکنه.
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.