I am developing an accounting system for a customer. This application has some special requirements. I leave the accounting system detail which are specific to accounts. I mention those points which are confusing me.
The application should work in Online and Offline environment. If user is working and suddenly Application goes offline User should be able to work offline. All offline work is stored in local database and sync next time to central database when Application connects to the internet.This application has many users and all will work at same time on same information.
For Example If a user enters an inventory item it is possible that another user also enter the same item at that time. Application should be able to validate correct information and prohibits user to duplication.
User local database must be updated all times either other users are working or not. If other users are working all updated information should be available in local database to ensure when user goes offline all information is updated.
The question is How to develop this kind of application? Is there any standard way to achieve this target? Is there any standard or non standard pattern to build this kind of software?
Please note I am using C# Dot Net and Intend to use .NET Remoting or WCF or ASP.NET MVC for this application.
Any kind of help will be appreciated.
Thanks.
Tim McCarthy’s book .NET Domain-Driven Design with C#: Problem – Design – Solution designs and implements a system with similar requirements. It is a little dated, but I think would point you in a good direction. (look at page five, where he lists the requirements of the system the book is designing, they are similar to yours.)
He uses C#, WCF, Microsoft’s Sync Framework, Smart Clients and more. He states that as of the printing of the book the Entity Framework was not available with Visual Studio and so he creates his own (which is OK, but I think the book would have been much better if he had been able to include EF.)
I hope that helps!