В чем разница между WSDL и Mex Endpoint в WCF
У меня есть пара вопросов по конечной точке mex.
В устаревших веб-сервисах мы создаем прокси с помощью wsdl. WSDL предоставляет метаданные веб-службы. В wcf используется другой термин, обозначающий конечную точку mex, которая также предоставляет метаданные, но wsdl все еще жив в wcf. Я новичок в WCF, и я смущен относительно
difference between wsdl & mex endpoint
?Каково значение
httpGetEnabled="false" or httpGetEnabled="true"
?Если я установлю
httpGetEnabled="false"
тогда что будет? Означает ли это, что клиент не сможет добавить ссылку на сервис из своей IDE? Но если я установлюhttpGetEnabled="false"
и увидел, что клиент может добавить ссылку на услугу. Что заhttpGetEnabled
настройка очень сбивает с толку.Один парень сказал
MEX и WSDL - две разные схемы, чтобы рассказать потенциальным клиентам о структуре вашего сервиса. Таким образом, вы можете сделать ваши сервисные контракты общедоступными как (MEX) или WSDL.
Если приведенное выше утверждение верно, то скажите мне, когда использовать MEX и когда использовать WSDL?
Как я могу отключить mex и выставить мой сервис только через WSDL?
WSDL support all bidning like wshttp,wsdualhttp or tcp etc...
Если возможно, пожалуйста, обсудите wsdl & mex в деталях.
ОБНОВИТЬ
Вы сказали
5. How can I disable mex and expose my service only through WSDL?
Do not specifiy a mex endpoint in your config and use httpGetEnabled.
Вы хотите сказать, что в конфигурации не должно быть записи, связанной с конечной точкой mex, а httpgetenable будет выглядеть следующим образом?
<serviceMetadata httpGetEnabled="true" httpGetUrl="http://localhost:8080/SampleService?wsdl"/>
Вы сказали
WSDL обычно предоставляется через http или https, чтобы получить URL, которые вы не можете настроить (скажем, из-за ограничений безопасности или обратной совместимости). Конечные точки MEX предоставляют метаданные поверх настраиваемых конечных точек и могут использовать различные типы транспорта, такие как TCP или HTTP, и различные типы механизмов безопасности.
Вы сказали, что mex настраивается, а wsdl - нет. Что вы подразумеваете под mex is configurable
? Обсудите, пожалуйста, какую конфигурацию поддерживает mex и как ее можно настроить.
Если я установлю httpGetEnabled="false" then the WSDL
не удастся сгенерировать?
2 ответа
1) в устаревшем веб-сервисе мы создаем прокси, используя wsdl. WSDL предоставляет метаданные веб-службы. в wcf появляется другой термин, обозначающий конечную точку mex, которая также предоставляет метаданные, но wsdl все еще находится в wcf. Я новичок в wcf, поэтому я не понимаю, в чем разница между конечной точкой wsdl и mex?
Это почти то же самое, но mex разработан для поддержки не HTTP-протоколов и для расширенных сценариев настройки / безопасности. WSDL - это устаревший путь, а MEX - новая улучшенная версия с WCF.
2) что означает значение httpGetEnabled="false" или httpGetEnabled="true"
Он будет предоставлять метаданные через wsdl через url defautl, даже если вы не определили конечную точку mex для своего сервиса.
3) если я установлю httpGetEnabled="false", что произойдет? значит ли это, что клиент не сможет добавить ссылку на сервис из IDE? но я установил httpGetEnabled="false" и увидел, что клиент может добавить ссылку на службу. так что меня очень смущает, что httpGetEnabled имеет значение false или true?
Клиент может добавить ссылку в VS только в том случае, если httpGetEnabled/httpsGetEnabled включен или если вы указали конечную точку mex в конфигурации вашей службы. Лучшая практика заключается в том, чтобы предоставлять метаданные для среды разработки, а не для производства. Вы также можете распространять свои сервисные контракты через отдельные сборки и использовать ChannelFactory
,
4) один парень сказал:- MEX и WSDL - две разные схемы, чтобы рассказать потенциальным клиентам о структуре вашего сервиса. Таким образом, вы можете сделать ваши сервисные контракты общедоступными как (MEX) или WSDL. если приведенное выше утверждение верно, то скажите мне, когда использовать MEX и когда использовать WSDL?
WSDL обычно предоставляется через http или https, чтобы получить URL, которые вы не можете настроить (скажем, из-за ограничений безопасности или обратной совместимости). Конечные точки MEX предоставляют метаданные поверх настраиваемых конечных точек и могут использовать различные типы транспорта, такие как TCP или HTTP, и различные типы механизмов безопасности.
Таким образом, MEX более настраиваемый, в то время как WSDL более совместим со старыми версиями клиентов и клиентов, отличных от.net, которые работают с WSDL.
5) как я могу отключить mex и выставить мой сервис только через WSDL
Не указывайте конечную точку mex в вашей конфигурации и используйте httpGetEnabled
6) WSDL поддерживает все ставки, такие как wshttp, wsdualhttp или tcp и т. Д.
Предоставление метаданных полностью отличается от вызова службы.
ОБНОВИТЬ
вы пытаетесь указать, что в конфигурации не должно быть записи, связанной с конечной точкой mex, и httpgetenable будет выглядеть так:
Да, вам не нужно указывать конечную точку mex И httpGetEnabled. Только один требуется для предоставления метаданных. Не указывайте httpGetUrl, так как это зависит от среды вашего хостинга.
вы сказали, что mex настраивается, а wsdl - нет. что ru пытается сказать, что mex настраивается... пожалуйста, обсудите, какую конфигурацию поддерживает mex и как ее настроить.
Конечные точки MEX - это специальные конечные точки, которые позволяют клиентам получать метаданные службы, используя сообщения SOAP вместо запросов http get. Вы можете создать конечную точку MEX, к которой можно получить доступ через http, https, tcp и даже по именованным каналам. HttpGetEnable позволяет вам предоставлять метаданные с помощью метода HTTP GET, обычно это адрес службы с суффиксом "? Wsdl"
MEX и WSDL выводят почти одно и то же.
В большинстве случаев нет необходимости в конечной точке MEX - обычно достаточно использовать WSDL с http get.
Я понимаю ваше намерение понять эту часть, но не тратьте много раз на это: есть так много других сложных функций!
Конечные точки MEX - это специальные конечные точки, которые позволяют клиентам получать метаданные службы, используя сообщения SOAP, а не только запросы HTTP get (т.е. httpGetEnabled="true"). Вы можете создать конечную точку MEX, к которой можно получить доступ через http, https, tcp и даже по именованным каналам.
Ответ, который вы получите при вызове операции GetMetadata конечной точки MEX, будет включать содержимое WSDL и все файлы XSD, связанные с ним.