2010-06-16 3 views
0

Я разрабатываю WebService и хочу сделать его доступным для всех на всех языках простым и практичным способом. Для одного из доступа мне нужно отправить две части информации, токен и XML.Шаблоны/рекомендации Практические советы WebService

В этом случае было сомнение, я использую параметры: String - String или String - XmlDocument?

Ну, другими словами, мой вопрос заключается в том, что использовать параметры String - это XML-документы? Каков опыт вас в этом?

ответ

1

Если вы хотите, чтобы ваш сервис был доступен любому клиенту, то передача XmlElement - это не путь. Это не помещает информацию в WSDL, которую клиент может использовать, чтобы решить, что вам отправить.

Вместо этого передайте простой класс «Data Transfer Object». Это будет простой класс без какого-либо поведения, только данные. Например:

public class PersonDTO 
{ 
    public int ID {get;set;} 
    public string Name {get;set;} 
    public List<AddressDTO> Addresses {get;set;} 
} 

public class AddressDTO 
{ 
    public string Line1 {get;set;} 
    public string City {get;set;} 
    public string PostalCode {get;set;} 
} 

Попросите WebMethod принять одну из них в качестве параметра, и он будет использоваться почти каждым клиентом в мире.

+0

Но мои данные находятся в структуре, и эта структура не импортируется из веб-службы. На клиенте он создает новый объект, который ArraOfT [StructObject]. Поэтому многим элементам управления необходимо модифицировать и обрабатывать информацию. Поэтому я думаю о сериализации объектов на обоих концах. Это решило бы мою проблему. Поэтому я подумываю о сериализации объекта, отправки его как строки или XmlDocument, получает его, а затем снова сериализует объект. –

+0

@Ph: ваши структуры или другие типы _never_ «импортированы» из веб-службы. Это просто не работает. См. [Как работает веб-службы] (http://johnwsaundersiii.spaces.live.com/blog/cns!600A2BE4A82EA0A6!523.entry), чтобы узнать, почему ваша структура никогда не появится на клиенте. –

1

Если вы собираетесь отправлять XML в веб-сервис, то вы, вероятно, следует подвергать его как XmlDocument, просто чтобы убедиться, что люди, глядя на определение услуг понять, что должно быть передано в.

Это как говорят, с традиционными SOAP-сервисами, как правило, считается, что принимать XML-бобы в качестве аргументов плохо, потому что они не являются самоописаниями, а управление версиями становится кошмаром (вам необходимо поддерживать все версии XmlDocument, которые когда-либо использовали ваши службы ... так что если вы меняете его два раза в год, через 3 года у вас будет 6 разных форматов документов XML, которые вам нужно будет поддерживать).

+0

в приложении C# было бы целесообразно использовать XmlDocument или XmlElement? Я буду выполнять некоторые тесты, спасибо за обмен опытом и ответ. –

+1

@Ph: Вы бы просто использовали XmlElement. Когда вы используете XmlDocument, вместо этого используется XmlElement. Когда вы думаете об этом, нет смысла иметь документ XML, вложенный в другой XML-документ. –

+0

@John Saunders Да, я читал о взаимоотношениях классов. Я подумал об этом, почему я создал веб-метод с параметром XmlDocument, и когда я использую его (ссылку), параметр был XmlElement. Благодарю. –

-1

Я всегда использовал струнные параметры. Я думаю, но я не уверен, что сериализованный xmldocument больше, чем сами данные xml. Кроме того, я не думаю, что приложение PHP может вызывать веб-службы, которым нужен XmlDocument.

+0

-1: Если вы не уверены в чем-то, тогда я предлагаю вам сохранить это до себя, пока не убедитесь. В этом случае вы просто ошибаетесь. –

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