PDA

View Full Version : پیاده سازی نرم افزاری برای یک شرکت با شعب مختلف



csharpprogramer88
پنج شنبه 10 اردیبهشت 1394, 17:19 عصر
سلام
ی شرکت فرضی را در نظر بگیرید مثلا میخام براش ی نرم افزار حسابداری بنویسم این شرکته در سطح یک استان 10 تا شعبه داره ک هر شعبه وقتی جنسی را میفروشه فاکتور میزنه میخاد مدیر عامل در دفتر مرکزی ببینه این فاکتور ها را

شما باشین چطوری این نرم افزار را پیاده سازی میکنین؟

parvizwpf
پنج شنبه 10 اردیبهشت 1394, 19:10 عصر
از قابلیتهای sql میتونید استفاده کنید یا یک سرور با آی پی استاتیک که همه با اینترنت به اون وصل بشوند و دیتاهاشون جدا باشه

ali_md110
پنج شنبه 10 اردیبهشت 1394, 20:31 عصر
ُسلام
ابتدا توصیه میکنم اگر گروه نرم افزاری شامل تخصص حسابداری و تخصص Ef و مسلط به Mvc دارید شروع به پیاده سازی این پروژه کنید و گرنه خودتون خسته نکنید چون عدم داشتن یک سری اطلاعات تخصصی مثل حسابداری که واقعن نیاز شماست مشکل ساز خواهدشد.
شما باید توی این پروزه ه از یک وب سرور خوب استفاده کنید و نیازی هم نیست که دیتاهای هر فروشگاه منظورم دیتابیس هست جدا باشه
در اینگونه سیستمهای حسابرسی از مراکز هزینه و پروژه استفاده میشه و هنگام ثبت اسناد مالی و تجاری مرکز مورد نظر رو مد نظر قرار میدن
تفسیر و تحلیل این سیستم هم خیلی مهمه که به نظرم از حوصله تاپیک و پست زدن در این سایت خارج باشه چون یه خورده زمانبرهست

csharpprogramer88
دوشنبه 14 اردیبهشت 1394, 09:05 صبح
از قابلیتهای sql میتونید استفاده کنید یا یک سرور با آی پی استاتیک که همه با اینترنت به اون وصل بشوند و دیتاهاشون جدا باشه


آیا نیازه که با asp کار کنیم ؟ یا c#?

اگر نرم افزار ترکیبی از تحت وب و ویندوز اپلیکیشن باشه ، میشه از PHP استفاده کرد یا نه ؟

SabaSabouhi
دوشنبه 14 اردیبهشت 1394, 09:32 صبح
آیا نیازه که با asp کار کنیم ؟ یا C#‎?

اگر نرم افزار ترکیبی از تحت وب و ویندوز اپلیکیشن باشه ، میشه از PHP استفاده کرد یا نه ؟

سلام
نظر دادن درباره‌ی این پروژه خیلی بستگی به تجربه و کمی سلیقه‌ی طرف مقابل داره.
دوست خوبم ali_md110 نظری داده که به نظر من مثل همیشه خیلی خوبه.
اما سلیقه و تجربه‌ی من به سمت دیگه‌ای میل پیدا می‌کنه. من ترجیح می‌دم که بجای یک WebApplication یه
WebService داشته باشم و Clientهایم رو به صورت Wpf و با یک دیتابیس محلی برای نگهداری جدول‌های تقریباً
ثابت مثل حساب‌ها پیش برم. به این ترتیب می‌تونم کارهای انجام شده در Clientها رو در صورت عدم ارتباط با
اینترنت در محل به صورت موقت نگهداری کنم، و با برقراری ارتباط هماهنگی با مرکز رو ایجاد کنم.
ضمن این که به دلیل نگهداری اطلاعات حساب‌ها، مراکز هزینه و . . . سرعت کار هم در کلاینت‌ها بالا می‌ره.

البته باید متذکر بشم که هزینه‌ی تولید و پشتیبانی با روش دوستم ali_md110 پایین‌تر و مقرون به صرفه‌تره.
اما اگه کارفرما حاضره پول خوبی بده، می‌شه روش من رو انتخاب کرد.

صبا صبوحی

