Поделиться через


Управление версиями обнаружения

В этом разделе приведены общие сведения о реализации некоторых новых возможностей обнаружения. Также приводятся общие сведения о выборе версии обнаружения.

Управление версиями обнаружения

Возможность обнаружения поддерживает три версии протокола обнаружения WS-Discovery. API обнаружения позволяют выбирать используемую версию протокола. В этом документе кратко описаны параметры, связанные с версиями.

У следующих классов Discovery теперь имеется свойство DiscoveryVersion, их конструкторы также принимают аргумент DiscoveryVersion:

DiscoveryVersion.WSDiscoveryApril2005

Предоставление WSDiscoveryApril2005 в качестве параметра конструктора делает реализацию используемой версией протокола WS-Discovery в апреле 2005 года. Эта версия соответствует опубликованной версии спецификации протокола WS-Discovery. Эту версию следует использовать для взаимодействия с приложениями прежних версий, использующими версию протокола WS-Discovery от апреля 2005 г.

DiscoveryVersion.WSDiscovery11

Версия обнаружения по умолчанию, используемая API WSDiscovery11. Эта версия протокола обнаружения WS-Discovery на данный момент является стандартной.

DiscoveryVersion.WSDiscoveryCD1

При указании параметра конструктора WSDiscoveryCD1 реализация будет использовать рассматриваемый соответствующим комитетом проект 1 версии протокола WS-Discovery. Эту версию протокола следует использовать для взаимодействия с реализациями, в которых применяется версия CD1 протокола WS-Discovery.

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

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

UdpDiscoveryEndpoint newVersionUdpEndpoint = new UdpDiscoveryEndpoint(DiscoveryVersion.WSDiscovery11);
UdpDiscoveryEndpoint oldVersionUdpEndpoint = new UdpDiscoveryEndpoint(DiscoveryVersion.WSDiscoveryApril2005);

newVersionUdpEndpoint.Address = new EndpointAddress(newVersionUdpEndpoint.Address.Uri.ToString() + "/version11");
oldVersionUdpEndpoint.Address = new EndpointAddress(oldVersionUdpEndpoint.Address.Uri.ToString() + "/versionApril2005");

serviceHost.AddServiceEndpoint(newVersionUdpEndpoint);
serviceHost.AddServiceEndpoint(oldVersionUdpEndpoint);