2010-07-24 4 views
6

Я хотел бы лучше понять причины модели сервера приложений .NET по сравнению с тем, что используется большинством серверов приложений Java.Различия между серверами приложений .NET и серверами приложений Java

В большинстве случаев, которые я видел с помощью веб-приложений ASP.NET, бизнес-логика размещается в процессах asp.net веб-сервера. Другим распространенным подходом является физический или логически различный уровень, на котором размещаются ваши бизнес-объекты, а затем отображаются как веб-службы или доступны через механизмы, такие как WCF. Последний подход обычно, но не всегда, кажется, используется, когда требуется более высокая шкала. В дни объектов COM я видел сервер Microsoft Transaction Server (MTS) и более поздний COM + хостинг, используемый для размещения COM-объектов, содержащих бизнес-логику, с MTS (теоретически), управляющим временем жизни объекта, транзакциями, параллелизмом yada yada. Эта модель в основном, похоже, исчезла на земле ASP.NET.

В мире Java у вас может быть Apache с Tomcat как контейнер сервлетов и ваши бизнес-объекты, размещенные в Tomcat. В этом случае Tomcat обеспечивает аналогичную функциональность для того, что MTS предоставила в мире .NET.

Несколько вопросов:

  1. Почему принципиальное различие в Microsoft против Java подходит к серверам приложений? Это должно было быть выбором архитектуры/дизайна, когда эти рамки были созданы.
  2. Каковы плюсы и минусы каждого подхода?
  3. Почему Microsoft отступила от модели хостинга сервлетов в режиме MTS (которая похожа на модель хостинга сервлетов Tomcast) на более распространенный текущий подход, который заключается только в том, чтобы иметь бизнес-объекты как часть процесса ASP.NET веб-сервера?
  4. Если вы хотите реализовать подход типа MTS или подход типа Tomcat в приложениях ASP.NET сегодня, я предполагаю, что общим шаблоном будет размещение бизнес-объектов в каком-то IIS-процессе (возможно, на каком-то другом физическом или логическом уровне) и доступ через WCF (или стандартные веб-службы asmx, что угодно). Это правильное предположение?

ответ

2

К моему способу мышления основное различие заключается в «открытом» подходе и подходах «интегрированного стека». Microsoft любит предоставлять все как интегрированный стек, который имеет общий вкус и подход. Java более дружелюбен к «принесите свою собственную модель« x », где вы можете подключить ваш любимый сервер приложений, диспетчер транзакций и т. Д. Оба стека технологий позволяют выполнять вызовы в процессе, а также удаленный вызов с различными уровнями поддержка транзакций.

Действительно, WCF - это не новый технологический стек, а реорганизация и ребрендинг существующих элементов стека .NET. В частности, WCF взял на себя функции .NET Remoting, Web Services и распределенных транзакций.

Вы ссылаетесь на «более распространенный текущий подход, который заключается только в том, чтобы иметь бизнес-объекты как часть процесса ASP.NET веб-сервера». Это распространено только для нераспределенных приложений. Это простая модель, которая хорошо работает, когда все ваши объекты будут находиться на одном сервере. Это следует за моделью развертывания Microsoft «Scale Out». Вместо того, чтобы разделять уровни объектов между серверами, размещайте все, кроме базы данных, на веб-серверах, а затем постепенно добавляйте идентичные избыточные серверы для масштабирования уровня веб-сервера.

Microsoft в последнее время активно продвигается на сервис-ориентированной архитектуре, которая в большей степени зависит от WCF и удаленного вызова. Это рассматривается как ключ к стратегии облака, которая заставит людей перемещать части или все их приложения на гибкие ресурсы в облаке (которую MS хотела бы разместить с Azure и т. П.).

+0

Я должен разделить свой ответ на 3 комментария из-за длины. Я полностью понимаю ваш вопрос об открытии/приведении своего собственного подхода x к интегрированному подходу к стеку, но то, о чем я спрашиваю, объясняется тем, что не из-за различий в философском подходе, а с технического и архитектурного уровня. Я не понимаю, почему модель Microsoft удовлетворяет потребности в приложениях Microsoft и почему модель сервера приложений Java делает то же самое для приложений Java. – Howiecamp

+0

(часть 2) - Архитектурно (с точки зрения общего требования к приложениям), в обоих случаях должны присутствовать те же проблемы/проблемы. Что касается WCF, я просто использовал его в качестве примера того, как веб-приложение .net может разговаривать с каким-то другим логическим или физически различным процессом. Это может быть строка can-and-string. Это не относится к моему вопросу. – Howiecamp

+0

(часть 3). Очевидно, что хостинг объектов внутри процесса asp.net веб-сервера работает, если вам не нужна распределенная архитектура. Я просто говорю, что на земле Microsoft этот подход более распространен. Вам нужна распределенная система, если вы хотите, например, распределить нагрузку на обработку. Мне интересно, если оригинальный подход Microsoft к МТС дал вам эту возможность, почему они тогда, по сути, сосредоточились на МТС и больше ориентировались на все-местный подход? – Howiecamp

Смежные вопросы