csharpprogramer88
دوشنبه 14 اردیبهشت 1394, 10:04 صبح
سلام
نظر دادن درباره‌ی این پروژه خیلی بستگی به تجربه و کمی سلیقه‌ی طرف مقابل داره.
دوست خوبم ali_md110 نظری داده که به نظر من مثل همیشه خیلی خوبه.
اما سلیقه و تجربه‌ی من به سمت دیگه‌ای میل پیدا می‌کنه. من ترجیح می‌دم که بجای یک WebApplication یه
WebService داشته باشم و Clientهایم رو به صورت Wpf و با یک دیتابیس محلی برای نگهداری جدول‌های تقریباً
ثابت مثل حساب‌ها پیش برم. به این ترتیب می‌تونم کارهای انجام شده در Clientها رو در صورت عدم ارتباط با
اینترنت در محل به صورت موقت نگهداری کنم، و با برقراری ارتباط هماهنگی با مرکز رو ایجاد کنم.
ضمن این که به دلیل نگهداری اطلاعات حساب‌ها، مراکز هزینه و . . . سرعت کار هم در کلاینت‌ها بالا می‌ره.

البته باید متذکر بشم که هزینه‌ی تولید و پشتیبانی با روش دوستم ali_md110 پایین‌تر و مقرون به صرفه‌تره.
اما اگه کارفرما حاضره پول خوبی بده، می‌شه روش من رو انتخاب کرد.

صبا صبوحی
میشه بیشتر توضیح بدید با وب سرویس چیکار میکنین ؟ هزینه راه اندازیش چقدره ؟
ی خرده توضیحات فنی بدید مثلا دراین پروژه به چه تخصصی نیازه چه زبان برنامه نویسی و دیتابیسی نیازه و...

fafa_n6190
دوشنبه 14 اردیبهشت 1394, 10:54 صبح
نظر دوستان محترم ولی از نظر من پیاده سازی همچین سیستمی تحت وب و یا استفاده از وب سرویس جهت تبادل داده ها ریسک های بالایی داره!
فرضا در محل یکی از کلاینت ها اینترنت قطع شد. چه اتفاقی می افته؟ تا وصل شدن اینترنت نباید با سیستم کار کنه؟ یا مسائل دیگه مثل سرعت و ...
از طرفی شما با نوشتن وب سرویس برای انتقال داده مشکلات و پیچیدگی های بسیاری رو وارد پروژه میکنید، چه کاریه آخه..!

