Ответ 1
1) в старой веб-службе мы создаем прокси-сервер, используя wsdl. WSDL выставляет веб-страницы метаданные службы. в wcf появляется еще один термин, который является конечной точкой mex, которая также выставлять метаданные, но wsdl по-прежнему живет в wcf.i, новичок в wcf поэтому я сбиваю с толку, в чем разница между wsdl и mex конечная точка?
Это довольно то же самое, но mex предназначен для поддержки протоколов, отличных от HTTP, и для расширенных сценариев конфигурации/безопасности. WSDL - это устаревший способ, а MEX - новая улучшенная версия с WCF.
2) в чем смысл httpGetEnabled = "false" или httpGetEnabled = "истина"
Он будет показывать метаданные через wsdl через URL-адрес defautl, даже если вы не определили конечную точку mex для своей службы.
3), если я установил httpGetEnabled = "false" , тогда что произойдет? значит ли это что клиент не сможет добавить ссылку на службу из IDE? но я set httpGetEnabled = "false" , и клиент увидел, что клиент может добавить ссылку на службу. поэтому для меня очень сбивает с толку то, что httpGetEnabled является ложным или true делает?
Клиент может добавить ссылку в VS только в том случае, если включен параметр httpGetEnabled/httpsGetEnabled или если вы определили конечную точку mex в конфигурации вашей службы. Наилучшая практика заключается в том, чтобы выявлять метаданные в dev-среде, но не на производстве. Вы также можете распространять свои контракты на обслуживание с помощью отдельных сборок и использовать ChannelFactory
.
4) один парень сказал: - MEX и WSDL - две разные схемы, чтобы сказать потенциальных клиентов о структуре вашего сервиса. Так что вы можете выберите либо сделать свои контракты на обслуживание общедоступными, либо (MEX) или WSDL. если приведенное выше утверждение истинно, тогда скажите мне, когда использовать MEX и когда использовать WSDL?
WSDL обычно просматривается через http или https, чтобы получить URL-адреса, которые вы не можете настроить (скажем, для ограничений безопасности или для обратной совместимости). Конечные точки MEX предоставляют метаданные поверх настраиваемых конечных точек и могут использовать различные типы транспорта, такие как TCP или HTTP, и различные типы механизмов безопасности.
Итак, MEX более конфигурируемы, а WSDL более совместим со старыми версиями клиентов и клиентов non.net, которые работают с WSDL.
5) как я могу отключить mex и выставить свою службу только через WSDL
Не указывайте конечную точку mex в своей конфигурации и используйте httpGetEnabled
6) WSDL поддерживает все попытки, такие как wshttp, wsdualhttp или tcp и т.д.
Отображение метаданных полностью отличается от вызова службы.
UPDATE
re вы пытаетесь сказать, что не должно быть никакой записи, связанной с конечной точкой mex в config и httpgetenable будет выглядеть как
Да, вам не нужно указывать конечную точку mex и httpGetEnabled. Для отображения метаданных требуется только один. Не указывайте httpGetUrl, поскольку это зависит от вашей среды хостинга.
вы сказали, что mex настраивается, но wsdl нет. что вы пытаетесь сделать mex настраивается... пожалуйста, обсудите, какая конфигурация mex поддержки и настройки.
Конечные точки MEX - это специальные конечные точки, которые позволяют клиентам получать метаданные служб, используя SOAP-сообщения вместо HTTP-запросов. Вы можете создать конечную точку MEX, к которой можно получить доступ через http, https, tcp и даже именованные каналы. HttpGetEnable позволяет вам показывать метаданные с помощью метода HTTP GET, обычно адрес службы с суффиксом '? Wsdl'
MEX и WSDL выводят почти то же самое.
В большинстве случаев нет необходимости в конечной точке MEX - обычно используется WSDL с http get.
Я понимаю ваше намерение понять эту часть, но не тратьте много раз на это: есть так много других сложных функций!