Ориентированные на сервис приложения
Сервисы трансформировали наше представление об Интернете и о том, как его использовать для создания программного обеспечения. До сервисов Интернет был в основном средством размещения кросс-платформенных пользовательских интерфейсов с низкой стоимостью развертывания. Конечно, это было большим достижением (и остается таким) как для интернет, так и для интранет-приложений. Сервисы имеют аналогичный потенциал в плане изменения способа построения наших приложений (как для Интернета, так и для локальных сетей).
По своей сути сервис представляет собой интерфейс (или набор методов), который является /'черным ящиком" доступа (при помощи обычных форматов и протоколов) к совместно используемым функциям. При таким определении сервис должен быть слабо связан со своими…
Сервис определяет контракт между вызывающим клиентом и самим сервисом. Этот контракт утверждает нечто такое: "если вы пришлете мне данные в таком-то формате, то я их обработаю и верну вам результаты в таком-то формате". Формат этих данных и коммуникационные параметры этих вызовов основаны на таких открытых стандартах, как XML и SOAP. Аналогичные стандарты позволяют клиенту "обнаружить" Web-сервис и его контракт, а затем и работать с ним. Эти стандарты сервисов пересекают границы технологий и поэтому делают сервисы очень привлекательными для обмена данными между разнородными средами.
Для уяснения преимуществ сервисов полезно думать о них в контексте тех проблем, для решения которых они были…
Web-сервисы по-прежнему удерживают доминирующее положение при создании сервисных приложений. Они замечательно подходят для обмена через Интернет. Однако они не всегда являются самым эффективным средством обмена. Например, если клиент и сервис основаны на одной и той же технологии (или даже на одном компьютере), то они часто могут согласовать более эффективный способ для обмена (такой как Remoting — удаленное взаимодействие). Разработчики сервисов сталкиваются с теми же проблемами, которых они пытались избежать. Теперь им нужно выбирать между созданием эффективных внутренних сервисов и возможностью получить к ним максимально широкий доступ через Интернет. И если нужно поддерживать и то, и другое, то, возможно, им придется…
Перед тем как начать, разработчику важно понять ключевые концепции и стандартные термины Web-сервисов. Эти знания обеспечат понимание вами того, что происходит в вашем приложении. Они также помогут вам при чтении документации .NET и статей о создании приложений Web-сервисов. Поэтому мы составили следующий глоссарий ключевых терминов, имеющих отношение к Web-сервисам.
□ Web-cepeuc представляет собой цельный набор.логики приложения, которая выполняет действия и предоставляет данные. Web-сервис группирует эту логику в виде методов, которые можно вызвать по HTTP. Не все сервисы являются Web-сервисами; таковыми считаются только те, которые работают через Интернет.
□ Метод Web-cepeuca (или Web-метод) представляет собой метод, предоставляемый Web-сервисом. Web-метод может принимать…
Реальный проект Web-сервиса (который создается по шаблону Web-сервиса) содержит только один сервис, конфигурационный файл и набор стандартных ссылок. Ссылка на сервис дается как ссылка на asmx-файл. Этот файл используется как URI (и URL) для Web- сервиса. Фактическое содержимое этого файла показано на рис. 19.4.
Файл с расширением asmx на этом рисунке имеет представление конструктора для добавления компонентов, представление разметки для описания сервиса ASP.NET, а также представление выделенного кода (или просто кода). Вы можете переключаться между представлениями щелчком правой кнопки мыши по asmx-файлу. Представление разметки показывает единственную директиву WebService. Она означает, что файл Web-сервиса является указателем на код сервиса. Атрибут CodeBehind…
Мы рассмотрели стандартные файлы Web-сервиса, создаваемые в Visual Studio при помощи шаблона Web-сервиса. Теперь вы готовы исследовать разработку реального Web-сервиса при помощи Visual Studio 2008. Для примера мы будем разрабатывать Web-сервис CustomerProfile. Этот Web-сервис будет обеспечивать методы для получения информации о клиентах из хранилища данных и для сохранения изменений этой информации. Попутно мы рассмотрим более тонкие моменты разработки Web-сервиса .NET. Вот основные шаги этого процесса:
1. Для создания Web-сервиса добавьте в шаблон ASP.NET Web Service Application новый Web-сервис. Назовите его CustomerProfile.asmx.
2. Удалите метод HelloWorld и вместо него создайте методы с названиями GetCustomer- Profile, SaveCustomer и DeleteCustomer. Каждый метод должен…
Класс атрибута WebService (называемый также We'bServiceAttribute) можно использовать для предоставления дополнительных подробностей о данном Web-сервисе. Вы можете применить этот атрибут при объявлении класса Web-сервисом. Однако этот атрибут не обязателен. Он просто дает контекст Web-сервиса. Например, мы использовали атрибут WebService в объявлении класса CustomerProfile (для того чтобы предоставить подробности о пространстве имен Web-сервиса).
Вот описательные элементы, которые вы можете определить в классе атрибута WebService*.
□ Description— для определения описания Web-сервиса. Это описание будет предоставляться пользователям вашего Web-сервиса, а также указываться в соответствующей документации. Вам следует всегда предоставлять это описание;
□ Namespace — используется для объявления пространства имен для вашего Web-сервиса (по…
Класс WebService представляет собой базовый класс для Web-сервисов .NET. Его не надо путать с классом атрибута WebService (см. предыдущий раздел). Вы наследуете от этого класса для того, чтобы использовать объекты ASP.NET (такие как Session, Application, Context и т. д.). Однако делать это не обязательно. Visual Studio принудительно реализует такое наследование при описании вами нового Web-сервиса, но вы можете удалить этот код, если не собираетесь использовать в вашем Web-сервисе объекты ASP.NET. Если же вы решили наследовать от WebService, то вы получаете доступ к этим объектам ASP.NET точно так же, как и в любом другом Web-приложении.
Класс атрибута WebMethod служит для указания того обстоятельства, что метод вашего сервиса должен предоставляться через Web-сервис. Это объявление обязательно для всех тех методов, которые вы хотите сделать доступными через Web-сервис.
При описании Web-метода вы можете настроить различные параметры. Они управляют тем, как работает Web-метод. Например, для указания описания метода необходимо настроить
Параметр Description. Далее приведен более полный список параметров атрибута WebMethod.
□ Description— используется для предоставления описания Web-метода. Это описание будет видно вызывающим клиентам, а также в документации по данному Web-методу.
□ EnableSession— применяется для указания, нужно ли активировать состояния сеансов для данного Web-метода. Установка его в значение True позволит…
Visual Studio и .NET Framework позволяют вам просмотреть Web-сервис внутри Web- браузера. Эта возможность полезна как для тестирования Web-сервиса, так и для исследования его работы (возвращаемых и требуемых им сообщений). Для доступа к Web- сервису вы сначала собираете (компилируете) его в Visual Studio, а затем запускаете asmx-файл в браузере.
На рис. 19.7 показан пример Web-сервиса CustomerProfile в окне браузера. Обратите внимание, что все методы сервиса перечислены. Показано также описание каждого метода. Это то самое описание, которое было указано в определении Web-метода (WebMethodAttribute).
Для того чтобы увидеть реальное формальное описание Web-сервиса на WSDL, вы можете выбрать ссылку Service Description в верхней…