Уровень доступа к данным как веб-сервис - это хорошая идея? - PullRequest
6 голосов
/ 18 августа 2010

Я некоторое время проводил исследования и фактически создал прототип веб-службы ASP.NET в качестве DAL для нескольких веб-сайтов ASP.NET 2.0.Я просто хотел бы попросить совета у более опытных разработчиков, которые успешно развернули DAL как веб-сервис.Каковы недостатки / риски развертывания DAL в качестве веб-службы?Каков наилучший способ обеспечить или аутентифицировать использование этого веб-сервиса?WCF не может быть и речи, я буду кодировать в VS 2005.

Спасибо.

Ответы [ 4 ]

15 голосов
/ 18 августа 2010

Давайте посмотрим на это с точки зрения эволюции проектов разработки программного обеспечения "Enterprise":

  1. Начните с очень простого, хорошо организованного и, возможно, нового приложения с небольшими проблемами обслуживания (еслиты счастливчик).Программисты могут быть недавними выпускниками, но система молодая или достаточно чистая, они могут быть эффективными и быстро реагировать на запросы об изменениях.Большая часть кода базы данных может использовать хранимые процедуры.В этом не участвует администратор БД, нет официальной спецификации или дорожной карты.
  2. Приложение растет.Часто требуется, чтобы несколько программистов работали в одних и тех же частях системы одновременно.Новые градиенты открывают систему управления исходным кодом, чтобы помочь им обмениваться кодом между несколькими программистами и отойти от хранимых процедур в пользу n-уровневого дизайна или ORM, чтобы упростить версию кода базы данных.Это работает хорошо, пока каждая отдельная функциональная область достаточно изолирована.Теперь администратор базы данных может начать помогать настраивать запросы.Спецификации до сих пор нет, но может быть дорожная карта высокого уровня или список пожеланий.
  3. Это в конечном итоге превращается во взаимосвязанную систему приложений, которая выросла органически, а не по дизайну.Запросы на изменение становятся сложными, поскольку изменения в одной области имеют незначительные последствия в других.Чтобы решить эту проблему, когда несколько приложений обращаются к одной и той же базе данных и нуждаются в совместном использовании общей и сложной бизнес-логики, программисты обращаются к сервис-ориентированной архитектуре (веб-сервисам).Старые данные и бизнес-уровни анализируются, объединяются и реорганизуются в общий набор веб-сервисов.Большинство программистов теперь даже не знают, как подключиться к своей базе данных - это разрешено делать только тем, кто работает с основными службами, и даже они, как правило, оставляют любой фактический SQL команде DBA.Если модульное тестирование еще не используется, оно теперь обнаруживается как часть настройки системы непрерывной интеграции или системы отслеживания проблем.
  4. Система продолжает расти, но бизнес растет еще быстрее.Вещи обычно работают;Качество хорошее, производительность не отличная, но все же приемлемая.Теперь определенно есть трекер спецификаций и проблем;на самом деле, невозможно сделать что-либо, для чего с ним не связан номер для отслеживания.Проблема в том, что скорость изменения слишком медленная.Уровни процесса между программистами и приложениями не позволяют им идти в ногу с бизнесом экономически эффективным способом.Кто-то открывает гибкие методы.
  5. Вернитесь к первому шагу.

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

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

4 голосов
/ 18 августа 2010

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

Если вы развертываете в среде интрасети с AD, встроенная проверка подлинности Windows - отличный способ контролировать, кто может и не может взаимодействовать суслуга.Полезно сгруппировать классы обслуживания по ролям потребителя, чтобы можно было декларативно управлять разрешениями в файле Web.config .Я склонен хранить методы чтения в другом классе обслуживания, нежели вставлять методы обновления и удаления

Избегать разговоров сервисов.Конечно, в двухуровневой системе лучше избегать разговоров с базой данных в чате, но вы платите водителю за разговоры в чате при увеличении количества уровней.Выберите, чтобы отправить большие объекты.Например, если у вас есть таблица с несколькими поисками, отправка объекта по проводу с предварительно проверенными значениями часто экономит вам второй или третий вызов и не должна вызывать чрезмерную нагрузку на систему.

Надеюсь, эти идеи помогут.

4 голосов
/ 18 августа 2010

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

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

Обеспечение безопасности может быть довольно простым. Вы можете использовать SSL вместе с аутентификацией IIS для вашего интерфейса общедоступной службы.

Итак, это мои $ 0,03

3 голосов
/ 18 августа 2010

Я бы рекомендовал против этого, пока вы не перейдете в WCF.В противном случае вы будете передавать все свои данные назад и вперед в текстовом формате XML по HTTP, что существенно замедлит работу.У вас также будет очень мало выбора в отношении безопасности, поскольку вы ограничены SSL для шифрования.

WCF позволит вам отправлять двоичные данные по TCP / IP, именованные каналы или очереди сообщений, а также позволит вам многоегибкости с точки зрения безопасности.

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