Я рад видеть, что у вас есть некоторый реальный опыт построения корпоративных архитектур и вы понимаете последствия различных архитектур.Я видел многих консультантов, которые только что прочитали книгу о какой-то новой модной технологии ...
Вариант 1, безусловно, самый прагматичный и самый доступный.Вы бы создали приложение, которое необходимо сейчас, и не вкладываете средства в услуги, которые могут или не могут быть использованы в будущем.Но, насколько я понимаю из ваших описаний, это может быть трудно продать покупателю.
Если вам придется использовать распределенную архитектуру (вариант 2 или 3), я все равно постараюсь поставить столько женасколько это возможно на сервере портала.С этой целью термин бизнес-логика должен быть определен очень узким образом.Все, что даже удаленно связано с представлением (пользовательские настройки, структурирование данных для целей представления, уже подготовленные отчеты и т. Д.), Объявляется логика представления , поэтому оно может быть реализовано на сервере портала.Поэтому, даже если вы не можете избежать дублирования и сложности, связанных с удаленным взаимодействием, вы можете ограничить его меньшим количеством областей.(В зависимости от рассматриваемой проблемы вы можете получить базу данных на сервере портала и базу данных на сервере бизнес-логики, которые лучше объединить в один, потому что между ними существует так много ссылок на данные. Надеюсь, это не такздесь.)
Написание многократно используемого сервиса с учетом только одного приложения, согласно моему опыту, является потраченной впустую инвестицией.Интерфейс servcie станет более сложным для этого отдельного приложения, часть интерфейса никогда не будет использоваться и вряд ли будет протестирована (потому что он был создан для какого-то предполагаемого будущего приложения), и когда второе приложение, наконец, прибудет, понимает, что оно имеет довольно разные требования, чемпредусматривается.Таким образом, сервис должен быть изменен, а уже существующее приложение должно быть изменено.Поэтому не начинайте создавать сервисы, если у вас есть как минимум два (лучше три) приложения, которые существуют или находятся в процессе реализации.Это окупается с точки зрения денег и качества интерфейса службы.
Этот совет не очень конкретен, но также описывает ваше описание бизнес-требований приложения.Вы, вероятно, не можете предоставить больше информации из-за подписанного вами соглашения о конфиденциальности.Но я часто обнаруживал, что бизнес-требования помогают спорить за или против варианта.Например, требования, связанные данные, владение данными и связанные процессы могут, возможно, лучше разграничить системы, чем технические соображения.