Question

I'm mostly an ASP.NET developer, so I'm not very familiar with either J2EE or WFP best practices, patterns etc, but I feel that the project I'm involved in could have been done better, but I can't quite put my finger exactly on what's wrong with the architecture.

What is the best(*) architecture for a heterogenous distributed 3-tier application, specifically, if I wanted to implemented a system consisting of:

  1. Java EE 5 back-end on JBoss application server - exposes EJB services e.g. as SOAP, REST or JMS beans
  2. Hibernate to SQL Server or Oracle databases
  3. .NET 4.0 WPF desktop client
  4. .NET 4.0 Silverlight web client
  5. JSP / pure-HTML web client

* I know it's probably impossible to define the "best architecture", but I'm just curious about the opinions on architectural approaches, best practices, patterns etc.

One of the obvious problems I see in our design/architecture is that the SOAP Web Service communication between the .NET clients and the Java back-end is very slow, probably due to latency issues. The whole UI experience is very sluggish. And that's with a single user - in production we expect +/- 100 concurrent users.

I'd appreciate any comments/opinions.

Some questions:

  • What technologies would you recommend to address any of the components mentioned above, e.g. what type of services (SOAP, REST, messaging?)
  • How to reduce the latency in communication between the .NET clients and the Java back-end?
  • What patterns/approaches to look at, e.g. in terms of the WPF client code (MVVM pattern?), communication with java back-end (WCF?)
  • How do you secure (authentication, authorization) such J2EE services when using a WCF client?
  • What are the architectural issues to look out for and how to address them, e.g. in terms of security, scalability, performance, etc?

(I apologize if this question is inappropriate for this site, I see a warning "The question you're asking appears subjective and is likely to be closed", however what I'm looking for are subjective opinions and I'm sure others who are working in a mixed .NET/Java environment would be interested.)

Thanks!

Was it helpful?

Solution

The architecture for this project was too complicated.

I would have made the following changes:

  • use .Net on the backend to reduce the number of technologies
  • drop the WPF client and use Silverlight out of browser as windows client
  • use only async calls to the backend to keep the UI responsive
  • use wcf web sockets to talk to the backend
  • use html5 as your web UI, this also supports web sockets so you have a single way to talk to your backend

web sockets: http://tomasz.janczuk.org/

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top