Зависит от типа приложения.
Настольные приложения
Имеет смысл, если сервер может работать на выделенном сервере. Не имеет смысла устанавливать сервер и графический интерфейс на каждом рабочем столе (для большинства приложений). Затем используйте разные проекты / библиотеки для разделения пользовательского интерфейса / бизнес-логики.
Веб-приложения
Да. Многие веб-приложения имеют отдельный уровень обслуживания и используют SOAP для связи между графическим интерфейсом пользователя и уровнем обслуживания.
Гнезда
Использование ванильных розеток сегодня редко бывает хорошим выбором. Зачем тратить энергию / время на создание собственного протокола и реализацию, когда доступно несколько отличных инфраструктур IPC.
Обновление в ответ на комментарий
Разделяй и властвуй. Разбейте пользовательский интерфейс на как можно более мелкие компоненты, чтобы их можно было повторно использовать. Поместите эти компоненты в отдельный проект / DLL. Примером компонента может быть UserTable, который представляет список всех пользователей (с учетом зависимости интерфейса IUserService
).
Не пытайтесь повторно использовать весь слой пользовательского интерфейса, поскольку он обречен на провал. Причина в том, что если вы попытаетесь создать пользовательский интерфейс, который должен быть настраиваемым и универсальным, вы, вероятно, в конечном итоге будете тратить на это больше времени, чем это потребовалось бы для создания конкретного пользовательского интерфейса с использованием повторно используемых компонентов. И, наконец, вам нужно добавить небольшие «хаки», чтобы внести незначительные изменения в общий уровень пользовательского интерфейса для каждого приложения. Это закончится в emss.
Вместо этого используйте вышеупомянутые компоненты для создания определенного пользовательского интерфейса для каждого приложения.