Другой класс прокси при добавлении службы WCF в качестве веб-ссылки и ссылки на службу - PullRequest
0 голосов
/ 31 мая 2011

Существует веб-сервис, написанный на WCF, который я добавляю в качестве ссылки.Генератор прокси-классов работает безупречно, когда я добавляю его в качестве ссылки на службу, но он генерирует немного другой класс, когда я добавляю его в качестве веб-ссылки, используя service.svc?WSDL.Вот различия:

//service reference
public partial class TestServicesClient : ... // correct class name
{
    public int TestMethod(string serviceID, int dealID) // correct method signature
    { ... }
}

//web reference
public partial class TestServices: ... //different class name
{
    public void TestMethod(string serviceID, int dealID, bool dealIDSpecified, out int TestMethodResult, out bool TestMethodResultSpecified) // different method signature
    { ... }
}

Я пытался использовать wsdl.exe для создания веб-справочного класса, не помогло.

Что здесь не так?

Ответы [ 2 ]

2 голосов
/ 31 мая 2011

Здесь все в порядке.Service Reference - это «новый» способ использования службы WCF, он устраняет такие издержки, как «указанный» -параметр, «результат» -параметр и «результат-специфический» -параметр.

Вы все еще можете использоватьдругие свойства / методы, чтобы проверить, указан ли параметр или есть ли результат.Но до WCF он изменил сигнатуру метода.

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

Вот некоторые дополнительные чтения:

И процитировать ответ на « В чем разница между службой WCF и веб-службой »

«Веб-службы» WCF являются частью гораздо более широкого спектра удаленной связи, включаемой через WCF.Вы получите гораздо более высокую степень гибкости и мобильности при работе в WCF, чем при использовании традиционного ASMX, поскольку WCF с самого начала предназначен для суммирования всех различных инфраструктур распределенного программирования, предлагаемых MS.С конечной точкой в ​​WCF можно связываться так же легко через SOAP / XML, как и через TCP / двоичный, и изменить этот носитель - просто мод конфигурационного файла.Теоретически это уменьшает количество нового кода, необходимого при переносе или изменении бизнес-потребностей, целей и т. Д.

ASMX старше WCF, и все, что ASMX может сделать, может WCF (и даже больше).По сути, вы можете видеть, что WCF пытается логически объединить все различные способы взаимодействия двух приложений в мире MS;ASMX был лишь одним из этих многочисленных способов, и теперь он сгруппирован под зонтиком возможностей WCF.

0 голосов
/ 17 марта 2015

Между сервисной ссылкой и веб-ссылкой мало различий.WCF сериализуется с использованием сериализатора данных.Поэтому добавьте атрибут XmlSerializeFormat в serivcecontract, а затем добавьте веб-ссылку.Ваши дополнительные параметры будут удалены.Но тогда все равно, что использовать только wcf как веб-сервис.Еще одно замечание: вам нужно использовать веб-привязки только как http.

...