Преобразование многоуровневых приложений в многоуровневые - PullRequest
0 голосов
/ 16 июля 2009

У меня есть веб-приложение, основанное на 3 слоях. Я предпочитаю развертывать это приложение на одном сервере, чтобы избежать накладных расходов, связанных с обменом данными между уровнями, если уровни разделены на разные физические уровни.

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

Например, в Visual Studio я могу создать три слоя в одном решении. Ссылки на проекты также легко создавать. Но что если в будущем Business Layer необходимо будет развернуть на другом физическом сервере. Каковы различные и эффективные способы взаимодействия пользовательского интерфейса с бизнес-уровнем. Как произойдет обмен между бизнес-уровнем и уровнем данных?

Ответы [ 2 ]

0 голосов
/ 02 августа 2009

Это должно быть больше, чем «возможно». То есть вы столкнетесь с определенными накладными расходами при проектировании и реализации, создавая систему, которая абстрагирует коммуникационный уровень. Если вы не уверены, что вам придется разделить слои, вы можете подумать о создании своей системы для In-Process, а затем перенести бремя разделения на комм позже.

Если вы уверены, что есть хороший шанс, что вам понадобится абстрагировать связь, посмотрите на что-то вроде WCF . Проектируйте свою систему в соответствии с Руководством по сервис-ориентированной архитектуре . Затем, когда вы находитесь на одной машине, вы можете использовать привязку на одной машине между слоями для скорости, а когда вам нужно переключиться на новую привязку, вы можете сделать это через конфигурацию.

0 голосов
/ 16 июля 2009

Мой общий совет: создавайте слои так, как будто они будут развернуты на разных уровнях. Поэтому обращайте особое внимание на дизайн, особенно на детализацию интерфейсов. Занятые интерфейсы (getFirstName, getFamilyName, getPhoneNumber ...) будут иметь серьезные накладные расходы при удалении (предпочитайте один метод. GetPersonDetails) Также учитывайте ошибки, которые могут возникнуть, когда слои разделены.

Теперь вы можете переносить доступ к слоям в Location Transparant API. CORBA, Java EE EJB - примеры того, как это сделать, но, конечно, вы можете написать свой собственный фасад.

Фактически технология удаленного взаимодействия, которую вы используете, зависит от вас, я парень из Java EE, поэтому я бы просто использовал EJB.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...