Эндрю Троелсен - ЯЗЫК ПРОГРАММИРОВАНИЯ С# 2005 И ПЛАТФОРМА .NET 2.0. 3-е издание
- Название:ЯЗЫК ПРОГРАММИРОВАНИЯ С# 2005 И ПЛАТФОРМА .NET 2.0. 3-е издание
- Автор:
- Жанр:
- Издательство:Издательский дом Вильямс
- Год:2007
- Город:Москва • Санкт-Петербург • Киев
- ISBN:ISBN 5-8459-1124-9
- Рейтинг:
- Избранное:Добавить в избранное
-
Отзывы:
-
Ваша оценка:
Эндрю Троелсен - ЯЗЫК ПРОГРАММИРОВАНИЯ С# 2005 И ПЛАТФОРМА .NET 2.0. 3-е издание краткое содержание
В этой книге содержится описание базовых принципов функционирования платформы .NET, системы типов .NET и различных инструментальных средств разработки, используемых при создании приложений .NET. Представлены базовые возможности языка программирования C# 2005, включая новые синтаксические конструкции, появившиеся с выходом .NET 2.0, а также синтаксис и семантика языка CIL. В книге рассматривается формат сборок .NET, библиотеки базовых классов .NET. файловый ввод-вывод, возможности удаленного доступа, конструкция приложений Windows Forms, доступ к базам данных с помощью ADO.NET, создание Web-приложений ASP.NET и Web-служб XML. Книга содержит множество примеров программного кода, призванного помочь читателю в освоении предлагаемого материала. Программный код примеров можно загрузить с Web-сайта издательства.
ЯЗЫК ПРОГРАММИРОВАНИЯ С# 2005 И ПЛАТФОРМА .NET 2.0. 3-е издание - читать онлайн бесплатно полную версию (весь текст целиком)
Интервал:
Закладка:
‹soap:Header›
‹!-- Необязательная информация заголовка --›
‹/soap:Header›
‹soap:Body›
‹!-- Информация вызова метода --›
‹/soap:Body›
‹/soap:Envelope›
Хотя при создании Web-сервиcов XML в рамках платформы .NET от вас не требуется понимания всех деталей SOAP, вы можете увидеть формат сообщения SOAP дня каждого доступного Web-метода с помощью автоматически генерируемой страницы тестирования. Например, если щелкнуть на ссылке для метода Add() нашего CalculatorWebService, вы увидите следующий запрос SOAP 1.1.
‹soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/ "›
‹soap:Body›
‹Add xmlns="http://www.IntertechTraining.com"›
‹x›int‹/x›
‹y›int‹/y›
‹/Add›
‹/soap:Body›
‹/soap:Envelope›
Соответствующий ответ SOAP 1.1 выглядит так.
‹soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"›
‹soap:Body›
‹AddResponse xmlns="http://www.IntertechTraining.com "›
‹AddResult › int‹/AddResult›
‹/AddResponse›
‹/soap:Body›
‹/soap:Envelope›
Утилита командной строки wsdl.exe
Теперь, когда у вас есть базовые знания о WSDL и SOAP, давайте выясним, как с помощью такого инструмента командной строки, как wsdl.exe строить программы клиента, взаимодействующие с удаленными Web-сервисами XML. В сущности, wsdl.exe решает две важные задачи.
• Генерирование файла сервера, функционирующего в качестве каркаса для реализации Web-сервиса XML.
• Генерирование файла клиента, функционирующего в качестве агента удаленного Web-сервиса XML.
Утилита wsdl.exe поддерживает ряд флагов командной строки, список которых можно увидеть, указав при вызове этой утилиты опцию -? в командной строже. Описания некоторых аргументов wsdl.exe приводятся в табл. 25.6.
Таблица 25.6.Подборка опций wsdl.exe
Флаг командной строки | Описание |
---|---|
/appsettingurlkey | Дает указание wsdl.exe создать агент, не использующий "жестко" заданные значения URL. Вместо этого класс агента будет настроен на чтение значений URL из файла *.config клиента |
/language | Указывает язык для использования в генерируемом классе агента: cs (C#; это значение используется по умолчанию), VB (Visual Basic .NET), JS (JScript), VJS (Visual J#) |
/namespace | Указывает пространство имен для генерируемого агента или шаблона. По умолчанию сам тип в рамках определения пространства имен не определяется |
/out | Указывает файл, в котором нужно сохранить программный код генерируемого агента. Если файл не указан, имя файла будет соответствовать имени Web-сервиса XML |
/protocol | Указывает протокол, используемый в программном коде агента, по умолчанию это SOAP. Но можно также указать HttpGet или HttpPost, чтобы создать агент, использующий для взаимодействия HTTP-методы GET или POST |
/serverInterface | Генерирует интерфейсные связи сервера для Web-сервиса XML на основе WSDL-документа |
Замечание.Флаг /server утилиты wsdl.exe в .NET 2.0 больше не используется. Теперь базовый программный код для сервера генерируется с помощью /serverlnterfасе.
Преобразование WSDL-кода в серверный программный код Web-сервиса
Одним из интересных вариантов использования утилиты wsdl.exe является генерирование серверного программного кода на основе WSDL-документа (с помощью опции /serverInterfасе). Очевидно, если вы начинаете разработку Web-сервиса XML с создания WSDL-документа, эта опция должна быть для вас очень важна. После того как файл исходного кода будет сгенерирован, вы получите хорошую исходную позицию для реализации каждого Web-метода.
Предположим, что вы создали WSDL-документ (CarBizObject.wsdl), в котором описывается единственный метод DeleteCar(), получающий на вход целое число и не возвращающий ничего. Этот метод предлагается Web-сервисом XML с именем CarBizObject, который может вызываться с использованием связи SOAP.
Чтобы сгенерировать серверный файл программного кода C# на основе этого WSDL-документа, откройте окно командной строки .NET и вызовите утилиту wsdl.exe с флатом /serverInterface, за которым должно следовать имя соответствующего WSDL-документа. Заметьте, что WDSL-документ может содержаться либо в локальном файле *.wsdl:
wsdl /serverInterface CarBizObject.wsdl
либо получаться динамически по данному URL с помощью указания суффикса ?wsdl:
wsdl /serverInterface http://localhost/CarService/CarBizObject.asmx ?wsdl
После того как wsdl.exe обработает соответствующие XML-элементы, вы получите описания интерфейсов для каждого Web-метода.
[System.Web.Services.WebServiceBindingAttribute(
Name="CarBizObjectSoap",
Namespace="http://IntertechTraining.com/")]
public partial interface ICarBizObjectSoap{
…
void RemoveCar(int carID);
}
Используя эти интерфейсы, вы можете определить класс, реализующий различные методы Web-сервиса XML.
Исходный код. Файл CarBizObject.wsdl размещен в подкаталоге, соответствующем главе 25.
Преобразование WSDL-кода в программный код агента для клиента
Хотя это и нежелательно, но вполне возможно построить базовый программный код клиента, которым будет вручную открывать HTTP-соединение, строить SOAP-сообщения, вызывать Web-методы и выполнять обратную трансляцию поступающего XML-потока в типы данных CTS. Намного более предпочтительным подходом оказывается использование wsdl.exe для генерирования класса агента, который будет представлять Web-методы, определенные данным файлом *.asmx.
Для этого укажите (как минимум) имя генерируемого файла агента (с помощью флага /out) и место размещения WSDL-документа. По умолчанию wsdl.exe генерирует программный код агента на языке C#. Однако если вы хотите иметь программный код агента на другом языке .NET, вы можете использовать флаг /language. Следует также знать, что по умолчанию wsdl.exe генерирует программный код агента, предполагающего связь с удаленным Web-сервисом XML с помощью SOAP. Чтобы созданный агент использовал HTTP-метод GET или POST. следует указать соответствующий протокол связи с помощью /protocol.
Другим важным моментом в отношении генерирования программного кода агента с помощью wsdl.exe является то, что этому инструменту действительно требуется WSDL-документ Web-сервиса XML, а не просто файл с именем *.asmx. С учетом этого следует понимать, что если для разработки и тестирований Web-сервиса вы используете WebDev.WebServer.exe, то перед генерированием программного кода агента для клиента вы, скорее всего, захотите скопировать содержимое проекта в виртуальный каталог IIS.
Для примера предположим. что вы создали новый виртуальный каталог IIS (CalcService), содержащий данные проекта CalculatorService. После этого вы можете сгенерировать программный код агента клиента так.
wsdl /out:proxy.cs http://localhost/CalcService/Secrvice.asmx?wsdl
Интервал:
Закладка: