Приложение ASP.NET на трех физических уровнях - PullRequest
3 голосов
/ 18 сентября 2009

Для ясности, когда я упоминаю уровни в своем вопросе, я имею в виду физические уровни (то есть разные серверы для представления, приложения и базы данных)

У моей компании есть общедоступный веб-сайт, который в настоящее время построен как типичная двухуровневая система (веб-сервер и сервер базы данных).

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

По моему опыту, большинство приложений asp.net построены на двух уровнях. Само веб-приложение может иметь несколько слоев , но физически оно развернуто на двух серверах (веб и БД).

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

В двух словах может показаться, что веб-приложение выполняет вызовы веб-службы или WCF на прикладном уровне, который выполняет маршализацию данных в базу данных и из нее с использованием ADO (или L2S или EF).

Помогает ли ASP.MVC этого добиться? Делает ли это что-то проще или просто другим?

Есть ли где-нибудь хорошая ссылка или пример?

Ответы [ 5 ]

7 голосов
/ 18 сентября 2009

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

В конце концов, вы можете разбить свое приложение на дополнительный уровень в любом случае. Если бы это был я, я бы, наверное, создал бы самый глупый проход через уровень, если бы мне дали это «интересное» требование.

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

ASP.NET MVC не должен иметь никакого влияния, но вы, скорее всего, в конечном итоге будете использовать что-то вроде WCF. Для сортировки данных туда и обратно вы, вероятно, захотите использовать DTO, которые не привязаны к какой-либо конкретной базе данных или ORM.

Это не та ситуация, в которой я был бы рад оказаться. Повышенная сложность не приводит к повышению безопасности.

3 голосов
/ 18 сентября 2009

Гдэй Рик,

Я работаю в компании, имеющей такую ​​же многоуровневую политику в отношении безопасности.

У меня есть веб-приложение ASP.NET MVC на одном уровне, которое подключается к уровню приложения, на котором расположен веб-сервис, и является в основном фасадом для базы данных и мэйнфрейма. Примерно так же, как ваши настройки.

ASP.NET MVC делает эту настройку очень удобной и простой в использовании, поскольку вы можете легко создать проверенную объектную модель в приложении ASP.NET MVC. После того, как объект прошел все проверки верхнего уровня, вы можете легко перенести его на уровень приложения через веб-сервис.

Полагаю, это было бы легко сделать с классическим приложением ASP.NET, однако я думаю, что MVC делает все намного проще!

Посмотрите в моем блоге пример того, как я проверял свои модели перед отправкой на сервер приложений.

Ура, Michael

2 голосов
/ 18 сентября 2009

По моему мнению, ASP.NET MVC не поможет и не помешает этому сценарию. По сути, ваша модель будет представлена ​​не как Linq2Sql, Entity Framework или любой другой ORM, а из среднего уровня, вероятно, WCF.

Это представляет собой обычную проблему, связанную с аутентификацией и авторизацией, а именно с тем, как проходит аутентификация между уровнями. Но это уникально для MVC, решение WebForms будет иметь те же препятствия. Вы также потеряете биты проверки модели, которые ORM может предоставить и должен будет предоставить это сам в своем хранилище веб-сервисов, но это только вопрос реализации правильных интерфейсов.

0 голосов
/ 18 сентября 2009

Как упоминалось ранее ... MVC не имеет большого значения в этой ситуации. Самый близкий аналог, который у меня есть, это то, что у нас был финансовый клиент, который разделял их веб-сервисы на уровни ...

так что-то вроде 1) общедоступные веб-сервисы с балансировкой нагрузки 2) веб-сервисы 3) код приложения 4) код базы данных

Я не помню, были ли слои 3 и 2 физически разделены (какое-то время), но, по сути, первый слой был довольно тонким и просто бросал запросы через dmz во внутренний сервис.

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

Удачи!

0 голосов
/ 18 сентября 2009

Это странное требование. Это пришло от клиента? Вполне возможно, что необходимо обучение клиентов.

Я знаю, что системы J2EE можно разделить на три уровня: с веб-сервером на первом сервере приложений в середине и с БД на заднем конце, но я не слышал об этом в .NET.

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