Вопросы использования пользовательских прокси-классов клиента веб-службы

Обновлен: Ноябрь 2007

Конечные точки потребителя в приложениях в конструкторах распределенных систем представляют настраиваемые точки подключения к конечным точкам поставщика. Во время развертывания определения системы, составленной из таких приложений, в конечных точках потребителя для этих приложений настраиваются адреса подключенных конечных точек поставщика. Дополнительные сведения см. в разделах Общие сведения о конечных точках в приложениях и Общие сведения о системах приложений.

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

ms181858.alert_note(ru-ru,VS.90).gifПримечание.

Для приложений, поддерживающих реализацию, среда Visual Studio создает файл конфигурации, когда выполняется реализация с диаграммы приложения. Файл конфигурации включается в состав проекта приложения в обозревателе решений. Дополнительные сведения см. в разделе Практическое руководство. Реализация приложений на диаграммах приложений.

По умолчанию конструктор приложений создает веб-ссылки для таких конечных точек потребителя веб-службы в приложениях ASP.NET, Windows и Office. Затем эти веб-ссылки создают соответствующие динамические прокси-классы с необходимыми записями файла конфигурации.

ms181858.alert_note(ru-ru,VS.90).gifПримечание.

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

В следующих подразделах содержатся подробные сведения об использовании пользовательских прокси-классов клиента веб-службы вместо динамических прокси-классов:

  • Representing Custom Web Service Client Proxy Classes as Web Service Consumer Endpoints

  • Configuration File Entries for Custom Web Service Proxy Client Classes Used with Windows and Office Applications

  • Configuration File Entries for Custom Web Service Proxy Classes Used with ASP.NET Applications

  • Migrating Web References and Custom Proxy Classes from Visual Studio .NET 2003

Представление пользовательских прокси-классов клиента веб-службы в виде конечных точек потребителя веб-службы

Конструктор приложений поддерживает разработку конечных точек потребителя веб-службы, которые реализованы веб-ссылками. Однако также можно выполнять реконструирование и визуализацию созданных вручную пользовательских прокси-классов в виде конечных точек потребителя веб-службы при условии, что в файле конфигурации приложения-потребителя (App.config or Web.config) существуют соответствующие записи.

Конечные точки потребителя веб-службы выводятся в приложении-потребителе для каждой записи файла конфигурации, которую конструктор приложений обрабатывает как запись, представляющую параметр URL-адреса веб-службы для пользовательского прокси-класса. Кроме того, если URL-адрес веб-службы в записи файла конфигурации совпадает с URL-адресом существующей конечной точки поставщика веб-службы на диаграмме приложения, то между конечной точкой потребителя и конечной точкой поставщика веб-службы отображается подключение. Если не существуют совпадающие конечные точки поставщика веб-службы, но URL-адрес можно использовать для указания на допустимый WSDL-файл для веб-службы путем добавления к URL-адресу строки "?wsdl" или "?disco", то на диаграмму приложения добавляется внешняя веб-служба, которая подключается к конечной точке потребителя веб-службы. Если с помощью URL-адреса нельзя определить расположение WSDL-файла, то конечная точка потребителя веб-службы остается неподключенной.

Для приложений ASP.NET и приложений Windows или Office используются различные записи файла конфигурации, которые представляют параметры URL-адреса веб-службы, и различные способы, которым конструктор приложений определяет такие параметры. Далее представлены рекомендации, позволяющие обеспечить правильное представление пользовательских прокси-классов в виде конечных точек потребителя веб-службы для каждого типа приложения.

ms181858.alert_note(ru-ru,VS.90).gifПримечание.

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

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

Для пользовательских прокси-классов, используемых с приложениями Windows и Office, параметры URL-адреса веб-службы должны входить в запись applicationSettings файла конфигурации App.config для приложения-потребителя. Эти параметры нельзя просматривать и изменять в редакторе параметров и ограничений, поэтому их необходимо создавать или изменять в области Параметры. Чтобы открыть эту область, щелкните проект приложения Windows или Office правой кнопкой мыши и просмотрите его свойства. Эти параметры также необходимо обозначить типом WebServiceURL или String. Дополнительные сведения см. в разделе Управление параметрами приложения.

ms181858.alert_note(ru-ru,VS.90).gifПримечание.

Обозначение типа WebServiceURL не выводится в файле конфигурации App.config; но сохраняется в сопоставленном файле параметров, который обычно бывает скрытым. Если параметр добавляется в файл конфигурации App.config вручную, необходимо добавить обозначение типа WebServiceURL или String в качестве параметра в области Параметры.

В области Параметры можно выбрать для параметра, обозначенного типом WebServiceURL, область действия Приложение или Пользователь. При изменении области запись перемещается в раздел applicationSettings или userSettings файла конфигурации. Однако если параметр обозначен типом String, необходимо выбрать область действия Приложение.

ms181858.alert_note(ru-ru,VS.90).gifСовет.

