Здравствуйте, mDmitriy, Вы писали:
Для начала стоит уточнить, как именно вы экспортируете WSDL.
D>Есть мнение, что запрос WSDL каждый раз ее генерит, чем нагружает сервисы
Откуда взялось это мнение?
Вы можете сами посмотреть на реализацию
—
ServiceMetadataBehavior
—
ServiceMetadataExtension
Последний вообще реализован как IExtension<ServiceHostBase>, т.е. предполагается, что он будет иметь 1 экземпляр на каждый запущенный хост.
Ну а там в коде можно посмотреть на методы EnsureInitialized() или EnsureSingleWsdlInitialized() — там явно стоит защита от повторной генерации метаданных.
Ну а MetadataSet да, требует некоторое время на сериализацию, но на сколько оно критично — вопрос (ну и янигде по коду не смотрел — может и результат сериализации кэшируется)
D>Вопрос — можно ли однократно полученную WSDL как-то положить в кеш и при ее запросе отправлять содержимое кеша?
Можно, вопрос нужно ли...
Но прежде чем что-то вам советовать, я бы уточнил какие данные из метаданных вы хотите использовать.
Там помимо описания контрактов, которые можно получить в любой момент, вплоть до compile time, есть еще описание endpoints, а вот эти данные уже вытащить можно, имхо, только у запущенного иполностью сконфигурированного хоста.
D>PS. WSDL запрашивается по другому порту и биндингу, нежели все остальное
D>Какой лучше тип биндинга (с точки зрения минимализации ресурсоемкости) для такого запроса использовать?
Я всё же не понял, вы используете какую-то свою реализацию, или работаете через стандартный mex-endpoint (или вообще отдаете через get-запрос)