Я в основном разработчик ASP.NET, поэтому я не очень хорошо знаком с рекомендациями J2EE или WFP, шаблонами и т. Д., Но я чувствую, что проект, в который я вовлечен, мог бы быть лучше, но я не могу понять, что не так с архитектурой.
Какова лучшая (*) архитектура для гетерогенного распределенного 3-уровневого приложения, в частности, если я хочу реализовать систему, состоящую из:
- Серверная часть Java EE 5 на сервере приложений JBoss - предоставляет службы EJB, например, как SOAP, REST или JMS-бины
- Hibernate для баз данных SQL Server или Oracle
- .NET 4.0 WPF настольный клиент
- .NET 4.0 Silverlight веб-клиент
- веб-клиент JSP / pure-HTML
*
Я знаю, что, вероятно, невозможно определить «лучшую архитектуру», но мне просто интересно узнать мнения об архитектурных подходах, лучших практиках, шаблонах и т. Д.
Одна из очевидных проблем, которые я вижу в нашей архитектуре / дизайне, заключается в том, что связь веб-службы SOAP между клиентами .NET и серверной частью Java очень медленная, возможно, из-за проблем с задержкой. Весь пользовательский интерфейс очень вялый. И это с одним пользователем - в производстве мы ожидаем +/- 100 одновременных пользователей.
Буду признателен за любые комментарии / мнения.
Некоторые вопросы:
- Какие технологии вы бы порекомендовали для решения любого из компонентов, упомянутых выше, например, какой тип услуг (SOAP, REST, обмен сообщениями?)
- Как уменьшить задержку при обмене данными между клиентами .NET и серверной частью Java?
- Какие шаблоны / подходы посмотреть, например, с точки зрения клиентского кода WPF (шаблон MVVM?), связь с серверной частью Java (WCF?)
- Как вы защищаете (аутентификация, авторизация) такие службы J2EE при использовании клиента WCF?
- На какие архитектурные проблемы стоит обратить внимание и как их решить, например, с точки зрения безопасности, масштабируемости, производительности и т. д.
(Я прошу прощения, если этот вопрос не подходит для этого сайта, я вижу предупреждение "Вопрос, который вы задаете, кажется субъективным и, вероятно, будет закрыт", однако я ищу субъективные мнения, и я уверен, что другие, которые работают в смешанной среде .NET / Java, будут заинтересованы.)
Спасибо!