Во время задания параметра URL-адреса веб-службы в файле App.config нужно указывать расположение веб-службы, а не расположение описания веб-службы или WSDL-файла. Для веб-служб, основанных на ASMX-файлах, описание часто располагается там же, где WSDL-файл. Поэтому для веб-служб, основанных на ASMX-файлах, конструктор приложений считает, что расположение веб-службы совпадает с расположением WSDL-файла. Если в этом расположении обнаруживается WSDL-файл, выполняется реконструирование внешней веб-службы на диаграмме приложения. Затем эта веб-служба подключается к реконструированной конечной точке потребителя веб-службы. Если в этом расположении не удается найти допустимый WSDL-файл, то реконструирование выполняется только для конечной точки потребителя веб-службы.

В следующем примере показано, как может выглядеть запись applicationSettings в файле конфигурации App.config для проекта Windows, когда параметр обозначен типом String:

<applicationSettings>
   <WindowsApplicationName.MySettings>
      <setting name="WindowsApplicationName_Namespace_WebServiceProxyClassName" serializeAs="String"><value>http://WebServiceURL.asmx</value></setting>
   </WindowsApplicationName.MySettings>
</applicationSettings>

Для записей с типом WebServiceURL имя параметра не обязательно должно совпадать с именем прокси-класса. Для создания конечной точки потребителя веб-службы в приложении Windows или Office достаточно определенной таким образом записи файла конфигурации, которая обозначена типом WebServiceURL или String в области Параметры, даже если с записью не сопоставлен пользовательский прокси-класс. При удалении такой конечной точки удаляется запись, но не удаляется сопоставленный пользовательский прокси-класс.

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

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

  • Конечная точка потребителя веб-службы выводится только в случае, если в проекте приложения-потребителя или в любом упоминаемом проекте или сборке обнаруживается прокси-класс с совпадающим именем.

  • Если пользовательский прокси-класс используется только с приложениями ASP.NET, то URL-адрес веб-службы должен содержаться в записи appSettings в файле конфигурации Web.config для приложения ASP.NET. Имя записи файла конфигурации должно совпадать с полным именем прокси-класса. Запись appSettings в файле Web.config можно изменить в редакторе параметров и ограничений. Дополнительные сведения см. в разделах Редактор параметров и ограничений и Применение параметров.

  • Если пользовательский прокси-класс используется с приложениями Windows или Office, а также с приложениями ASP.NET, то URL-адрес веб-службы должен содержаться в записи applicationSettings файла Web.config для приложения ASP.NET. Именем записи файла конфигурации должно быть полное имя прокси-класса, снабженное префиксом из имени проекта. Такой формат используется по умолчанию в автоматически создаваемых веб-ссылках. Запись applicationSettings в файле Web.config можно изменить в редакторе параметров и ограничений. В разделе applicationSettings не поддерживаются точки (.) в именах параметров. Вместо них используйте символы подчеркивания (_).

В следующем примере показано, как может выглядеть запись appSettings в файле Web.config:

<appSettings>
   <add key="Namespace.WebServiceProxyClassName" value="https://localhost/WebServiceApplicationName/WebServiceName.asmx"/>
</appSettings>

В следующем примере показано, как может выглядеть в файле Web.config запись applicationSettings, которая совпадает с записью, используемой в файле App.config для приложения Windows или Office:

<applicationSettings>
   <WindowsApplicationName.MySettings>
      <setting name="WindowsApplicationName_Namespace_WebServiceProxyClassName" serializeAs="String"><value>http://WebServiceURL.asmx</value></setting>
   </WindowsApplicationName.MySettings>
</applicationSettings>

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

Миграция веб-ссылок и пользовательских прокси-классов клиента веб-службы из Visual Studio .NET 2003

Сопоставленные записи файла конфигурации для веб-ссылок, добавляемых в проекты Windows или Office с помощью Visual Studio .NET 2003, хранятся в разделе appSettings, а не в разделе applicationSettings. Когда проект Windows или Office из Visual Studio .NET 2003 обновляется с помощью мастера преобразования, веб-ссылки и пользовательские прокси-классы не проходят автоматическую миграцию из раздела appSettings в раздел applicationSettings. Дополнительные сведения о мастере преобразования см. в разделе Мастер преобразования Visual Studio.

Однако веб-ссылки автоматически проходят миграцию, когда повторно создаются прокси-классы, например когда изменяются соответствующие веб-службы или веб-ссылка обновляется вручную. В разделе applicationSettings появляется новый параметр для каждой веб-службы, который используется обновленными прокси-классами. После обновления раздела applicationSettings соответствующие конечные точки потребителя веб-службы и подключения появляются на диаграмме приложения. Дополнительные сведения см. в разделе Практическое руководство. Обновление веб-ссылок на веб-службы на диаграммах приложений.

Чтобы отобразить конечные точки потребителя веб-службы для пользовательских прокси-классов, необходимо выполнить миграцию этих классов вручную. Эту задачу можно выполнить путем обновления прокси-классов так, чтобы они использовали раздел applicationSettings, и добавления соответствующих параметров в области Параметры, которая доступна в свойствах проекта приложения Windows или Office. Дополнительные сведения см. в разделе Управление параметрами приложения.

См. также

Основные понятия

Общие сведения о конечных точках в приложениях

Общие сведения о приложениях ASP.NET на диаграммах приложений

Ссылки

Веб-ссылки и пользовательские прокси-классы клиента веб-службы в библиотеках классов

Типы приложений и прототипы для определения приложений

Другие ресурсы

Определение приложений на диаграммах приложений