2012-03-02 3 views
1

У меня есть служба WCF bassicHttpBiding. Мои веб-функции возвращают определенные пользовательские определенные типы.Как клиенты WCF знают о типах серверов

[DataContract] 
public class PcbInfoEntry 
{ 
    [DataMember] 
    public int ReflowPcbId { get; set; } 
    [DataMember] 
    public string PcbId { get; set; } 
} 

Но как на самом деле клиент знает определение класса? Что происходит в прокси-сервере, который сгенерирован?

ответ

4

Сервер предоставляет WSDL (Язык описания веб-сервисов). Просто укажите свой браузер на http://example.com/myservice/service.svc?wsdl, и вы увидите полное определение своего сервиса. Все типы и методы, которые он предоставляет. При создании прокси-сервера на стороне клиента svcutil.exe использует эту информацию для создания соответствующих прокси-классов на стороне клиента.

WSDL - стандарт SOAP. Независимо от того, на каком языке написан ваш сервис, если он предоставляет WSDL, вы можете легко создать прокси-сервер клиента.

WCF также может публиковать свои метаданные через конечную точку MEX, которая реализует стандарт обмена WS-метаданными, позволяющий клиентам обнаруживать его типы.

+0

где сидит описание DTO, возвращаемое моими веб-методами. потому что в моих WSDL я не мог его увидеть. –

+0

@NightWalker, есть ссылки/ссылки в основном WSDL на другие страницы, такие как, например, 'http: //example.com/myservice/service.svc? Wsdl = wsdl0' и' http://example.com/myservice /service.svc? xsd = xsd0' и т. д. –

+0

да, это помогает. Еще один вопрос в той же области. одна из моих веб-функций возвращает некоторый DTO, и у нее нет атрибута [DataContract] , но все же я видел его в wsdl, а мои клиенты использовали его в порядке. Вопрос в том, почему мне нужны атрибуты [DataContract] . –

Смежные вопросы