开发者

Best practices for a heterogeneous .NET WPF & J2EE 3-tier architecture

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开发者_JS百科-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!


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/

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