Вопросы использования пользовательских прокси-классов клиента веб-службы
Обновлен: Ноябрь 2007
Конечные точки потребителя в приложениях в конструкторах распределенных систем представляют настраиваемые точки подключения к конечным точкам поставщика. Во время развертывания определения системы, составленной из таких приложений, в конечных точках потребителя для этих приложений настраиваются адреса подключенных конечных точек поставщика. Дополнительные сведения см. в разделах Общие сведения о конечных точках в приложениях и Общие сведения о системах приложений.
В конечных точках потребителя веб-службы для этого необходимо использовать динамические прокси-классы клиента веб-службы, которые получают URL-адреса подключенных конечных точек поставщика веб-службы из соответствующих записей файла конфигурации приложения во время выполнения.
Примечание. |
---|
Для приложений, поддерживающих реализацию, среда Visual Studio создает файл конфигурации, когда выполняется реализация с диаграммы приложения. Файл конфигурации включается в состав проекта приложения в обозревателе решений. Дополнительные сведения см. в разделе Практическое руководство. Реализация приложений на диаграммах приложений. |
По умолчанию конструктор приложений создает веб-ссылки для таких конечных точек потребителя веб-службы в приложениях ASP.NET, Windows и Office. Затем эти веб-ссылки создают соответствующие динамические прокси-классы с необходимыми записями файла конфигурации.
Примечание. |
---|
Если статические веб-ссылки используются в приложении или в упоминаемой библиотеке классов, то эти веб-ссылки не обнаруживаются конструктором приложений и не визуализируются в виде конечных точек потребителя веб-службы, даже в случае, когда они могут работать правильно. Рекомендуется всегда использовать динамические веб-ссылки, в том числе когда не планируется изменять 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-адреса веб-службы, и различные способы, которым конструктор приложений определяет такие параметры. Далее представлены рекомендации, позволяющие обеспечить правильное представление пользовательских прокси-классов в виде конечных точек потребителя веб-службы для каждого типа приложения.
Примечание. |
---|
Если не выполнить эти рекомендации, то можно создать пользовательские прокси-классы, которые будут правильно работать во время выполнения, однако такие классы не будут представляться в виде конечных точек потребителя веб-службы, не будут подключаться на диаграмме приложения, не будут проверяться для развертывания, не будут включаться в отчет о развертывании в виде конечных точек и не будут доступны для настройки конечных точек ни в одном из доступных средств развертывания. |
Записи файла конфигурации для пользовательских прокси-классов клиента веб-службы, используемых с приложениями Windows и Office
Для пользовательских прокси-классов, используемых с приложениями Windows и Office, параметры URL-адреса веб-службы должны входить в запись applicationSettings файла конфигурации App.config для приложения-потребителя. Эти параметры нельзя просматривать и изменять в редакторе параметров и ограничений, поэтому их необходимо создавать или изменять в области Параметры. Чтобы открыть эту область, щелкните проект приложения Windows или Office правой кнопкой мыши и просмотрите его свойства. Эти параметры также необходимо обозначить типом WebServiceURL или String. Дополнительные сведения см. в разделе Управление параметрами приложения.
Примечание. |
---|
Обозначение типа WebServiceURL не выводится в файле конфигурации App.config; но сохраняется в сопоставленном файле параметров, который обычно бывает скрытым. Если параметр добавляется в файл конфигурации App.config вручную, необходимо добавить обозначение типа WebServiceURL или String в качестве параметра в области Параметры. |
В области Параметры можно выбрать для параметра, обозначенного типом WebServiceURL, область действия Приложение или Пользователь. При изменении области запись перемещается в раздел applicationSettings или userSettings файла конфигурации. Однако если параметр обозначен типом String, необходимо выбрать область действия Приложение.
Совет. |
---|
Во время задания параметра 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 на диаграммах приложений
Ссылки
Веб-ссылки и пользовательские прокси-классы клиента веб-службы в библиотеках классов
Типы приложений и прототипы для определения приложений