I am new, so forgive me if my question is mistaken or anything, just give me an alert and I'll be glad to fix it.
Me and my team is about to develop a system where the database is located in a private server, and the applications is distributed between clients on distant location.
It is actually a simple CRUD application, but our primary concern is how poor the internet connection on some remote clients.
I thought to give a try to WCF queue message so that when the connection is down, I can save the message to later send it again when it is up, but I don't have a real clear solution in mind.
Currently, my solution would be something like this :

CLIENT
MySolution.sln
-- MyDataAccess
---- Entities (Contains my object class definitions and properties)
---- Repositories (Handles database communication)
---- Services (Handles message queue to server CRUD)
-- MyClassLibraries (Contains third party's DLLs)
-- MyHelper (Contains helper classes and functions)
-- MyCore (Main application project)
---- Model
---- View
---- ViewModel

and for the server :

SERVER
-- MyBackgroundService (Responsible for fetching incoming message and doing CRUD to database)

Is there a better solution to this? I am not good enough yet to see it.
Please let me know if I violate some rules here.
Cheers !


You can query data in a database (ask it questions).
You can look up data from a database relatively rapidly.
You can relate data from two different tables together using JOINs.
You can create meaningful reports from data in a database.
Your data has a built-in structure to it.
Information of a given type is always stored only once.
Databases are ACID.
Databases are fault-tolerant.
Databases can handle very large data sets.
Databases are concurrent; multiple users can use them at the same time without corrupting the data.
Databases scale well. 


In short, you benefit from a wide range of well-known, proven technologies developed over many years by a wide variety of very smart people.

If you're worried that a database is overkill, check out SQLite.