ماکروسافت یه فریم ورک داره به اسم Microsoft Sync Framework (https://msdn.microsoft.com/en-us/library/bb902854(v=sql.110).aspx) یکم راجع بهش اطلاعات بگیر ، در این روش هر کلاینت یه برنامه داره و یه دیتابیس! مثل حالت عادی تمام کارهاش هم انجام میشه بدون نیاز به اینترنت و با امنیت ، کارایی و سرعت بالا!
با وصل شدن لحظه ای اینترنت اطلاعات تو همه ی بانک های اطلاعاتی به صورت خودکار سینک میشه!
هر موقع کلاینت ها آنلاین باشن با سرور سینک هستن و در صورت آفلاین بودن به محض آنلاین شدن خودکار این اتفاق میوفته..!
خیلی هم سادس و کم هزینه :لبخند:

csharpprogramer88
دوشنبه 14 اردیبهشت 1394, 11:09 صبح
نظر دوستان محترم ولی از نظر من پیاده سازی همچین سیستمی تحت وب و یا استفاده از وب سرویس جهت تبادل داده ها ریسک های بالایی داره!
فرضا در محل یکی از کلاینت ها اینترنت قطع شد. چه اتفاقی می افته؟ تا وصل شدن اینترنت نباید با سیستم کار کنه؟ یا مسائل دیگه مثل سرعت و ...
از طرفی شما با نوشتن وب سرویس برای انتقال داده مشکلات و پیچیدگی های بسیاری رو وارد پروژه میکنید، چه کاریه آخه..!

ماکروسافت یه فریم ورک داره به اسم Microsoft Sync Framework (https://msdn.microsoft.com/en-us/library/bb902854(v=sql.110).aspx)

یکم راجع بهش اطلاعات بگیر ، در این روش هر کلاینت یه برنامه داره و یه دیتابیس! مثل حالت عادی تمام کارهاش هم انجام میشه بدون نیاز به اینترنت و با امنیت ، کارایی و سرعت بالا!
با وصل شدن لحظه ای اینترنت اطلاعات تو همه ی بانک های اطلاعاتی به صورت خودکار سینک میشه!
هر موقع کلاینت ها آنلاین باشن با سرور سینک هستن و در صورت آفلاین بودن به محض آنلاین شدن خودکار این اتفاق میوفته..!
خیلی هم سادس و کم هزینه :لبخند:
از نطر فنی توضیح بدید لطفا . نیاز به چه تخصص هایی در این روش داریم ؟ WIn APP میشه یا webApp

بنظرم روش جالبیه دوستان لطف کنند و روش ایشون را نقد کنند . مزایا و معایب را بگن بخصوص بحث هزینه نیروی انسانی و ...


بنظر خودم وب سرویس پیچیدیگی برنامه را بالا میبره

fafa_n6190
دوشنبه 14 اردیبهشت 1394, 11:49 صبح
با winApp میتونی این کار رو انجام بدی

sync framework یه فریم ورکه که یه RunTime داره و یه تابع sync داره که باید دائم صداش کنی (توی یه thread) ، در این روش scop هایی ساخته میشن که شامل جداولی از پایگاه داده هستن که لازم به sync شدنشون هست ، ORM شما در کلاینت ها و سرور باید یکی باشه ، دیتابیس هاتون رو به Sync framework میدین و این فریم ورک جداولی رو به دیتابیس هاتون اضافه میکنه که history ساخته شده جهت sync کردن جداول شماست. حالا اون تابع sync این عملیات رو براتون انجام میده!

csharpprogramer88
دوشنبه 14 اردیبهشت 1394, 12:02 عصر
با winApp میتونی این کار رو انجام بدی

sync framework یه فریم ورکه که یه RunTime داره و یه تابع sync داره که باید دائم صداش کنی (توی یه thread) ، در این روش scop هایی ساخته میشن که شامل جداولی از پایگاه داده هستن که لازم به sync شدنشون هست ، ORM شما در کلاینت ها و سرور باید یکی باشه ، دیتابیس هاتون رو به Sync framework میدین و این فریم ورک جداولی رو به دیتابیس هاتون اضافه میکنه که history ساخته شده جهت sync کردن جداول شماست. حالا اون تابع sync این عملیات رو براتون انجام میده!
ینی میگی نیاز به هیچ سروری نداریم ؟ خوده این فریم ورکه میاد و مدیریت میکنه ؟

با EF هم میشه براش کد زد ؟

fafa_n6190
دوشنبه 14 اردیبهشت 1394, 12:19 عصر
بله که با EF میشه ، پیشنهاد میکنم این لینک رو جهت آشنایی بیشتر مطالعه بفرمایید

Introduction to Sync Framework Database Synchronization (https://msdn.microsoft.com/en-us/sync/bb887608.aspx)

csharpprogramer88
دوشنبه 14 اردیبهشت 1394, 12:31 عصر
دوستان کسی درباره راه حل های
fafa_n6190 (http://barnamenevis.org/member.php?176576-fafa_n6190) نظری نداره ؟

Mahmoud Zaad
دوشنبه 14 اردیبهشت 1394, 12:50 عصر
دوستان کسی درباره راه حل های
fafa_n6190 (http://barnamenevis.org/member.php?176576-fafa_n6190) نظری نداره ؟

سلام
مساله ای که وجود داره این هست: در سیستم های حسابداری و مالی در حین کار نیاز به معرفی طرف حسابها و حسابهای کل و کالاها و ... هست، حالا فرضا در یک شعبه کاربری بیاد حسابی رو تعریف کنه با کد 801 برای هزینه آب و برق (فعلاً اینترنت هم قطع هست) همزمان کاربر دیگه ای تو شعبه دوم، یکسری حساب تعریف کنه و حساب هزینه آب و برق رو با کد 805 تعریف کنه. همزمان سازی اینها چطوری میشه؟ ایا باید یکسری محدودیت برای تعریف حسابها و گزارش گیری در نظر گرفت (مثلاً به کاربر بگیم فقط در زمان اتصال به اینترنت معرفی حساب و گزارشگیری کنه؟ که این همون داستان قبلی هست چون کاربر می خواد سند بزنه، اینترنت هم قطعه، حساب مورد نظرش هم تعریف نشده پس نمی تونه با سیستم کار کنه) یا مثلاً می خواد از حساب شرکتی که با چند شعبه کار می کنه گزارش بگیره اگه در شعبه ای برای فرد سند زده باشن، گزارش دقیق نخواهد بود.
اگه این موضوع حل بشه مشکل خاصی نخواهد بود.

SabaSabouhi
دوشنبه 14 اردیبهشت 1394, 12:52 عصر
دوستان کسی درباره راه حل های
fafa_n6190 (http://barnamenevis.org/member.php?176576-fafa_n6190) نظری نداره ؟


سلام
من با این framework آشنایی ندارم. اما ارزش آزمودن رو داره.
معمولاً این چیزهایی که مایکروسافت ارائه می‌ده دو حالت داره.
حالت اول اصلاً به درد نوع تفکر ایرانی نمی‌خوره، که خیلی راحت باید کنار گذاشته و فراموش بشه ( مثل Authentication و مخلفاتش )
حالت دوم اما خیلی خوبه، و کلی کارها رو راحت می‌کنه.
حالا باید دید که این از کدوم نوع هست. من که امیدوارم نوع دوم باشه، چند تا پروژه‌ی این‌تیپی انجام دادم و واقعاً
قسمت sync کردن اطلاعات کار بزرگی برده تو هر کدوم از پروژه‌ها. تو یکی از کارهام، این sync کردن در حد یکی از زیرسیستم‌ها
و بلکه بیش‌تر کار برد. واقعاً اگه چیز قابل اعتمادی باشه، فوق‌العاده هست.
اما در هر صورت از دوستمون fafa_n6190 بابت معرفی این framework سپاس‌گزارم.

صبا صبوحی

SabaSabouhi
دوشنبه 14 اردیبهشت 1394, 12:55 عصر
سلام
مساله ای که وجود داره این هست: در سیستم های حسابداری و مالی در حین کار نیاز به معرفی طرف حسابها و حسابهای کل و کالاها و ... هست، حالا فرضا در یک شعبه کاربری بیاد حسابی رو تعریف کنه با کد 801 برای هزینه آب و برق (فعلاً اینترنت هم قطع هست) همزمان کاربر دیگه ای تو شعبه دوم، یکسری حساب تعریف کنه و حساب هزینه آب و برق رو با کد 805 تعریف کنه. همزمان سازی اینها چطوری میشه؟ ایا باید یکسری محدودیت برای تعریف حسابها و گزارش گیری در نظر گرفت (مثلاً به کاربر بگیم فقط در زمان اتصال به اینترنت معرفی حساب و گزارشگیری کنه؟ که این همون داستان قبلی هست چون کاربر می خواد سند بزنه، اینترنت هم قطعه، حساب مورد نظرش هم تعریف نشده پس نمی تونه با سیستم کار کنه) یا مثلاً می خواد از حساب شرکتی که با چند شعبه کار می کنه گزارش بگیره اگه در شعبه ای برای فرد سند زده باشن، گزارش دقیق نخواهد بود.
اگه این موضوع حل بشه مشکل خاصی نخواهد بود.

سلام
دوست من، به نکته‌ی مهمی اشاره کردی. دقیقاً اگه این framework بتونه این نوع مسائل رو مدیریت کنه، کار بزرگی کرده.
حالا من یه مثال بد‌تر می‌زنم.
فرض کن یه نفر یه کد تعریف کرده. و شما که اینترنتت قطع هست، نمی‌دونی که من دارم این کد رو که گردشی نداشته حذف می‌کنم.
میای برای این کد یه سندی می‌زنی و براش گردش درست می‌کنی، غافل از این که من از این کد رو حذف کردم.
این یکی از بدترین حالت‌هایی هست که به نظر من می‌تونه پیش بیاد.
خیلی علاقه‌مند هستم ببینم راه حل مناسبی برای این شرایط توش پیش‌بینی شده یا نه.

صبا صبوحی

fafa_n6190
دوشنبه 14 اردیبهشت 1394, 13:02 عصر
سلام
مساله ای که وجود داره این هست: در سیستم های حسابداری و مالی در حین کار نیاز به معرفی طرف حسابها و حسابهای کل و کالاها و ... هست، حالا فرضا در یک شعبه کاربری بیاد حسابی رو تعریف کنه با کد 801 برای هزینه آب و برق (فعلاً اینترنت هم قطع هست) همزمان کاربر دیگه ای تو شعبه دوم، یکسری حساب تعریف کنه و حساب هزینه آب و برق رو با کد 805 تعریف کنه. همزمان سازی اینها چطوری میشه؟ ایا باید یکسری محدودیت برای تعریف حسابها و گزارش گیری در نظر گرفت (مثلاً به کاربر بگیم فقط در زمان اتصال به اینترنت معرفی حساب و گزارشگیری کنه؟ که این همون داستان قبلی هست چون کاربر می خواد سند بزنه، اینترنت هم قطعه، حساب مورد نظرش هم تعریف نشده پس نمی تونه با سیستم کار کنه) یا مثلاً می خواد از حساب شرکتی که با چند شعبه کار می کنه گزارش بگیره اگه در شعبه ای برای فرد سند زده باشن، گزارش دقیق نخواهد بود.
اگه این موضوع حل بشه مشکل خاصی نخواهد بود.

دوست عزیز وقتی شرکتی به بزرگی ماکروسافت میاد فریم ورکی ارائه میکنه قطعا فکر همچین مشکل پیش پا افتاده ای رو کرده!
کلید های جداول پایگاه داده شما میبایست uniqueidentifier باشند ... GUID (https://msdn.microsoft.com/en-us/library/ms187942.aspx)

csharpprogramer88
دوشنبه 14 اردیبهشت 1394, 13:12 عصر
دوست عزیز وقتی شرکتی به بزرگی ماکروسافت میاد فریم ورکی ارائه میکنه قطعا فکر همچین مشکل پیش پا افتاده ای رو کرده!
کلید های جداول پایگاه داده شما میبایست uniqueidentifier باشند ... GUID (https://msdn.microsoft.com/en-us/library/ms187942.aspx)


fafa_n6190 عزیز شما خودت با این مسئله ای که دوستمون گفتن برخورد کردید؟ ینی این فریم ورک این مسئله را کاملا حل کرده /؟


البته برای این مشکلات این جنینی شاید بشه با برنامه نویسی خیلی از مشکلات را حل کرد مثلا به کلاینت 1 اجاره تعریف سر فصل را ندیم یا مثلا کاربره فقط بتونه فاکتور صادر کنه و ...

malizergani
دوشنبه 14 اردیبهشت 1394, 13:19 عصر
سلام دوستان عزیز

بنده نظرم رو PowerPoint کردم مایلم دوستان عزیز ببینن و نظراتشون رو بدهند.

fafa_n6190
دوشنبه 14 اردیبهشت 1394, 13:19 عصر
هیچ کار لازم نیس بکنید ، خودش تمام این مشکلات رو handle میکنه...! اصن کارش همینه دیگه :لبخند: 4 تا رکورد خوندن پاس دادن که این صحبت هارو نداره ، اگه می خواست به این مشکلات بر بخوره کلا زیر سوال بود ماکروسافت! نوع کلید هارو GUID بگذارید ، دانلود کنید (https://www.microsoft.com/en-us/download/details.aspx?id=23217) ، نصب کنید ، مستندات رو مطالعه کنید ، استفاده کنید و لذت ببرید

NasimBamdad
دوشنبه 14 اردیبهشت 1394, 18:46 عصر
هیچ کار لازم نیس بکنید ، خودش تمام این مشکلات رو handle میکنه...! اصن کارش همینه دیگه :لبخند: 4 تا رکورد خوندن پاس دادن که این صحبت هارو نداره ، اگه می خواست به این مشکلات بر بخوره کلا زیر سوال بود ماکروسافت! نوع کلید هارو GUID بگذارید ، دانلود کنید (https://www.microsoft.com/en-us/download/details.aspx?id=23217) ، نصب کنید ، مستندات رو مطالعه کنید ، استفاده کنید و لذت ببرید


یعنی اون PK , FK رو GUID بذاریم ؟

میشه توضیح بدید در این مورد نوع GUID داریم ؟ کچاست ؟

csharpprogramer88
سه شنبه 15 اردیبهشت 1394, 17:46 عصر
هیچ کار لازم نیس بکنید ، خودش تمام این مشکلات رو handle میکنه...! اصن کارش همینه دیگه :لبخند: 4 تا رکورد خوندن پاس دادن که این صحبت هارو نداره ، اگه می خواست به این مشکلات بر بخوره کلا زیر سوال بود ماکروسافت! نوع کلید هارو GUID بگذارید ، دانلود کنید (https://www.microsoft.com/en-us/download/details.aspx?id=23217) ، نصب کنید ، مستندات رو مطالعه کنید ، استفاده کنید و لذت ببرید
fafa جان اگر بیشتر توضیح بدید ممنون میشم اگر لازم میبنین یک تاپیک جدا میزنم شما بحث را ادامه بدید . ظاهرا باید یک تکنولوژی خیلی خوب باشه برای پروژه های بزرگ

csharpprogramer88
سه شنبه 15 اردیبهشت 1394, 17:54 عصر
سلام دوستان عزیز

بنده نظرم رو PowerPoint کردم مایلم دوستان عزیز ببینن و نظراتشون رو بدهند.
بابت همکاریت ممنونم

شما در این روشی که فرمودی با مسئله هایی مثل پست 13 چیکار میکنی؟ ینی روش شما این مشکل را کاملا حل میکنه ؟


دوستان تا اینجا ظاهرا مناسب ترین روش ، روش fafa عزیز هست . کسی نظری نداره ؟

Mofid.m
سه شنبه 15 اردیبهشت 1394, 18:21 عصر
درود به همه دوستان
من یه سوال در مورد این روش دارم تقریبا شبیه سوال بقیه دوستانه اما با کمی تغییر

در نظر بگیرید صبح یه روز کاری که شعبه های شرکت شروع به کار کردن اینترنت وصل بوده و دیتابیس محلی با دیتابیس اصلی sync شده هستش.
حالا اینترنت قطع شده و هر شعبه فقط با دیتابیس محلی داره کار میکنه.
چون این نرم افزار یه نرم افزار حسابداری هستش فرض کنید در یکی از جداول دیتابیس مقادیر عددی مالی وجود داره و هر شعبه با توجه به تراکنش هاش این مقادیر رو به مقادیر جدید تغییر میدن. (ویرایش بعضی از رکورد ها که میتونه این مقادیر رو کم یا زیاد کنه)
همونطوری که گفتم اینترنت هم قطع شده ولی در زمانی که وصل بوده دیتابیس ها sync شده بودن
حالا چون اینترنت قطع شده پس این تراکنش ها روی دیتابیس محلی انجام میشه و با دیتابیس اصلی sync نمیشه.
حالا فرض کنید شعبه اول اومده این مقادیرو مثلا در ساعت 9 صبح به مقادیر جدیدی تغییر داده اما در شعبه دوم در ساعت 9:15 مقادیرو با تراکنش های خودش تغییر داده و همینطور هر شعبه ایی میتونه این کارو در زمانهای مختلف انجام بده.
مقادیر وقتی در دیتابس اصلی قرار نگیرن این محاسبات مالی درست انجام میشه؟
در زمان وصل شدن اینترنت عمل sync به چه شکلی باید صورت بگیره تا تراکنش هر شعبه در زمانهای مختلف دقیق انجام بشه؟

fafa_n6190
سه شنبه 15 اردیبهشت 1394, 18:29 عصر
یعنی اون PK , FK رو GUID بذاریم ؟

میشه توضیح بدید در این مورد نوع GUID داریم ؟ کچاست ؟


وقتی PK میسازید نوع داده های اون رو uniqueidentifier انتخاب کنید

Mofid.m
سه شنبه 15 اردیبهشت 1394, 18:33 عصر
البته وقتی مایکروسافت چنین framework ی رو معرفی میکنه حتما تکنیکی برای حل چنین مشکلاتی رو در نظر میگیره.

من از دیروز که به این تاپیک اومدم و مطالب دوستان رو خوندم و همینطور به لینکی که دوستمون fafa معرفی کرد رو مطالعه کردم این سوال برام مطرح بوده و پیش خودم در مورد چگونگی حل چنین مشکلاتی فکر کردم.

من فکر میکنم میشه دیتابیس اصلی رو با ساختاری متفاوت از دیتابیس محلی تعریف کرد (تقریبا شبیه هم هستند)
و در دیتابیس محلی جدای مقادیر دیتابیس اصلی از جداولی دیگر تشکیل شده باشه تا بتونه این تراکنش ها رو در اونجا ثبت کنه.
منظورم اینه که دیتابیس محلی تعیین میکنه که این شعبه در چه زمانی چه تراکنشی رو انجام داده و بعد از وصل شده اینترنت در پشت صحنه این دیتابیس های محلی عملیات خودشونو دوباره طبق زمانبندی روی دیتابس اصلی انجام بدن.

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

fafa_n6190
سه شنبه 15 اردیبهشت 1394, 18:44 عصر
درود به همه دوستان
من یه سوال در مورد این روش دارم تقریبا شبیه سوال بقیه دوستانه اما با کمی تغییر

در نظر بگیرید صبح یه روز کاری که شعبه های شرکت شروع به کار کردن اینترنت وصل بوده و دیتابیس محلی با دیتابیس اصلی sync شده هستش.
حالا اینترنت قطع شده و هر شعبه فقط با دیتابیس محلی داره کار میکنه.
چون این نرم افزار یه نرم افزار حسابداری هستش فرض کنید در یکی از جداول دیتابیس مقادیر عددی مالی وجود داره و هر شعبه با توجه به تراکنش هاش این مقادیر رو به مقادیر جدید تغییر میدن. (ویرایش بعضی از رکورد ها که میتونه این مقادیر رو کم یا زیاد کنه)
همونطوری که گفتم اینترنت هم قطع شده ولی در زمانی که وصل بوده دیتابیس ها sync شده بودن
حالا چون اینترنت قطع شده پس این تراکنش ها روی دیتابیس محلی انجام میشه و با دیتابیس اصلی sync نمیشه.
حالا فرض کنید شعبه اول اومده این مقادیرو مثلا در ساعت 9 صبح به مقادیر جدیدی تغییر داده اما در شعبه دوم در ساعت 9:15 مقادیرو با تراکنش های خودش تغییر داده و همینطور هر شعبه ایی میتونه این کارو در زمانهای مختلف انجام بده.
مقادیر وقتی در دیتابس اصلی قرار نگیرن این محاسبات مالی درست انجام میشه؟
در زمان وصل شدن اینترنت عمل sync به چه شکلی باید صورت بگیره تا تراکنش هر شعبه در زمانهای مختلف دقیق انجام بشه؟


1- sync ها بر اساس زمان انجام میشن راجع به بحث های ویرایشی آخرین ویرایش در دیتابیس اصلی خواهد بود
2- قسمتی از کار به دست خط برنامه نویس ربط داره! شما نباید موجودی حسابی رو به صورت ثابت تو یه سیستم حسابداری ذخیره کنی و بعد ویرایشش کنی
بلکه موجودی اون حساب باید کسر مجموع دریافت ها از پرداخت ها باشه! یعنی اسناد شما هستند که ثبت میشن و در نهایت موجودی اون حساب به وسیله گردش حساب باید تولید بشه ، وقتی گردش ها sync نشدن موجودی آپدیت نشده وقتی sync انجام میشه با اضافه شدن اسناد موجودی حساب آپدیت خواهد شد...!

NasimBamdad
سه شنبه 15 اردیبهشت 1394, 23:19 عصر
دانلود کردم . چندتا DLL داده . ولی نشد که ازش استفاده کنم . یعنی بلد نیستم

لطفا نمونه سورسی چیزی قرار بدید .

من فکر می کنم این SYNC رو اگه خود SQL انجام بده بهتره . سراغ Replecator بریم بد نیست

hamid_hr
چهارشنبه 16 اردیبهشت 1394, 12:34 عصر
فک نکنم برا سیستم حسابداری بشه دیتابیس پراکنده داشت
چون هر تراکنش باید به اطلاعات بروز شده دسترسی داشته باشه
به نظر من استفاده از یه ای پی استاتیک و یه وب سرویس و winapp راه حل مناسبتری هست

csharpprogramer88
چهارشنبه 16 اردیبهشت 1394, 17:31 عصر
فک نکنم برا سیستم حسابداری بشه دیتابیس پراکنده داشت
چون هر تراکنش باید به اطلاعات بروز شده دسترسی داشته باشه
به نظر من استفاده از یه ای پی استاتیک و یه وب سرویس و winapp راه حل مناسبتری هست
ینی شما میگی روش فافا خوب نیست؟

اینایی که گفتین چقدر هزینه داره ؟

hamid_hr
چهارشنبه 16 اردیبهشت 1394, 18:21 عصر
اینایی که گفتین چقدر هزینه داره ؟
برنامه نویسی رو نمیدونم
ip هر سال فک کنم 100000 تومن

csharpprogramer88
پنج شنبه 17 اردیبهشت 1394, 10:50 صبح
برنامه نویسی رو نمیدونم
ip هر سال فک کنم 100000 تومن
برای خریدش باید کجا مراجعه کنم ؟ Isp?

hamid_hr
پنج شنبه 17 اردیبهشت 1394, 11:54 صبح
همون جایی که adsl رو سفارش دادین

DPSxerex
شنبه 19 اردیبهشت 1394, 09:30 صبح
دوست عزیز به نظر بنده شما یک سرور در دفتر مرکزی بگذارید و همه کلاینت ها کانکت بشن به اون دیتابیس و کار هاشون رو انجام بدن بهتره

liberty_ir
جمعه 24 مهر 1394, 11:56 صبح
سلام . این تاپیک واقعا حیفه که بسته بشه . اونم تو زمانی که این همه استفاده از دستگاه های پورتابل زیاد شده.
من بر خلاف دوستان با درج اطلاعات در شعب مختلف مشکلی ندارم . چون از اساس اینکه سرفصل حساب ها در شعب تعریف بشه غلطه ؛ سر فصل حساب ها و اطلاعات اصلی باید در شعبه مرکزی و اطلاعات فاکتور ها (بدون صدور اسناد حسابداری) باید به مرکز انتقال داده بشه . پس همه اینها از نظر بیزینسی مشکلشون قابل حل هستش . حتی حذف اطلاعات رو میشه به حذف منطقی اطلاعات تغییر داد تا با خطای کلید خارجی هم مواجه نشیم .

سوال اصلی من اینه که : فرمودید ؛ کلید اصلی جداول رو از نوع guid تعریف کنید که این کار کلا از نظر منطق پایگاه داده ای غلط هستش . مخصوصا روی کلید اصلی که اطلاعات رو به صورت فیزیکال میچینه .البته من یه فیلد اطلاعاتی یونک برای این کار در نظر گرفتم اما نمی دونم میشه جایگزین روش شما کرد یا نه (غیر کلید).
دوم اینکه بر اساس منطق کاری ، هر شعبه باید اطلاعات مخصوص خودش و اطلاعات دفتر مرکزی رو ببینه و اطلاعات خودش رو انتقال بده . که من با اضافه کردن کد شعبه این مشکل رو حل کردم اما نمی دونم تو میکروسافت سینک میشه این حالت رو با فیلترینگ پوشش داد یا خیر .

و سوال آخر اینکه آیا میشه اطلاعات رو با یک دیتابیس جانبی (مثلا فایل Access) انتقال داد یا محدودیتی برای نوع بانک اطلاعاتی باید در نظر گرفت .

Love_Program
جمعه 24 مهر 1394, 15:00 عصر
بنظر من اصلا امکان پذیر نیست
یک بخشهایی رو میشه افلاین کار کرد اما بعضی ها رو باید حتما انلاین کرد

مثلا
یه سیستم صندوق رو در نظر بگیرید.موجودی یک شرکت عضو این صندوق امروز صبح 100 میلیون بوده و همه کلاینت ها سینک شدن و همه یه دیتای ثابت دارن
حالا ساعت 9 دو تا از شعبه ها قطع شدن.
طرف میاد از یه شعبه انلاین 80 میگیره و نمایندش از شعبه افلاین 30 میگیره.(سند ها هم فقط ثبت میشن و حساب و کتاب با سیستم مادر باشه)
موجودی در سیستم انلاین 20 میلیون و افلاین 70 م هستش
حالا افلاین ها انلاین بشن پولا کم میاد.

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

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

liberty_ir
شنبه 25 مهر 1394, 11:15 صبح
دوست عزیز همینطور که گفتم قطعا همه چیز به طراحی شما بستگی داره . اگه قرار باشه همه چیز از طرف مرکز کنترل بشه دیگه سیستم آفلاین قطعا امکانپذیر نیست .
اگه شما فروشگاهی کار کنید (فروشگاه زنجیره ای یا چند شعبه ای ) قطعا باید سیستم آفلاین رو داشته باشید ولی وقتی پای اسناد و کنترل موجودی از مرکز پیش میاد(مثل بانک هاو یا سیستم حسابداری محض یا متوالی) قضیه فرق میکنه . دیگه راهکار شما چیزی جز دیتابیس مشترک و یا وب سرویس نیست . اما وقتی شما قرار باشه در یک شعبه با موجودی همان شعبه کار کنید نیازی به آنلاین بودن نیست . در سیستم های فروشگاهی هر شعبه مستقل عمل کرده و هر شب مانده صندوق و اطلاعات رو به مرکز انتقال می دهند و اسناد حسابداری در مرکز صادر میشه.

من واقعا دنبال جواب سوال هام هستم تا کا رو شروع کنیم . متاسفانه نمونه کد یا راهنماهای خوبی در سطح اینترنت موجود نیست .
مثلا الان گیر کردم که اسکوپی که قبلا وجود داره چطور میشه آپدیت کارد و در صورت تغییر در ساختار دیتابیس چه بازخوردی از طرف سیستم ایجاد میشه !!