PDA

View Full Version : ادامه کار نرم افزار انلاین در زمان عدم موجودیت انترنت



esagraphic
یک شنبه 02 دی 1397, 16:23 عصر
سلام وقت همه بخیر
من یک برنامه سی شارپ دارم که دیتابیس sql server دارد و این دیتابیس روی یک هاست میباشد انلاین مشکل من جای است که میخواهم در زمانی که انترنت روی سیستم قطع است اطلاعات به صورت آفلاین ذخیره شود و زمانی که وصل شد دوباره به سرور انتقال پیدا کند
یا هم طوری باشد که دیتابیس به صورت خودکار با سرور هماهنگ شود در زمانی که انترنت وصل میشود
شما ها چه راه کاری برای این سراغ دارید

shahryars
یک شنبه 02 دی 1397, 16:36 عصر
توی سیشارپ حرفه ای نیستم، راه حل اصولیشو نمیدونم
یعنی نمیدونم چجوری بفهمیم که کِی اینترنت وصل میشه که بفرسته، ولی خب به هرحال میتونید بریزیدش توی یک datatable
یک timer هم بسازید
و مثلا هر 10 ثانیه یک بار try کنه که بفرسته به سرور

NasimBamdad
دوشنبه 03 دی 1397, 23:30 عصر
خدا خیرت بده ، می دونی یه تایمر چه باری اضافه می کنه . اگه مثلا 1 روز نت قطع باشه چی ؟ نمیشه که


باید از SQL و فکر کنم Sync Framework انجام بدید ، ، البته هنوز خودم موفق به اجرای این سیستم نشدم و خیلی دنبالشم

mr.sirwan
دوشنبه 03 دی 1397, 23:43 عصر
خدا خیرت بده ، می دونی یه تایمر چه باری اضافه می کنه . اگه مثلا 1 روز نت قطع باشه چی ؟ نمیشه که


باید از SQL و فکر کنم Sync Framework انجام بدید ، ، البته هنوز خودم موفق به اجرای این سیستم نشدم و خیلی دنبالشم

مشکلتون دقیقا کجاس؟ خب هر موقع نت وصل شد عملیات sync رو انجام بدین

NasimBamdad
سه شنبه 04 دی 1397, 00:01 صبح
مشکلتون دقیقا کجاس؟ خب هر موقع نت وصل شد عملیات sync رو انجام بدین

مشکل عملیان Sync هست . چه طوری این کار کرد .

mr.sirwan
سه شنبه 04 دی 1397, 00:03 صبح
برای اطلاع از قطع و وصل شدن نت از کلاس NetworkChange و ایونت NetworkAvailabilityChanged استفاده کنید، ابتدا باید این کتابخانه رو در سربرگ ها معرفی کنین System.Net.NetworkInformation
NetworkChange.NetworkAvailabilityChanged += NetworkChange_NetworkAvailabilityChanged;

private void NetworkChange_NetworkAvailabilityChanged(object sender, NetworkAvailabilityEventArgs e)
{
if (e.IsAvailable)
{
// اجرای دستورات مربوط به سینک کردن دیتابیس
}
}

این ایونت به محض قطع یا وصل شدن اینترنت فایر میشه

NasimBamdad
سه شنبه 04 دی 1397, 00:05 صبح
// اجرای دستورات مربوط به سینک کردن دیتابیس


این چه طوری باید بفهمم که چی رو باید sync کنم و چه طوری

mr.sirwan
سه شنبه 04 دی 1397, 00:07 صبح
اول بفرمایین که سناریوی شما به چه شکل هست تا بنده یا بقیه دوستان راهنمایی کنیم

NasimBamdad
سه شنبه 04 دی 1397, 00:24 صبح
بنده یه SQL Server دارم که در یک VPS ویندوز نصب هست . ورژن 2014 . به صورت ADO.NET با SQL در ارتباط هستم و یکسری هم فانکشن و SP دارم .

بسیاری از کار ها سعی شده با SP انجام بشه


خوب WinForms با C# هم زبان برنامه نویسی و ADO.NET .


مشکل اینجاست که زمانی که نت قطع میشه ، چه کار کنیم که :

1- آخرین بک آپ و رکورد های DB سمت VPS داشته باشیم( جهت کوری گرفتن و ... )
2- Insert ,update, delete هایی که سمت کاربر انجام میشه سریع زمانی که نت وصل میشه سمت سرور اتفاق بی افته

mr.sirwan
سه شنبه 04 دی 1397, 00:40 صبح
برای اولین مورد نظری ندارم، میتونین از این لینک ها کمک بگیرین:
https://dba.stackexchange.com/questions/105965/syncing-two-databases-in-sql-server
و مواردی که خودتون هم گفتین مثل sync framework و ...

اما واسه مورد دوم، میتونین یک دیتابیس Sqlite با یک جدول یا یک فایل تکست یا هر چیز ساده دیگه ای داشته باشین که شما تنها لازمه کوئری متناظر با هر عمل رو در اون ذخیره کنین و به محض وصل شدن اینترنت اون کوئری هارو سمت سرور اجرا کنید، برای مثال، سمت کلاینت کالایی رو حذف میکنین شما میاین کوئری متناظر با این عمل رو یه جایی ذخیره میکنین، برای insert و update هم به همین شکل
بعد از وصل شدن اینترنت و اجرا کردن کوئری های ذخیره شده، کوئری هارو حذف میکنید