نمایش نتایج 1 تا 38 از 38

نام تاپیک: چه مواردی را در سمت سرور برنامه باید پیاده سازی کرد؟

  1. #1
    کاربر تازه وارد
    تاریخ عضویت
    مهر 1385
    محل زندگی
    اصفهان
    پست
    70

    چه مواردی را در سمت سرور برنامه باید پیاده سازی کرد؟

    با سلام

    دوستان می خواستم از تجربه های کاریتون در مورد نوشتن یک سرو DataSnap صحبت کنید و اینکه چه مواردی را برای اینکه سروی چابک تر داشته باشیم باید رعایت و یا پیاده سازی کنیم
    البته جزئیات بیشتر به نوع پروژه برمیگرده ولی کلیات رو میشه فعلا بررسی کرد.

    و اینکه چه مواردی رو در سمت سرور پیاده سازی کرد؟
    مثلا در یک سروری که برای سیستم حسابداری نوشته شده است بهتر محاسبات مانده حساب مثلا در ClientDataset ریخته بشه و در سرور محاسبات مانده گیری روش انجام بشه و یا در کلاینت؟

    یا اینکه آیا سرور باید آمار اتصال کلاینت ها و قطع شدنشون رو داشته باشه؟

    تشکر

  2. #2

    نقل قول: چه مواردی را در سمت سرور برنامه باید پیاده سازی کرد؟

    دوستان می خواستم از تجربه های کاریتون در مورد نوشتن یک سرو DataSnap صحبت کنید و اینکه چه مواردی را برای اینکه سروی چابک تر داشته باشیم باید رعایت و یا پیاده سازی کنیم
    البته جزئیات بیشتر به نوع پروژه برمیگرده ولی کلیات رو میشه فعلا بررسی کرد.
    سلام. حرف که زیاده. اما بر اساس تجربه شخصیم استفاده از TCP خیلی بهتر و سریعتر هست نصبت به HTTP.
    سعی کنید ارتباطات رو حفظ کنید. وصل و قطع شدن کلاینت به سرور بار زیادی در تعداد یوزر بالا برای سرور داره.
    سعی کنید با دید مالتی ترد و مالتی تایر طراحی رو شروع کنید. البته دیتا اسنپ خیلی از موارد رو به خودی خود پشتیبانی میکنه. اما جایزه خودتون با دقت این عملیات رو بررسی کنید.
    مثلا در یک سروری که برای سیستم حسابداری نوشته شده است بهتر محاسبات مانده حساب مثلا در ClientDataset ریخته بشه و در سرور محاسبات مانده گیری روش انجام بشه و یا در کلاینت؟
    مطمئنن باید سمت سرور عملیات پردازشی انجام بشود. باید سعی بشه عملیات گرافیکی و UI سمت کاربر و محاسبات سمت سرور انجام بشود. دقت کنید با استفاده از متد کشینک از تکرار پردازشها جلوگیری کنید.
    ا اینکه آیا سرور باید آمار اتصال کلاینت ها و قطع شدنشون رو داشته باشه؟
    یک برنامه قوی باید تمام مراحل اتصال، اینسرت ، ویرایش و .. رو با دقت لاگ گیری بکنه. اتصال و قطع ارتباط که موضوع لازم و پیش پا افتاده ای هست.
    البته موارد اموزشی و تجربه زیاده ، اما با درگیر شدن خودتون با این منوال خیلی از مشکلات به خودیه خود تجربه جالبی براتون میشود.
    موفق باشید.

  3. #3
    کاربر تازه وارد
    تاریخ عضویت
    مهر 1385
    محل زندگی
    اصفهان
    پست
    70

    نقل قول: چه مواردی را در سمت سرور برنامه باید پیاده سازی کرد؟

    متشکرم بابت نظر ها و راهنمایی هاتون جناب MASK ، دوستان دیگر هم اگه تجربه مشابه دارند لطفا مطرح کنند

  4. #4
    کاربر دائمی آواتار ابوالفضل عباسی
    تاریخ عضویت
    شهریور 1393
    محل زندگی
    Inside Esfahan
    پست
    719

    نقل قول: چه مواردی را در سمت سرور برنامه باید پیاده سازی کرد؟

    باسلام خدمت شما دوستان عزیز
    من خودم با اینکه سن و سال زیادی ندارم نظر قطعی نمی دم ولی تاجایی که خودم کارکردم میگویم.
    من از TCP و FTP به شدت کار کرده ام چه درزمینه کامپیوتر و چه در زمینه اندروید(PC-PC) هم (Android-PC) هم (Android-Android) یکمی هم با HTTP کارکردم
    ولی نظر شخصی من با TCP هست چون سرعت بالاتری داره و هم میتونی چک کنی اگر اتصال قطع شده اطلاعات رو در cache ذخیره کن و وقتی ارتباط برقرار شد ارسال کن،و این یعنی نظارت کامل روی datasnap.
    شما باید توی گود این تبادل اطلاعات از طریق دلفی بیوفتی تا بفهمی کدوم راه مناسب ترینه.

    ولی خودم یه سوال داشتم از کسانی که در datasnap قوی هستند: وقتی از طریق datasnap میخوام از بانک اطلاعاتی استفاده کنم (از بانکی که رو کامپیوتر اجراست و از اندروید میخوام دریافت کنم)از هر دوطرف ping میگیرم ارتباط برقرار هست ولی داخل برنامه تبادل انجام نمیشه.اما وقتی انتی ویروس کامپیوتر رو خاموش میکنم سریع اطلاعات تبادل میشه.چرا اینطور هست؟
    یعنی اگر انتی ویروس وصل باشه تبادل انجام نمیشه؟چه 2 کامپیوتر باهم و چه اندروید به کامپیوتر اینطوریه؟
    اگر اینطوری باشه که خیلی بد میشه که!!!؟؟(چون دائم باید انتی ویروس رو خاموش کنی)

  5. #5
    کاربر تازه وارد
    تاریخ عضویت
    مهر 1385
    محل زندگی
    اصفهان
    پست
    70

    نقل قول: چه مواردی را در سمت سرور برنامه باید پیاده سازی کرد؟

    نقل قول نوشته شده توسط ابوالفضل عباسی مشاهده تاپیک
    باسلام خدمت شما دوستان عزیز
    من خودم با اینکه سن و سال زیادی ندارم نظر قطعی نمی دم ولی تاجایی که خودم کارکردم میگویم.
    من از TCP و FTP به شدت کار کرده ام چه درزمینه کامپیوتر و چه در زمینه اندروید(PC-PC) هم (Android-PC) هم (Android-Android) یکمی هم با HTTP کارکردم
    ولی نظر شخصی من با TCP هست چون سرعت بالاتری داره و هم میتونی چک کنی اگر اتصال قطع شده اطلاعات رو در cache ذخیره کن و وقتی ارتباط برقرار شد ارسال کن،و این یعنی نظارت کامل روی datasnap.
    شما باید توی گود این تبادل اطلاعات از طریق دلفی بیوفتی تا بفهمی کدوم راه مناسب ترینه.

    ولی خودم یه سوال داشتم از کسانی که در datasnap قوی هستند: وقتی از طریق datasnap میخوام از بانک اطلاعاتی استفاده کنم (از بانکی که رو کامپیوتر اجراست و از اندروید میخوام دریافت کنم)از هر دوطرف ping میگیرم ارتباط برقرار هست ولی داخل برنامه تبادل انجام نمیشه.اما وقتی انتی ویروس کامپیوتر رو خاموش میکنم سریع اطلاعات تبادل میشه.چرا اینطور هست؟
    یعنی اگر انتی ویروس وصل باشه تبادل انجام نمیشه؟چه 2 کامپیوتر باهم و چه اندروید به کامپیوتر اینطوریه؟
    اگر اینطوری باشه که خیلی بد میشه که!!!؟؟(چون دائم باید انتی ویروس رو خاموش کنی)
    با سلام
    متشکرم که نظر دادین
    این مورد ماله Firewall هست که آنتی ویروس فعال میکنه و پورت های سیستم شما رو می بنده
    باید شماره پورت DataSnap رو در قسمتی که در تصویر زیر هست باز کنید.
    Untitled2.jpg

  6. #6
    کاربر دائمی آواتار ابوالفضل عباسی
    تاریخ عضویت
    شهریور 1393
    محل زندگی
    Inside Esfahan
    پست
    719

    نقل قول: چه مواردی را در سمت سرور برنامه باید پیاده سازی کرد؟

    دستت دردنکنه کارم رو راحت تر کردی.
    ولی یه سوال نمیشه یه پورتی رو انتخاب کرد که نیاز نباشه پورت های بسته شده رو بازکنی؟در datasnap
    چون من اینطوری برای هر کلاینت باید پورت بازکنم و این خطرناکه چون ممکنه از اون پورت سیستم ها هک بشه.

  7. #7

    نقل قول: چه مواردی را در سمت سرور برنامه باید پیاده سازی کرد؟

    فقط پورت دیتا اسنپ رو باز کنید. نه همه پورتها رو

  8. #8
    کاربر دائمی آواتار ابوالفضل عباسی
    تاریخ عضویت
    شهریور 1393
    محل زندگی
    Inside Esfahan
    پست
    719

    نقل قول: چه مواردی را در سمت سرور برنامه باید پیاده سازی کرد؟

    ببخشید این سوال رو میپرسم:
    توی این لیست پورت ها کدومش برای دیتا اسنپه هست که بازش کنم؟

  9. #9

    نقل قول: چه مواردی را در سمت سرور برنامه باید پیاده سازی کرد؟

    بوسیله برنامه های جانبی مثل ProcessHacker و ... میتونید ببینید چه برنامه ای چه پورتی رو اشغال کرده.

  10. #10
    کاربر تازه وارد
    تاریخ عضویت
    مهر 1385
    محل زندگی
    اصفهان
    پست
    70

    نقل قول: چه مواردی را در سمت سرور برنامه باید پیاده سازی کرد؟

    سلام پورت datasnap رو خودت تعريف ميكني،هموم رو توي سرور و كلاينت باز كن
    پيش فرضش ٢١١ و ٨٠٨٠ براي tcp و http

  11. #11
    کاربر دائمی آواتار ابوالفضل عباسی
    تاریخ عضویت
    شهریور 1393
    محل زندگی
    Inside Esfahan
    پست
    719

    نقل قول: چه مواردی را در سمت سرور برنامه باید پیاده سازی کرد؟

    خیلی ممنون با همون برنامه Process Hacker پورت datasnap رو پیدا کردم و بازش کردم.
    برنامه خوبیه Process Hacker راحت پورت هایی که برنامه ها استفاده میکنند رو میتونی پیدا کنی و ببندی و یا باز کنی

  12. #12

    نقل قول: چه مواردی را در سمت سرور برنامه باید پیاده سازی کرد؟

    ولی نظر شخصی من با TCP هست چون سرعت بالاتری داره و هم میتونی چک کنی اگر اتصال قطع شده اطلاعات رو در cache ذخیره کن و وقتی ارتباط برقرار شد ارسال کن،و این یعنی نظارت کامل روی datasnap.
    میشه در مورد cache بیشتر توضیح بدید. آیا در مورد این موضوع کد یا برنامه ای دارید که بتوان استفاده کرد؟
    یک سوال دیگه :
    اگر من جدول را مستقیما وارد قسمت سرور بکنم و بعد روی اونها عملیات انجام بدم بهتره یا اینکه متدهای دسترسی را سمت سرور فقط بنویسم و خروجی جداول را به کلاینت ارسال کنم ؟

  13. #13
    کاربر دائمی آواتار ابوالفضل عباسی
    تاریخ عضویت
    شهریور 1393
    محل زندگی
    Inside Esfahan
    پست
    719

    نقل قول: چه مواردی را در سمت سرور برنامه باید پیاده سازی کرد؟

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

    درمورد cache هم نمونه کد که بتونم بذارم ندارم(شاید توی اینترنت باشه)ولی در tcp مثل دانلود منیجر یک فایل روی سیستم ایجاد میشه و شروع دریافت میکنه و یک زمان که اتصال قطع میشه،cache هست و درصورد برقراری ارتباط فایل از ادامه شروع به دریافت میشه.

  14. #14

    نقل قول: چه مواردی را در سمت سرور برنامه باید پیاده سازی کرد؟

    اگر جدول را مستقیما در سرور وارد کنم و بعد اون جدول را به clientdataset در کلاینت وارد کنم چطوره؟
    جدول را که مستقیما در سرور وارد می کنم یعنی عملیاتهایی مانند فیلتر و ... را هم روی همون جدول پیاده سازی کنم و دیگه نیازی به نوشتن sp و function نیست ؟( منظورم اینه که مثل قبل که sp را روی sql server می نوشتیم و پارامتر را از کلاینت ارسال می کردیم)

  15. #15
    کاربر دائمی آواتار ابوالفضل عباسی
    تاریخ عضویت
    شهریور 1393
    محل زندگی
    Inside Esfahan
    پست
    719

    نقل قول: چه مواردی را در سمت سرور برنامه باید پیاده سازی کرد؟

    جدول رو مستقیما در سرور وارد کنید و در کلاینت از clientdataset استفاده کنید برای نمایش و اصلاحات و اضافه کردن رکورد.
    فیلتر روی clientdataset انجام میشه و اگر میخواهید که روی جدول اصلی در سرور فیلتر انجام بشه نیاز به function و پروسیجر هایی هست که مستقیما روی جدول اصلی ایجاد بشه.
    برای ارتباط هم sqlconnection میشه استفاده کرد.
    نمونه datasnap توی Sample های دلفی هست که میتونید الگو بگیرید.

  16. #16

    نقل قول: چه مواردی را در سمت سرور برنامه باید پیاده سازی کرد؟

    جدول اصلی منظورتون جدولی هست که روی سرور وارد کردیم یا جدول موجود روی sql server.
    اگر بخواهیم روی clientdataset این عملیات انجام بشه یک بحثی به وجود می اید و اون اینکه اگر هم زمان چند تا کاربر بخواهند روی این اطلاعات کار کنند :
    1- چه طوری بقیه کاربرها از این تغییرات در لحظه مطلع بشوند؟
    2- چگونه جلوی درج اطلاعات تکراری در ارسال های هم زمان کاربرها گرفته شود ؟

  17. #17
    کاربر دائمی آواتار ابوالفضل عباسی
    تاریخ عضویت
    شهریور 1393
    محل زندگی
    Inside Esfahan
    پست
    719

    نقل قول: چه مواردی را در سمت سرور برنامه باید پیاده سازی کرد؟

    همون جدولی که روی سرور هست رو میگوییم جدول اصلی یا main table
    که اگر بانکتون sql هست، جدول اصلی جدول sql میشود.(درصورتی که در برنامه روی سرور قرار نیست عملیات های دیگری انجام بشود،اگر قرار عملیات های دیگری انجام شود،جدول اصلی،جدول سرور است که به بانک sql متصل است.)
    به نظرم شما در برنامه روی سرور به بانک sql اتصال داشته باش و با datasnap به جدول برنامه داخل سرور متصل شوید.این طوری sql server بین کلاینت ها درگیر نمیشود و فقط با برنامه اصلی متصل و درگیر است.

  18. #18

    نقل قول: چه مواردی را در سمت سرور برنامه باید پیاده سازی کرد؟

    اگر بخواهیم روی clientdataset این عملیات انجام بشه یک بحثی به وجود می اید و اون اینکه اگر هم زمان چند تا کاربر بخواهند روی این اطلاعات کار کنند :
    1- چه طوری بقیه کاربرها از این تغییرات در لحظه مطلع بشوند؟
    2- چگونه جلوی درج اطلاعات تکراری در ارسال های هم زمان کاربرها گرفته شود ؟

  19. #19
    کاربر دائمی آواتار ابوالفضل عباسی
    تاریخ عضویت
    شهریور 1393
    محل زندگی
    Inside Esfahan
    پست
    719

    نقل قول: چه مواردی را در سمت سرور برنامه باید پیاده سازی کرد؟

    باید روی کلاینت ها یک function نوشته شود که جدول اصلی سرور یا Sql server رو رفرش کند و قبل از ثبت اطلاعات و فرستادن به جدول اصلی چک بشه که این اطلاعات تکراری هست یا نه.
    مثالی که خود دلفی برای datasnap دارد به همه ی این ها توجه کرده است،اعم از رفرش بانک اطلاعاتی.
    این function رو یک تایمر داخل کلاینت باید بر عهده بگیرد که هر چند ثانیه و یا هر چند دقیقه بانک اطلاعاتی رو رفرش کند.
    یا میتوان بجای function داخل کلاینت روی سرور،داخل برنامه اصلی این کار رو به عهده یک تایمر گذاشت که بانک اطلاعاتی رو رفرش کند.(این طوری بهتر هست)
    من خودم برای پروژه های datasnap یا از access استفاده میکنم یا sql server و در مواقعی که از sql server استفاده میکنم.فقط سرور رو به sql متصل میکنم،و رفرش بانک رو هر 30 ثانیه انجام میدهم.(تنها مشکل این روش،اینکه سرور درگیر تایمر و حلقه های پشت سرهم زمانی که حجم اطلاعات و رکورد ها زیاد هست میشه که،اون هم با خاموش و روشن کردن تایمر جلوی اون رو گرفتم و هیچ وقت دوبار تایمر روی هم اجرا نمی شوند که رَم رو درگیر بکنند.)

  20. #20

    نقل قول: چه مواردی را در سمت سرور برنامه باید پیاده سازی کرد؟

    آیا امکان استفاده از firedac هم به جای sqlconnection وجود داره؟

  21. #21
    کاربر دائمی آواتار ابوالفضل عباسی
    تاریخ عضویت
    شهریور 1393
    محل زندگی
    Inside Esfahan
    پست
    719

    نقل قول: چه مواردی را در سمت سرور برنامه باید پیاده سازی کرد؟

    من خودم برای بانکی که با استفاده از firedac در سرور موجود است رو با Sqlconnection از طریق کلاینت ها به سرور ارتباط میدهم.
    و با fdmemtable بانک رو از طریق datasnap به کلاینت ها انتقال میدهم.
    fdconnection این قابلیت sqlconnection رو ندارد

  22. #22

    نقل قول: چه مواردی را در سمت سرور برنامه باید پیاده سازی کرد؟

    نقل قول نوشته شده توسط ابوالفضل عباسی مشاهده تاپیک
    من خودم برای بانکی که با استفاده از firedac در سرور موجود است رو با Sqlconnection از طریق کلاینت ها به سرور ارتباط میدهم.
    و با fdmemtable بانک رو از طریق datasnap به کلاینت ها انتقال میدهم.
    fdconnection این قابلیت sqlconnection رو ندارد
    اگر دقیقا کامپوننتهایی که هنگام درگ کردن جدول در datasnap ساخته می شود را با firedac جایگزین کنیم از چه کامپوننتهایی می توان استفاده کرد؟
    از کامپوننت TFDMemTable چطوری استفاده می کنید؟ میشه به جای اون از TFDTable استفاده کرد یا کاربرد اون چیز دیگری است ؟
    وقتی جدول را درگ می کنیم دو تا کامپوننت ایجاد می شود : 1- sql connection و 2- sqldataset
    آخرین ویرایش به وسیله soft-c : چهارشنبه 12 اسفند 1394 در 09:58 صبح

  23. #23
    کاربر دائمی آواتار ابوالفضل عباسی
    تاریخ عضویت
    شهریور 1393
    محل زندگی
    Inside Esfahan
    پست
    719

    نقل قول: چه مواردی را در سمت سرور برنامه باید پیاده سازی کرد؟

    میشه با firedac جایگزین کرد.ولی در کلاینت که قراره بانک رو با Datasnap بگیره،باید از FDMemTable استفاده کنی.نمیشه از FDTable استفاده کرد.
    کار FDMemTable اینکه بانک رو از طریق مموری و cache برای کلاینت فرستاده شده اجرا کنه(همون cache که از طریق datasnap ایجاد میشه و اطلاعات ، داده های بانک اطلاعاتی سرور داخلش قرار داره)
    بعد اون sqldataset نیازی نیست همون sqlconnection کافیه.

  24. #24

    نقل قول: چه مواردی را در سمت سرور برنامه باید پیاده سازی کرد؟

    میشه با firedac جایگزین کرد.ولی در کلاینت که قراره بانک رو با Datasnap بگیره،باید از FDMemTable استفاده کنی.نمیشه از FDTable استفاده کرد.
    کار FDMemTable اینکه بانک رو از طریق مموری و cache برای کلاینت فرستاده شده اجرا کنه(همون cache که از طریق datasnap ایجاد میشه و اطلاعات ، داده های بانک اطلاعاتی سرور داخلش قرار داره)
    تنظیمات FDMemTable چطوریه؟ من هرچی تو تنظیماتش گشتم موفق نشدم به نتیجه ای برسم
    بعد اون sqldataset نیازی نیست همون sqlconnection کافیه.
    اگر از sqldataset استفاده نکنیم پس چطوری جدول را به کلاینت منتق کنیم ؟

    این روشی که من استفاده کردن بهتره یا اینکه شما گفتید و روش من چه مشکلاتی می تونه داشته باشه؟:
    من در datasnap یک ّFDConnection و یک TFDTable گذاشتم و سمت کلاینت هم جدول را داخل ClinetDataset ریختم .

  25. #25
    کاربر دائمی آواتار ابوالفضل عباسی
    تاریخ عضویت
    شهریور 1393
    محل زندگی
    Inside Esfahan
    پست
    719

    نقل قول: چه مواردی را در سمت سرور برنامه باید پیاده سازی کرد؟

    برای firedac فکر نکنم بشه به client dataset ارتباط داد.
    برای تنظیمات FDMemTable باید نمونه کد های datasnap ای که با Firedac نوشته اند پیدا کنید.اگر ورژن دلفی تون بالای xe5 باشه نمونه کد datasnap اش موجوده توی فایل های دلفی.وگرنه باید در اینترنت پیدا کنی:(یا از این نمونه کد زیر استفاده کن که مخصوص datasnap firedac هستش،ولی ورژن دلفی باید بالا باشه.)به راحتی میتونی ازش الگو برداری کنی.
    از سرور پیکوفایل

  26. #26

    نقل قول: چه مواردی را در سمت سرور برنامه باید پیاده سازی کرد؟

    سمت کلاینت من از کامپوننتهای sqlconnection و TDSProviderconnection و clintdataset استفاده کردم و تونستم به datasnap که جدول را با کامپوننت های FDCOnnection و TFDTable و TDatasetProvider لود کرده متصل بشم . آیا این روش اصولی و صحیح است یا خیر؟

  27. #27
    کاربر دائمی آواتار ابوالفضل عباسی
    تاریخ عضویت
    شهریور 1393
    محل زندگی
    Inside Esfahan
    پست
    719

    نقل قول: چه مواردی را در سمت سرور برنامه باید پیاده سازی کرد؟

    اگر با این روش توانسته اید جدول رو با datasnap روی یک کلاینت باز کنید ،پس یعنی درست ارتباط برقرار کرده اند،و روش درست بوده وگرنه نباید اتصال برقرار میشد.یعنی روش شما درست بوده.

  28. #28

    نقل قول: چه مواردی را در سمت سرور برنامه باید پیاده سازی کرد؟

    نقل قول نوشته شده توسط ابوالفضل عباسی مشاهده تاپیک
    اگر با این روش توانسته اید جدول رو با datasnap روی یک کلاینت باز کنید ،پس یعنی درست ارتباط برقرار کرده اند،و روش درست بوده وگرنه نباید اتصال برقرار میشد.یعنی روش شما درست بوده.
    اصلا این روش اصولی هست ؟یعنی در ادامه کار که برنامه سنگین تر میشه دچار مشکل نمیشه؟

  29. #29
    کاربر تازه وارد
    تاریخ عضویت
    بهمن 1381
    محل زندگی
    Iran
    پست
    62

    نقل قول: چه مواردی را در سمت سرور برنامه باید پیاده سازی کرد؟

    سلام

    نظر شخصی بنده با توجه به تجربه کاری ساخت برنامه Multi tier , استفاده از RealThinClient رو پیشنهاد می دم
    http://www.realthinclient.com

  30. #30

    نقل قول: چه مواردی را در سمت سرور برنامه باید پیاده سازی کرد؟

    نقل قول نوشته شده توسط samani مشاهده تاپیک
    سلام

    نظر شخصی بنده با توجه به تجربه کاری ساخت برنامه Multi tier , استفاده از RealThinClient رو پیشنهاد می دم
    http://www.realthinclient.com
    چرا این را پیشنهاد می کنید ؟ چه مزیتی داره؟
    رایگان هست؟

  31. #31
    کاربر تازه وارد
    تاریخ عضویت
    بهمن 1381
    محل زندگی
    Iran
    پست
    62

    نقل قول: چه مواردی را در سمت سرور برنامه باید پیاده سازی کرد؟

    نقل قول نوشته شده توسط 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 یورو بدی و بخریش

    از این که نتونستم کامل توضیح بدم معذرت می خوام

  32. #32

    نقل قول: چه مواردی را در سمت سرور برنامه باید پیاده سازی کرد؟

    مثالی که خود دلفی برای datasnap دارد به همه ی این ها توجه کرده است،اعم از رفرش بانک اطلاعاتی.
    این مثال کجاست ؟ من نتونستم پیدا کنم .

  33. #33

    نقل قول: چه مواردی را در سمت سرور برنامه باید پیاده سازی کرد؟

    نقل قول نوشته شده توسط ابوالفضل عباسی مشاهده تاپیک
    باید روی کلاینت ها یک function نوشته شود که جدول اصلی سرور یا Sql server رو رفرش کند و قبل از ثبت اطلاعات و فرستادن به جدول اصلی چک بشه که این اطلاعات تکراری هست یا نه.
    مثالی که خود دلفی برای datasnap دارد به همه ی این ها توجه کرده است،اعم از رفرش بانک اطلاعاتی.
    این function رو یک تایمر داخل کلاینت باید بر عهده بگیرد که هر چند ثانیه و یا هر چند دقیقه بانک اطلاعاتی رو رفرش کند.
    یا میتوان بجای function داخل کلاینت روی سرور،داخل برنامه اصلی این کار رو به عهده یک تایمر گذاشت که بانک اطلاعاتی رو رفرش کند.(این طوری بهتر هست)
    من خودم برای پروژه های datasnap یا از access استفاده میکنم یا sql server و در مواقعی که از sql server استفاده میکنم.فقط سرور رو به sql متصل میکنم،و رفرش بانک رو هر 30 ثانیه انجام میدهم.(تنها مشکل این روش،اینکه سرور درگیر تایمر و حلقه های پشت سرهم زمانی که حجم اطلاعات و رکورد ها زیاد هست میشه که،اون هم با خاموش و روشن کردن تایمر جلوی اون رو گرفتم و هیچ وقت دوبار تایمر روی هم اجرا نمی شوند که رَم رو درگیر بکنند.)
    من الان با روشی که گفتم و استفاده از clientdataset در سمت کلاینت فقط clientdataset را refresh می کنم . به نظر شما که در زمانیکه برنامه سنگین تر میشه که دچار مشکل نمیشه؟

  34. #34

    نقل قول: چه مواردی را در سمت سرور برنامه باید پیاده سازی کرد؟

    یک سوال داشتم : چه طوری میشه جلوی درج رکورد تکراری را گرفت ؟
    ببینید طبق روشی که من دارم پیش میرم ابتدا رکورد مورد نظر در cliendataset با دستور post درج میشه و بعد با applyupdate روی جدول اصلی درج میشه .
    حالا سوال این است که اگر دو نفر هم زمان بخواهند اطلاعات را درج کنند چطوری میشه جلوی درج اطلاعات تکراری اون هم در جدول اصلی را گرفت ؟

  35. #35
    کاربر دائمی آواتار ابوالفضل عباسی
    تاریخ عضویت
    شهریور 1393
    محل زندگی
    Inside Esfahan
    پست
    719

    نقل قول: چه مواردی را در سمت سرور برنامه باید پیاده سازی کرد؟

    اگر table اصلی رفرش بشه بهتر هست. این طوری clientdataset توی شبکه گیرنمی کنه مخصوصا اگر حجم دیتا زیاد باشه.
    وقتی رفرش بکنی،از رکورد تکراری جلوگیری میشه.ولی زمانی که تایمر میخواد table رو رفرش کنه،یک while بگذار تا اگر رکورد تکراری بود به کلاینت ها پیغام بده تا یکی اون رو اصلاح کنه.

  36. #36

    نقل قول: چه مواردی را در سمت سرور برنامه باید پیاده سازی کرد؟

    نقل قول نوشته شده توسط ابوالفضل عباسی مشاهده تاپیک
    اگر table اصلی رفرش بشه بهتر هست. این طوری clientdataset توی شبکه گیرنمی کنه مخصوصا اگر حجم دیتا زیاد باشه.
    وقتی رفرش بکنی،از رکورد تکراری جلوگیری میشه.ولی زمانی که تایمر میخواد table رو رفرش کنه،یک while بگذار تا اگر رکورد تکراری بود به کلاینت ها پیغام بده تا یکی اون رو اصلاح کنه.
    من چک کردم ، تا زمانیکه clientdataset را آپدیت نکنیم اطلاعات به روز نمی شود حتی اگر جدول اصلی به روز شده باشد

  37. #37
    کاربر دائمی آواتار ابوالفضل عباسی
    تاریخ عضویت
    شهریور 1393
    محل زندگی
    Inside Esfahan
    پست
    719

    نقل قول: چه مواردی را در سمت سرور برنامه باید پیاده سازی کرد؟

    خب همون client dataset رو رفرش کنید

  38. #38

    نقل قول: چه مواردی را در سمت سرور برنامه باید پیاده سازی کرد؟

    نقل قول نوشته شده توسط ابوالفضل عباسی مشاهده تاپیک
    خب همون client dataset رو رفرش کنید
    آیا این راه در آینده که کاربران بیشتر می شوند دچار مشکل نمیشه ؟ راه اصولی تر و بهتری هم وجود دارد؟

تاپیک های مشابه

  1. پاسخ: 0
    آخرین پست: سه شنبه 04 مرداد 1390, 13:06 عصر
  2. سوال: پیاده سازی امکان آموزش مجازی در وب سایت
    نوشته شده توسط mahak_f در بخش ASP.NET Web Forms
    پاسخ: 1
    آخرین پست: سه شنبه 20 اردیبهشت 1390, 17:29 عصر
  3. سوال: پیاده سازی بازی Reversi با الگوریتم Minimax
    نوشته شده توسط -Azure- در بخش الگوریتم، کامپایلر، هوش مصنوعی و ساختمان داده ها
    پاسخ: 0
    آخرین پست: شنبه 08 اسفند 1388, 16:05 عصر
  4. سوال: پیاده سازی برنامه بازی با threading
    نوشته شده توسط bahar123 در بخش C#‎‎
    پاسخ: 3
    آخرین پست: جمعه 26 تیر 1388, 23:25 عصر

قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •