-
چه مواردی را در سمت سرور برنامه باید پیاده سازی کرد؟
با سلام
دوستان می خواستم از تجربه های کاریتون در مورد نوشتن یک سرو DataSnap صحبت کنید و اینکه چه مواردی را برای اینکه سروی چابک تر داشته باشیم باید رعایت و یا پیاده سازی کنیم
البته جزئیات بیشتر به نوع پروژه برمیگرده ولی کلیات رو میشه فعلا بررسی کرد.
و اینکه چه مواردی رو در سمت سرور پیاده سازی کرد؟
مثلا در یک سروری که برای سیستم حسابداری نوشته شده است بهتر محاسبات مانده حساب مثلا در ClientDataset ریخته بشه و در سرور محاسبات مانده گیری روش انجام بشه و یا در کلاینت؟
یا اینکه آیا سرور باید آمار اتصال کلاینت ها و قطع شدنشون رو داشته باشه؟
تشکر
-
نقل قول: چه مواردی را در سمت سرور برنامه باید پیاده سازی کرد؟
نقل قول:
دوستان می خواستم از تجربه های کاریتون در مورد نوشتن یک سرو DataSnap صحبت کنید و اینکه چه مواردی را برای اینکه سروی چابک تر داشته باشیم باید رعایت و یا پیاده سازی کنیم
البته جزئیات بیشتر به نوع پروژه برمیگرده ولی کلیات رو میشه فعلا بررسی کرد.
سلام. حرف که زیاده. اما بر اساس تجربه شخصیم استفاده از TCP خیلی بهتر و سریعتر هست نصبت به HTTP.
سعی کنید ارتباطات رو حفظ کنید. وصل و قطع شدن کلاینت به سرور بار زیادی در تعداد یوزر بالا برای سرور داره.
سعی کنید با دید مالتی ترد و مالتی تایر طراحی رو شروع کنید. البته دیتا اسنپ خیلی از موارد رو به خودی خود پشتیبانی میکنه. اما جایزه خودتون با دقت این عملیات رو بررسی کنید.
نقل قول:
مثلا در یک سروری که برای سیستم حسابداری نوشته شده است بهتر محاسبات مانده حساب مثلا در ClientDataset ریخته بشه و در سرور محاسبات مانده گیری روش انجام بشه و یا در کلاینت؟
مطمئنن باید سمت سرور عملیات پردازشی انجام بشود. باید سعی بشه عملیات گرافیکی و UI سمت کاربر و محاسبات سمت سرور انجام بشود. دقت کنید با استفاده از متد کشینک از تکرار پردازشها جلوگیری کنید.
نقل قول:
ا اینکه آیا سرور باید آمار اتصال کلاینت ها و قطع شدنشون رو داشته باشه؟
یک برنامه قوی باید تمام مراحل اتصال، اینسرت ، ویرایش و .. رو با دقت لاگ گیری بکنه. اتصال و قطع ارتباط که موضوع لازم و پیش پا افتاده ای هست.
البته موارد اموزشی و تجربه زیاده ، اما با درگیر شدن خودتون با این منوال خیلی از مشکلات به خودیه خود تجربه جالبی براتون میشود.
موفق باشید.
-
نقل قول: چه مواردی را در سمت سرور برنامه باید پیاده سازی کرد؟
متشکرم بابت نظر ها و راهنمایی هاتون جناب MASK ، دوستان دیگر هم اگه تجربه مشابه دارند لطفا مطرح کنند
-
نقل قول: چه مواردی را در سمت سرور برنامه باید پیاده سازی کرد؟
باسلام خدمت شما دوستان عزیز
من خودم با اینکه سن و سال زیادی ندارم نظر قطعی نمی دم ولی تاجایی که خودم کارکردم میگویم.:لبخند::چشمک:
من از TCP و FTP به شدت کار کرده ام چه درزمینه کامپیوتر و چه در زمینه اندروید(PC-PC) هم (Android-PC) هم (Android-Android) یکمی هم با HTTP کارکردم
ولی نظر شخصی من با TCP هست چون سرعت بالاتری داره و هم میتونی چک کنی اگر اتصال قطع شده اطلاعات رو در cache ذخیره کن و وقتی ارتباط برقرار شد ارسال کن،و این یعنی نظارت کامل روی datasnap.
شما باید توی گود این تبادل اطلاعات از طریق دلفی بیوفتی تا بفهمی کدوم راه مناسب ترینه.:متفکر:
ولی خودم یه سوال داشتم از کسانی که در datasnap قوی هستند: وقتی از طریق datasnap میخوام از بانک اطلاعاتی استفاده کنم (از بانکی که رو کامپیوتر اجراست و از اندروید میخوام دریافت کنم)از هر دوطرف ping میگیرم ارتباط برقرار هست ولی داخل برنامه تبادل انجام نمیشه:متعجب:.اما وقتی انتی ویروس کامپیوتر رو خاموش میکنم سریع اطلاعات تبادل میشه.چرا اینطور هست؟
یعنی اگر انتی ویروس وصل باشه تبادل انجام نمیشه؟چه 2 کامپیوتر باهم و چه اندروید به کامپیوتر اینطوریه؟
اگر اینطوری باشه که خیلی بد میشه که!!!؟؟:اشتباه:(چون دائم باید انتی ویروس رو خاموش کنی:عصبانی:)
-
1 ضمیمه
نقل قول: چه مواردی را در سمت سرور برنامه باید پیاده سازی کرد؟
نقل قول:
نوشته شده توسط
ابوالفضل عباسی
باسلام خدمت شما دوستان عزیز
من خودم با اینکه سن و سال زیادی ندارم نظر قطعی نمی دم ولی تاجایی که خودم کارکردم میگویم.:لبخند::چشمک:
من از TCP و FTP به شدت کار کرده ام چه درزمینه کامپیوتر و چه در زمینه اندروید(PC-PC) هم (Android-PC) هم (Android-Android) یکمی هم با HTTP کارکردم
ولی نظر شخصی من با TCP هست چون سرعت بالاتری داره و هم میتونی چک کنی اگر اتصال قطع شده اطلاعات رو در cache ذخیره کن و وقتی ارتباط برقرار شد ارسال کن،و این یعنی نظارت کامل روی datasnap.
شما باید توی گود این تبادل اطلاعات از طریق دلفی بیوفتی تا بفهمی کدوم راه مناسب ترینه.:متفکر:
ولی خودم یه سوال داشتم از کسانی که در datasnap قوی هستند: وقتی از طریق datasnap میخوام از بانک اطلاعاتی استفاده کنم (از بانکی که رو کامپیوتر اجراست و از اندروید میخوام دریافت کنم)از هر دوطرف ping میگیرم ارتباط برقرار هست ولی داخل برنامه تبادل انجام نمیشه:متعجب:.اما وقتی انتی ویروس کامپیوتر رو خاموش میکنم سریع اطلاعات تبادل میشه.چرا اینطور هست؟
یعنی اگر انتی ویروس وصل باشه تبادل انجام نمیشه؟چه 2 کامپیوتر باهم و چه اندروید به کامپیوتر اینطوریه؟
اگر اینطوری باشه که خیلی بد میشه که!!!؟؟:اشتباه:(چون دائم باید انتی ویروس رو خاموش کنی:عصبانی:)
با سلام
متشکرم که نظر دادین
این مورد ماله Firewall هست که آنتی ویروس فعال میکنه و پورت های سیستم شما رو می بنده
باید شماره پورت DataSnap رو در قسمتی که در تصویر زیر هست باز کنید.
ضمیمه 136846
-
نقل قول: چه مواردی را در سمت سرور برنامه باید پیاده سازی کرد؟
دستت دردنکنه کارم رو راحت تر کردی.:تشویق:
ولی یه سوال نمیشه یه پورتی رو انتخاب کرد که نیاز نباشه پورت های بسته شده رو بازکنی؟در datasnap
چون من اینطوری برای هر کلاینت باید پورت بازکنم و این خطرناکه چون ممکنه از اون پورت سیستم ها هک بشه.
-
نقل قول: چه مواردی را در سمت سرور برنامه باید پیاده سازی کرد؟
فقط پورت دیتا اسنپ رو باز کنید. نه همه پورتها رو
-
نقل قول: چه مواردی را در سمت سرور برنامه باید پیاده سازی کرد؟
ببخشید این سوال رو میپرسم:
توی این لیست پورت ها کدومش برای دیتا اسنپه هست که بازش کنم؟:متعجب:
-
نقل قول: چه مواردی را در سمت سرور برنامه باید پیاده سازی کرد؟
بوسیله برنامه های جانبی مثل ProcessHacker و ... میتونید ببینید چه برنامه ای چه پورتی رو اشغال کرده.
-
نقل قول: چه مواردی را در سمت سرور برنامه باید پیاده سازی کرد؟
سلام پورت datasnap رو خودت تعريف ميكني،هموم رو توي سرور و كلاينت باز كن
پيش فرضش ٢١١ و ٨٠٨٠ براي tcp و http
-
نقل قول: چه مواردی را در سمت سرور برنامه باید پیاده سازی کرد؟
خیلی ممنون با همون برنامه Process Hacker پورت datasnap رو پیدا کردم و بازش کردم.
برنامه خوبیه Process Hacker راحت پورت هایی که برنامه ها استفاده میکنند رو میتونی پیدا کنی و ببندی و یا باز کنی
-
نقل قول: چه مواردی را در سمت سرور برنامه باید پیاده سازی کرد؟
نقل قول:
ولی نظر شخصی من با TCP هست چون سرعت بالاتری داره و هم میتونی چک کنی اگر اتصال قطع شده اطلاعات رو در cache ذخیره کن و وقتی ارتباط برقرار شد ارسال کن،و این یعنی نظارت کامل روی datasnap.
میشه در مورد cache بیشتر توضیح بدید. آیا در مورد این موضوع کد یا برنامه ای دارید که بتوان استفاده کرد؟
یک سوال دیگه :
اگر من جدول را مستقیما وارد قسمت سرور بکنم و بعد روی اونها عملیات انجام بدم بهتره یا اینکه متدهای دسترسی را سمت سرور فقط بنویسم و خروجی جداول را به کلاینت ارسال کنم ؟
-
نقل قول: چه مواردی را در سمت سرور برنامه باید پیاده سازی کرد؟
با سلام جدول رو روی سرور تنظیم کنید و از طریق کلاینت به اون رکورد جدید اضافه کنید،اینطوری فقط یک رکورد میفرستید و پهنای باند و ترافیک ایجاد نمیشه.
ولی اگر جدول در کلاینت باشه ،باید کل بانک رو انتقال بدی که ممکنه توی انتقال یک بیت جابه جا و یا گم بشه و بانک ناقص فرستاده بشه.
درمورد cache هم نمونه کد که بتونم بذارم ندارم(شاید توی اینترنت باشه)ولی در tcp مثل دانلود منیجر یک فایل روی سیستم ایجاد میشه و شروع دریافت میکنه و یک زمان که اتصال قطع میشه،cache هست و درصورد برقراری ارتباط فایل از ادامه شروع به دریافت میشه.
-
نقل قول: چه مواردی را در سمت سرور برنامه باید پیاده سازی کرد؟
اگر جدول را مستقیما در سرور وارد کنم و بعد اون جدول را به clientdataset در کلاینت وارد کنم چطوره؟
جدول را که مستقیما در سرور وارد می کنم یعنی عملیاتهایی مانند فیلتر و ... را هم روی همون جدول پیاده سازی کنم و دیگه نیازی به نوشتن sp و function نیست ؟( منظورم اینه که مثل قبل که sp را روی sql server می نوشتیم و پارامتر را از کلاینت ارسال می کردیم)
-
نقل قول: چه مواردی را در سمت سرور برنامه باید پیاده سازی کرد؟
جدول رو مستقیما در سرور وارد کنید و در کلاینت از clientdataset استفاده کنید برای نمایش و اصلاحات و اضافه کردن رکورد.
فیلتر روی clientdataset انجام میشه و اگر میخواهید که روی جدول اصلی در سرور فیلتر انجام بشه نیاز به function و پروسیجر هایی هست که مستقیما روی جدول اصلی ایجاد بشه.
برای ارتباط هم sqlconnection میشه استفاده کرد.
نمونه datasnap توی Sample های دلفی هست که میتونید الگو بگیرید.
-
نقل قول: چه مواردی را در سمت سرور برنامه باید پیاده سازی کرد؟
جدول اصلی منظورتون جدولی هست که روی سرور وارد کردیم یا جدول موجود روی sql server.
اگر بخواهیم روی clientdataset این عملیات انجام بشه یک بحثی به وجود می اید و اون اینکه اگر هم زمان چند تا کاربر بخواهند روی این اطلاعات کار کنند :
1- چه طوری بقیه کاربرها از این تغییرات در لحظه مطلع بشوند؟
2- چگونه جلوی درج اطلاعات تکراری در ارسال های هم زمان کاربرها گرفته شود ؟
-
نقل قول: چه مواردی را در سمت سرور برنامه باید پیاده سازی کرد؟
همون جدولی که روی سرور هست رو میگوییم جدول اصلی یا main table
که اگر بانکتون sql هست، جدول اصلی جدول sql میشود.(درصورتی که در برنامه روی سرور قرار نیست عملیات های دیگری انجام بشود،اگر قرار عملیات های دیگری انجام شود،جدول اصلی،جدول سرور است که به بانک sql متصل است.)
به نظرم شما در برنامه روی سرور به بانک sql اتصال داشته باش و با datasnap به جدول برنامه داخل سرور متصل شوید.این طوری sql server بین کلاینت ها درگیر نمیشود و فقط با برنامه اصلی متصل و درگیر است.
-
نقل قول: چه مواردی را در سمت سرور برنامه باید پیاده سازی کرد؟
اگر بخواهیم روی clientdataset این عملیات انجام بشه یک بحثی به وجود می اید و اون اینکه اگر هم زمان چند تا کاربر بخواهند روی این اطلاعات کار کنند :
1- چه طوری بقیه کاربرها از این تغییرات در لحظه مطلع بشوند؟
2- چگونه جلوی درج اطلاعات تکراری در ارسال های هم زمان کاربرها گرفته شود ؟
-
نقل قول: چه مواردی را در سمت سرور برنامه باید پیاده سازی کرد؟
باید روی کلاینت ها یک function نوشته شود که جدول اصلی سرور یا Sql server رو رفرش کند و قبل از ثبت اطلاعات و فرستادن به جدول اصلی چک بشه که این اطلاعات تکراری هست یا نه.
مثالی که خود دلفی برای datasnap دارد به همه ی این ها توجه کرده است،اعم از رفرش بانک اطلاعاتی.
این function رو یک تایمر داخل کلاینت باید بر عهده بگیرد که هر چند ثانیه و یا هر چند دقیقه بانک اطلاعاتی رو رفرش کند.
یا میتوان بجای function داخل کلاینت روی سرور،داخل برنامه اصلی این کار رو به عهده یک تایمر گذاشت که بانک اطلاعاتی رو رفرش کند.(این طوری بهتر هست)
من خودم برای پروژه های datasnap یا از access استفاده میکنم یا sql server و در مواقعی که از sql server استفاده میکنم.فقط سرور رو به sql متصل میکنم،و رفرش بانک رو هر 30 ثانیه انجام میدهم.(تنها مشکل این روش،اینکه سرور درگیر تایمر و حلقه های پشت سرهم زمانی که حجم اطلاعات و رکورد ها زیاد هست میشه که،اون هم با خاموش و روشن کردن تایمر جلوی اون رو گرفتم و هیچ وقت دوبار تایمر روی هم اجرا نمی شوند که رَم رو درگیر بکنند.)
-
نقل قول: چه مواردی را در سمت سرور برنامه باید پیاده سازی کرد؟
آیا امکان استفاده از firedac هم به جای sqlconnection وجود داره؟
-
نقل قول: چه مواردی را در سمت سرور برنامه باید پیاده سازی کرد؟
من خودم برای بانکی که با استفاده از firedac در سرور موجود است رو با Sqlconnection از طریق کلاینت ها به سرور ارتباط میدهم.
و با fdmemtable بانک رو از طریق datasnap به کلاینت ها انتقال میدهم.
fdconnection این قابلیت sqlconnection رو ندارد
-
نقل قول: چه مواردی را در سمت سرور برنامه باید پیاده سازی کرد؟
نقل قول:
نوشته شده توسط
ابوالفضل عباسی
من خودم برای بانکی که با استفاده از firedac در سرور موجود است رو با Sqlconnection از طریق کلاینت ها به سرور ارتباط میدهم.
و با fdmemtable بانک رو از طریق datasnap به کلاینت ها انتقال میدهم.
fdconnection این قابلیت sqlconnection رو ندارد
اگر دقیقا کامپوننتهایی که هنگام درگ کردن جدول در datasnap ساخته می شود را با firedac جایگزین کنیم از چه کامپوننتهایی می توان استفاده کرد؟
از کامپوننت TFDMemTable چطوری استفاده می کنید؟ میشه به جای اون از TFDTable استفاده کرد یا کاربرد اون چیز دیگری است ؟
وقتی جدول را درگ می کنیم دو تا کامپوننت ایجاد می شود : 1- sql connection و 2- sqldataset
-
نقل قول: چه مواردی را در سمت سرور برنامه باید پیاده سازی کرد؟
میشه با firedac جایگزین کرد.ولی در کلاینت که قراره بانک رو با Datasnap بگیره،باید از FDMemTable استفاده کنی.نمیشه از FDTable استفاده کرد.
کار FDMemTable اینکه بانک رو از طریق مموری و cache برای کلاینت فرستاده شده اجرا کنه(همون cache که از طریق datasnap ایجاد میشه و اطلاعات ، داده های بانک اطلاعاتی سرور داخلش قرار داره)
بعد اون sqldataset نیازی نیست همون sqlconnection کافیه.
-
نقل قول: چه مواردی را در سمت سرور برنامه باید پیاده سازی کرد؟
نقل قول:
میشه با firedac جایگزین کرد.ولی در کلاینت که قراره بانک رو با Datasnap بگیره،باید از FDMemTable استفاده کنی.نمیشه از FDTable استفاده کرد.
کار FDMemTable اینکه بانک رو از طریق مموری و cache برای کلاینت فرستاده شده اجرا کنه(همون cache که از طریق datasnap ایجاد میشه و اطلاعات ، داده های بانک اطلاعاتی سرور داخلش قرار داره)
تنظیمات FDMemTable چطوریه؟ من هرچی تو تنظیماتش گشتم موفق نشدم به نتیجه ای برسم
نقل قول:
بعد اون sqldataset نیازی نیست همون sqlconnection کافیه.
اگر از sqldataset استفاده نکنیم پس چطوری جدول را به کلاینت منتق کنیم ؟
این روشی که من استفاده کردن بهتره یا اینکه شما گفتید و روش من چه مشکلاتی می تونه داشته باشه؟:
من در datasnap یک ّFDConnection و یک TFDTable گذاشتم و سمت کلاینت هم جدول را داخل ClinetDataset ریختم .
-
نقل قول: چه مواردی را در سمت سرور برنامه باید پیاده سازی کرد؟
برای firedac فکر نکنم بشه به client dataset ارتباط داد.
برای تنظیمات FDMemTable باید نمونه کد های datasnap ای که با Firedac نوشته اند پیدا کنید.اگر ورژن دلفی تون بالای xe5 باشه نمونه کد datasnap اش موجوده توی فایل های دلفی.وگرنه باید در اینترنت پیدا کنی:(یا از این نمونه کد زیر استفاده کن که مخصوص datasnap firedac هستش،ولی ورژن دلفی باید بالا باشه.)به راحتی میتونی ازش الگو برداری کنی.
از سرور پیکوفایل
-
نقل قول: چه مواردی را در سمت سرور برنامه باید پیاده سازی کرد؟
سمت کلاینت من از کامپوننتهای sqlconnection و TDSProviderconnection و clintdataset استفاده کردم و تونستم به datasnap که جدول را با کامپوننت های FDCOnnection و TFDTable و TDatasetProvider لود کرده متصل بشم . آیا این روش اصولی و صحیح است یا خیر؟
-
نقل قول: چه مواردی را در سمت سرور برنامه باید پیاده سازی کرد؟
اگر با این روش توانسته اید جدول رو با datasnap روی یک کلاینت باز کنید ،پس یعنی درست ارتباط برقرار کرده اند،و روش درست بوده وگرنه نباید اتصال برقرار میشد.یعنی روش شما درست بوده.
-
نقل قول: چه مواردی را در سمت سرور برنامه باید پیاده سازی کرد؟
نقل قول:
نوشته شده توسط
ابوالفضل عباسی
اگر با این روش توانسته اید جدول رو با datasnap روی یک کلاینت باز کنید ،پس یعنی درست ارتباط برقرار کرده اند،و روش درست بوده وگرنه نباید اتصال برقرار میشد.یعنی روش شما درست بوده.
اصلا این روش اصولی هست ؟یعنی در ادامه کار که برنامه سنگین تر میشه دچار مشکل نمیشه؟
-
نقل قول: چه مواردی را در سمت سرور برنامه باید پیاده سازی کرد؟
سلام
نظر شخصی بنده با توجه به تجربه کاری ساخت برنامه Multi tier , استفاده از RealThinClient رو پیشنهاد می دم
http://www.realthinclient.com
-
نقل قول: چه مواردی را در سمت سرور برنامه باید پیاده سازی کرد؟
نقل قول:
نوشته شده توسط
samani
چرا این را پیشنهاد می کنید ؟ چه مزیتی داره؟
رایگان هست؟
-
نقل قول: چه مواردی را در سمت سرور برنامه باید پیاده سازی کرد؟
نقل قول:
نوشته شده توسط
soft-c
چرا این را پیشنهاد می کنید ؟ چه مزیتی داره؟
رایگان هست؟
همین که از Indy مثل Datasnap استفاده نمی کنه خودش مزیته اینجا نمی خوام وارد بحث Performance کامپوننتهای Indy بشم
با فایروالها و آنتی ویروسها مشکلی نداره , مولتی ترده , http/https یعنی می تونید یه وب سرور به شکل ISAPI Extension, Stand-alone Servers, Third-party Servers بنویسید , استیبل هستش , استرس تست 24/7 بدون هیچ کِرَشی با کمترین هزینه سی پی یو و رم , میشه سرور به شکل ماژولار با انواع سرویسهای فایل و وب و دیتا برای انواع استانداردهای soap, rest, ... با خروجیهای json , xml , stream پیاده سازی کرد
سمت کلاینت رو میشه با یکی دوتا کامپوننت طراحی شده پیچیدگی برنامه نویسی چند لایه و ردیفه رو برای کسانی رو که به برنامه نویسی کلاینت سروری سنتی عادت کردن حذف کرد و شخص با همان دید قبلی با کامپوننتهای دیتاست طراحی شده به جای دیتاستهایی مثل ado , firedac, ... کوئریها رو زده و از هر دیتا کنترل برای عملیات مورد نظر استفاده کنه یه مثال سادش http://www.da-soft.com/thindac/download.html هست
PrivateKey/PublicKey به راحتی قابل پیاده سازی هستش , میشه دیتا رو به شکل فشرده و اینکریپت شده ارسال کرد
برای اطلاعات بیشتر میتونید توضیحات سایتش رو ببینید
چون اگه بخوام تجربیات خودم رو تو این زمینه خلاصه هم بگم باید کار و زندگیم رو ول کنم و چند ماه تایپ کنم
ورژن Opensource که نسخه 2.85 اگه اشتباه نکم رو میشه تو FreePascal یا لازاروس با کمی تغییرات هم استفاده کرد طبق تستی که قبلا زده بودم
ورژن جدیدش 6.5 هستش که تا 10 اتصال کلاینت , مجانی هستش , تو نت بگردی کرک داره یا این که 500 یورو بدی و بخریش
از این که نتونستم کامل توضیح بدم معذرت می خوام
-
نقل قول: چه مواردی را در سمت سرور برنامه باید پیاده سازی کرد؟
نقل قول:
مثالی که خود دلفی برای datasnap دارد به همه ی این ها توجه کرده است،اعم از رفرش بانک اطلاعاتی.
این مثال کجاست ؟ من نتونستم پیدا کنم .
-
نقل قول: چه مواردی را در سمت سرور برنامه باید پیاده سازی کرد؟
نقل قول:
نوشته شده توسط
ابوالفضل عباسی
باید روی کلاینت ها یک function نوشته شود که جدول اصلی سرور یا Sql server رو رفرش کند و قبل از ثبت اطلاعات و فرستادن به جدول اصلی چک بشه که این اطلاعات تکراری هست یا نه.
مثالی که خود دلفی برای datasnap دارد به همه ی این ها توجه کرده است،اعم از رفرش بانک اطلاعاتی.
این function رو یک تایمر داخل کلاینت باید بر عهده بگیرد که هر چند ثانیه و یا هر چند دقیقه بانک اطلاعاتی رو رفرش کند.
یا میتوان بجای function داخل کلاینت روی سرور،داخل برنامه اصلی این کار رو به عهده یک تایمر گذاشت که بانک اطلاعاتی رو رفرش کند.(این طوری بهتر هست)
من خودم برای پروژه های datasnap یا از access استفاده میکنم یا sql server و در مواقعی که از sql server استفاده میکنم.فقط سرور رو به sql متصل میکنم،و رفرش بانک رو هر 30 ثانیه انجام میدهم.(تنها مشکل این روش،اینکه سرور درگیر تایمر و حلقه های پشت سرهم زمانی که حجم اطلاعات و رکورد ها زیاد هست میشه که،اون هم با خاموش و روشن کردن تایمر جلوی اون رو گرفتم و هیچ وقت دوبار تایمر روی هم اجرا نمی شوند که رَم رو درگیر بکنند.)
من الان با روشی که گفتم و استفاده از clientdataset در سمت کلاینت فقط clientdataset را refresh می کنم . به نظر شما که در زمانیکه برنامه سنگین تر میشه که دچار مشکل نمیشه؟
-
نقل قول: چه مواردی را در سمت سرور برنامه باید پیاده سازی کرد؟
یک سوال داشتم : چه طوری میشه جلوی درج رکورد تکراری را گرفت ؟
ببینید طبق روشی که من دارم پیش میرم ابتدا رکورد مورد نظر در cliendataset با دستور post درج میشه و بعد با applyupdate روی جدول اصلی درج میشه .
حالا سوال این است که اگر دو نفر هم زمان بخواهند اطلاعات را درج کنند چطوری میشه جلوی درج اطلاعات تکراری اون هم در جدول اصلی را گرفت ؟
-
نقل قول: چه مواردی را در سمت سرور برنامه باید پیاده سازی کرد؟
اگر table اصلی رفرش بشه بهتر هست. این طوری clientdataset توی شبکه گیرنمی کنه مخصوصا اگر حجم دیتا زیاد باشه.
وقتی رفرش بکنی،از رکورد تکراری جلوگیری میشه.ولی زمانی که تایمر میخواد table رو رفرش کنه،یک while بگذار تا اگر رکورد تکراری بود به کلاینت ها پیغام بده تا یکی اون رو اصلاح کنه.
-
نقل قول: چه مواردی را در سمت سرور برنامه باید پیاده سازی کرد؟
نقل قول:
نوشته شده توسط
ابوالفضل عباسی
اگر table اصلی رفرش بشه بهتر هست. این طوری clientdataset توی شبکه گیرنمی کنه مخصوصا اگر حجم دیتا زیاد باشه.
وقتی رفرش بکنی،از رکورد تکراری جلوگیری میشه.ولی زمانی که تایمر میخواد table رو رفرش کنه،یک while بگذار تا اگر رکورد تکراری بود به کلاینت ها پیغام بده تا یکی اون رو اصلاح کنه.
من چک کردم ، تا زمانیکه clientdataset را آپدیت نکنیم اطلاعات به روز نمی شود حتی اگر جدول اصلی به روز شده باشد
-
نقل قول: چه مواردی را در سمت سرور برنامه باید پیاده سازی کرد؟
خب همون client dataset رو رفرش کنید
-
نقل قول: چه مواردی را در سمت سرور برنامه باید پیاده سازی کرد؟
نقل قول:
نوشته شده توسط
ابوالفضل عباسی
خب همون client dataset رو رفرش کنید
آیا این راه در آینده که کاربران بیشتر می شوند دچار مشکل نمیشه ؟ راه اصولی تر و بهتری هم وجود دارد؟