views:

25

answers:

3

In the context of a multi-user business application in a small office, what are the disadvantages of installing the client on each PC and having them connect directly and remotely to a SQL server database on a central server?

This seems to avoid the need to include .Net remoting (or similar) technology and so install DLLs on the central server.

A: 

Disadvantages:

  • rollouts can be an adventure - ClickOnce, MSI, or other?
  • user rights on the desktop - what is needed?
  • updating strategy needs some thought
  • Service Pack + .NET version deployments

It sounds like you were thinking of having users run from a network share ("central server")?

Are you considering your desktop application to be distributed using a ClickOnce deployment, with the package available on the web? What about rolling out software via automated deployments with Group Policy?

p.campbell
Thanks p.campbellRollouts - I think an MSI install - what issues could there be (provided code included to connect to SQL server remotely)?User rights - any additional problems over and above a remoting app?updating - updates to be downloaded from web and run by userservice pack etc - any additional problems over and above a remoting app?
stt
This is in the context of a small office (say 10 staff). So simple download of msi from web site and then each user (or IT guru) installs on each PC (no IT department so no automated deployments needed).
stt
A: 

All the business logic would have to be encoded in the client, which you can see as a disadvantage (since you cannot rewrite it without deploying new clients) or as an advantage (since you transfer computing resources to the clients).

Depending on how you connect to the SQL server, you may have to worry about security issues. However, if it is an in-house solution running on the local LAN, you can probably neglect this.

Joachim
Not so, as we can deploy separate dlls for UI, business logic, domain model etc - all these dlls deployed on each client.If we need to re-write, we overwrite relevant dll on update installSecurity is an issue but we just need to avoid SQL Server accepting unauthorised connections from internet connection
stt
Joachim, sorry I see I missed your point; of course any rewrite would need a client update but I'm comparing with a remoting app, where business logic would probably be deployed on client as well. So no major difference there.
stt
A: 

The disadvantage of connecting directly to any relational system is the problem of tight coupling. Your software's implementation becomes at least partially based upon the back end database. If that ever changes or becomes modified, it might necessitate maintenance of your app.

If, however, it's a small app used by a relatively small number of people, no big deal.

Any time you tight couple to a RDBMS think about what kind of object persistence issues might arise in the future if things change.

kmarks2
We are using NHibernate and can swap over database easily by changing hibernate.cfg.xml. That would require a simple update on client, but of course more work on the server.
stt
Good point, I ignored this when responding.
kmarks2