This is a design question, I guess there going to be several suggestions (I hope so!)
We are a small travelling agent office, we are developing a software for our need. We have 30 clients on the local LAN, sometime later some other 5-10 from outside the office. (This will be agents on route).
Would you create a WCF service for this scenario or just leave the DL in the client (for direct access to the SQL)??
Our DataAccess Technology is EntityFramework 4.0 (4.1), ALL clients are Windows 7 based.
About the travelling agents, wouldn’t it be much more simple to just use a VPN for the agents connection??
We have plans to supply our guides (outside the office ) with 3G tablets in about 1 year from now.
Developing clients with a DL is of course much more straight forward solution, but our plans for the near future will require some kind of service. The tablets application will have a much more simple interface and functionality. So maybe developing a WCF service dedicated for the tablets will be better?
Our first consideration is time, we are in great need for a working software.
Well, I hope I managed to share with you our thoughts clearly enough.
Thank you for reading.
I think one technology that would be a) very well-suited to your needs, and b) doesn’t impose a huge overhead on your development effort would be WCF Data Services.
This is a REST-based WCF service based on a model – like your Entity Framework model.
Check out:
I would see clear benefits in architecting a new solution from the get-go to use a service-based approach – even if your local LAN client might end up not using that service layer. Thinking in services, thinking also about the limitations of sending data across a potentially slower link than your LAN usually helps avoid silly mistakes like loading 200’000 customers into a dropdown box and stuff like that…
Having a service layer also makes your client app much less dependent on the actual database technology – that client might be a Winforms, WPF or Silverlight app, a web site, a tablet – you name it. If they all share the service layer, development of the client app will become less of a burden – the majority of your work will be in your data model and your service layer (which is shared across all clients).