Представление типов на стороне клиента

We use cookies. Read the Privacy and Cookie Policy

Представление типов на стороне клиента

Когда клиент устанавливает ссыпку на Web-сервис, предоставляющий доступ к пользовательским типам, файл класса агента получает определения для каждого отрытого пользовательского типа. Так, если вы посмотрите на представление клиента для SalesInfoDetails (в генерируемом файле Reference.cs), вы увидите, что каждое поле инкапсулировано в строго типизованное свойство (также обратите внимание на то, что этот тип теперь определен, как класс, а не как структура).

[System.SerializableAtttribute()]

[System.Xml.Serialization.XmlTypeAttribute(Namespace="http://IntertechTraining.com/")]

public partial class SalesInfoDetails {

 private string infoField;

 private string urlField;

 private System.DateTime dateExpiredField;

 public string info {

  get { return this.infoField; }

  set { this.infoField = value; }

 }

 public string Url {

  get { return this.urlField; }

  set { this.urlField = value; }

 }

 [System.Xml.Serialization.XmlAttributeAttribute()]

 public System.DateTime dateExpired {

  get { return this.dateExpiredField; }

  set { this.dateExpiredField = value; }

 }

}

При этом, конечно, следует понимать, что подобно случаю удаленного взаимодействия .NET, типы, сериализация которых выполняется по сети в формате XML, не сохраняют логику реализации. Поэтому, если структура SalesInfoDetails поддерживала ряд открытых методов, генератор агента учесть это не сможет (прежде всего, потому, что эти методы не отражены в документе WSDL!). Однако если вы установите компоновочный блок клиента, который будет содержать программный код реализации типа клиента, вы сможете использовать программную логику типа. Но при этом требуется, чтобы соответствующая машина обеспечивала поддержку .NET.

Исходный код. Проект CarSaleslnfoClient размещен в подкаталоге, соответствующем главе 25.