Как бы вы позволили по физическому разлучению UI / BL в решении ASP.NET?

StackOverflow https://stackoverflow.com/questions/4221302

Вопрос

Глава 19: физические ярусы и развертывание На MSDN описывается «распределенное развертывание» (см. Рисунок 2). Все хорошо и хорошо.

По моему опыту, мы всегда развернули наши веб-системы в соответствии с тем, что они описывают как «недиспределенное развертывание» (рисунок 1). Мое понимание в том, что в мире Microsoft «сервер приложений» как отдельная вещь на самом деле не существует (как оно делает в мире Java), потому что это эффективно «запечено» в ОС / Windows.

Таким образом, мой вопрос, если вы должны были распространять логику UI и Business (BL) на разные серверы / ярусы, как бы они общались?

Я знаю, что один ответ - использовать «сервисный слой» - каковы альтернативы? Как бы вы сделали это? Как бы он выглядел из перспективы кода?

Это было полезно?

Решение

Прежде всего. Не делай этого. Просто нет. Вы в мире боли. Логические и физические слои разные вещи. Логическое разделение накладных ярусов - хорошая идея. Физическое разделение ярусов применения чаще всего не является рецептом катастрофы. Если существует хорошая причина развертывания (общий платежный процессор на другой коробке), конечно, иди прямо вперед. Вы можете использовать стандартные механизмы, которые мы все знаем и Love - WCF, MSMQ, HTTP, ... выберите свой яд. Но не принимайте накладные расходы и сложность ради того, чтобы жить до некоторого мифического идеала в белой бумаге MSDN.

Другие советы

Серверы приложений были приготовлены как идея, чтобы помочь рационному ресурсу: вычислить мощность в среднем уровне. Эта идея пришла из земли мэйнфрейма, изначально, где ЦП был дефицитным и дорогим, и, следовательно, большая часть времени и усилий, и деньги были потрачены на выделение CPU Mainframe различным пользователям, дроссельной нагрузке, сохраняя нагрузку с базы данных, «пассивируют «Сделки до нагрузки не уменьшится после нескольких часов, и так далее. В те дни люди потратили миллионы долларов на программное обеспечение, которое сохранило отслеживание транзакций на мэйнфрейм, чтобы иметь возможность выполнить «Redback» - во внутренней стоимости учета на использование экземпляра $ ive Mainframe. Да, люди провели Boatloads деньги, чтобы они могли сделать биллинг на внутренние отделы для использования мэйнфрейма.

Дело в том, что Intel (а затем AMD) Cisco (et al), EMC, Microsoft и Linux, сделали всю идею. Вычислительные работы стали дешевыми. Действительно дешево. На самом деле действительно, действительно не надо рационально расти в среднем уровне. Какой сервер Dual-CPU идет в эти дни? Сколько из них вы могли бы развернуть для годовой зарплаты одного этого парня? Это инверсия старой экономики Mainframe Computing, где вычисление было дорогостоящим, скудным ресурсом, и люди были относительно (!!) дешево. Сейчас люди - это дорогостоящая часть, а вычислитель дешево.

Серверы приложений, и все колоколы и свистки, которые они имеют для ограничения доступа к вычислению или рассылке, или дросселировать его или даже «мониторинг» транзакций для целей платующих обровне .... Эти вещи не нужны, когда у вас есть стойки Cheap серверы AMD.

Другая вещь приложений серверов, сделала защиту базы данных из рабочей нагрузки. По сути, разгрузочная работа с сервера БД. Время было, разработчики поставили бизнес-логику в хранимой процедуре и, бум, было ваше приложение. Но были проблемы масштабируемости с этим подходом. Теперь, хотя хранящиеся пропыты являются быстрыми и эффективными. Серверы баз данных могут масштабироваться, дешево. Скорее всего, у вас нет одной из толькой рабочей нагрузки Top-100 в мире, которые нельзя нести на аппаратном обеспечении Intel, с сохраненной логикой PROC.

Однако одна серьезная проблема с хранимым подходом на прочее подхождение состоит в том, что оно все еще сложно автора хранить Procs на основных языках (Java, C #, VB и т. Д.), И их управление. Да, я знаю о SQL CLR, а Java VMS управляет БД. Но это не основные подходы. Кроме того, администратор БД не понравится код Jockeys, испортил свои графики использования. По этим причинам все еще есть желание писать бизнес-логику на отдельном языке, посвященном цели. И все еще есть желание бегать и управлять этой логикой на выделенные вычислительные ресурсы. Но ... традиционный «прикладной сервер» ?? Нет, это не имеет смысла.

Поместите всю свою логику на сервер Intel и позвольте Er Rip! Если вам нужна больше масштаба, клонировать коробку. Вся бизнес-логика нестандартна (справа?), Так что вы можете масштабировать. Используйте 3 «приложение» серверных машин, или 4 или 5 или даже вам нужно. Все работает точно тот же код. Клоны друг друга. Независимо от того, сколько бизнес-логических машин у вас есть, не распространяйте рабочую нагрузку. Для максимальной масштабируемости стремится сохранить каждую транзакцию на одну коробку. Это рецепт эффективности и оптимального использования ресурсов.

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top