Я некоторое время занимался исследованиями и фактически создал прототип веб-службы ASP.NET в качестве DAL для нескольких веб-сайтов ASP.NET 2.0. Просто хотел бы попросить совета у более опытных разработчиков, которые успешно развернули DAL в качестве веб-службы. Каковы недостатки / риски развертывания DAL как веб-службы? Как лучше всего защитить или подтвердить использование этой веб-службы? О WCF не может быть и речи, я буду писать код на VS 2005.
Спасибо.
Я считаю, что самый большой недостаток такого подхода - дополнительные накладные расходы на вызов веб-сервиса. Если вам нужны частые запросы / обновления к DAL, это может стать довольно медленным.
Я считаю, что такой подход - своего рода чрезмерная инженерия, если вам действительно не нужно иметь физически отдельный DAL для разных потребителей и вам нужна дополнительная проверка / обработка в DAL (что в любом случае неверно).
Обеспечение безопасности может быть довольно простым. Вы можете использовать SSL вместе с аутентификацией IIS для интерфейса общедоступной службы.
Итак, это мои 0,03 доллара
Единственная реальная проблема, с которой я когда-либо сталкивался при раскрытии данных через веб-службу на основе ASMX, заключалась в том, чтобы придумать все методы, необходимые для эффективного получения данных. Иногда трудно иметь дисциплину, чтобы соблюдать уровень между приложением и базой данных.
Если вы выполняете развертывание в среде интрасети с AD, встроенная проверка подлинности Windows - отличный способ контролировать, кто может и не может взаимодействовать со службой. Полезно сгруппировать классы обслуживания по ролям потребителей, чтобы разрешениями можно было декларативно управлять в Web.config . Я предпочитаю хранить методы чтения в другом классе службы, чем методы вставки обновления и удаления
Избегайте болтливых вызовов службы. Конечно, в двухуровневой системе лучше избегать «болтливых» обращений к базе данных, но при увеличении количества уровней вы будете платить за болтливые вызовы. Выберите отправку более крупных объектов. Например, если у вас есть таблица с несколькими поисками, отправка объекта по сети с предварительно найденными значениями часто сэкономит вам второй или третий вызов и не вызовет чрезмерной нагрузки на систему.
Надеюсь, эти идеи помогут.
Давайте посмотрим на это с точки зрения эволюции проектов разработки "корпоративного" программного обеспечения:
Чтобы снова стать серьезным, приведенный выше рассказ помогает установить контекст веб-сервисов и понять проблемы, которые они призваны решать. Из этого контекста мы видим, что веб-сервисы действительно охватывают как слой данных, так и бизнес-слой. Целью сервисного уровня является обеспечение совместного использования общего набора правил несколькими приложениями. Отсутствие бизнес-слоя в сервисе дает программистам возможность писать свой собственный бизнес-код для каждого приложения, что противоречит цели использования сервисов в первую очередь.
Тем не менее, возможно, что в итоге все складывается в слои, где у вас есть сервисы сырых данных, которые являются частными для определенных частей бизнеса, а эти "сырые" сервисы, в свою очередь, используются для создания нисходящих сервисов, которые составляют слой бизнес-правил. Трудно сказать наверняка, чем на самом деле занимается бизнес. Однако у меня есть ощущение, что такой уровень разобщенности встречается реже.
Я бы не рекомендовал этого делать, пока вы не перейдете на WCF. В противном случае вы будете передавать все свои данные туда и обратно в текстовом XML через HTTP, что существенно замедлит работу. У вас также будет очень мало выбора в отношении безопасности, поскольку для шифрования используется только SSL.
WCF позволит вам отправлять двоичные данные через TCP / IP, именованные каналы или очереди сообщений и даст вам большую гибкость с точки зрения безопасности.