На мой взгляд, основное отличие заключается в подходе «открытый» по сравнению с подходом «интегрированный стек». Microsoft любит предоставлять все в виде интегрированного стека, который разделяет общий вкус и подход. Java более дружественна к модели «принеси свою собственную x », где вы можете подключить свой любимый сервер приложений, менеджер транзакций и т. Д. Оба технологических стека позволяют выполнять как внутрипроцессный, так и удаленный вызов. с различными уровнями поддержки транзакций.
Действительно, WCF - это не новый стек технологий, а реорганизация и ребрендинг существующих элементов стека .NET. В частности, WCF взял на себя функции .NET Remoting, веб-служб и распределенных транзакций.
Вы ссылаетесь на «более распространенный в настоящее время подход, который заключается в том, чтобы просто включить бизнес-объекты в процесс ASP.NET веб-сервера». Это характерно только для нераспределенных приложений. Это простая модель, которая хорошо работает, когда все ваши объекты будут находиться на одном сервере. Это соответствует модели развертывания Microsoft «Scale Out». Вместо того, чтобы разделять уровни объектов по серверам, разместите все, кроме базы данных, на веб-серверах, а затем постепенно добавляйте идентичные избыточные серверы для масштабирования уровня веб-сервера.
В последнее время Microsoft активно продвигает сервис-ориентированную архитектуру, которая в большей степени зависит от WCF и удаленного вызова. Это рассматривается как ключ к облачной стратегии, которая позволит людям перемещать части или все их приложения на гибкие ресурсы в облаке (которые MS хотела бы разместить с Azure и т. П.).