We have a fairly large enterprise, multi-tier, multi-layer solution built on .Net 3.5. The system is a Service Oriented Architecture (WCF Services) with an ASP.Net MVC User interface fronting it all.
Some of the guys in the team are working on Tooling for the system, and are implementing these as WPF Rich Client Architectures that connect directly to the database (or other data sources).
Somehow this just does not feel right to me for the following reasons:
- This would require that the SQL Server would need to be accessible by a number of machines (who are running the tools) directly. Isn't it best practise to only ever allow your application Tier to connect to the database tier? Pass-through authentication will be used anyway for auditability so the overhead of managing multiple login accounts is not an issue.
- Duplication (or at least distribution) of the business logic would have to occur. Instead of hosting the business logic on the server to be reused, it would have to reside on each of the client machines.
- Maintenance of multiple client installations: Now all these machines have to be updated separately every time a new version of the tool is released. Okay, you could still use something like one-click to keep it automatically updated.
etc., etc.
I suggested a Rich Internet Architecture for the tools so that we could make use of the extended functionality that the client machines can then supply (which the browser may not be able to do or would just be that much harder on the browser). At least in this scenario the main business logic would still be held in the services layer on the application servers, and there would be no need for any direct connections to the SQL Servers.
I can understand using Rich Clients for applications like word or excel, but if you already have a complete multi-tier solution, surely it's not the best way to do it?!?
I'd like to get a good discussion on the topic going since I don't think this is one of those things that can easily be answered by one line responses (I may be wrong ;-).
What do you think? What have you guys experienced in the past? Where can I find resources to prove or disprove my points above?
See also: Google Earth - Rich Client or Rich Internet Architecture?