WCF REST для опций XML - PullRequest
       1

WCF REST для опций XML

0 голосов
/ 09 февраля 2012

Я создаю службу WCF REST, в которой я возвращаю некоторый XML.

У меня есть интерфейс с методом

 [OperationContract]
 [WebInvoke(Method = "GET", RequestFormat = WebMessageFormat.Xml, UriTemplate = "?listcameras", ResponseFormat = WebMessageFormat.Xml)]
 List<TItem> ListItems();

, где TITem

 [DataContract(Name = "SomeContract", Namespace = "")]
 public class TITem
 {
     [DataMember]
     public string Member1
     {
         get;
         set;
     }

     [DataMember]
     public string Member2
     {
         get;
         set;
     }
 }

При вызове этого метода я затем возвращаюсь обратно в XML из HTTPWebRequest, списка типа TITem в XML.Обратите внимание, что я должен сделать Namespace = "", иначе я не могу использовать XDocument.Метод потомков и получить совпадающее имя.

Мне просто нужны некоторые мнения, если это лучший способ вернуть XML из какой-либо службы WCF.Я хочу, чтобы моя служба WCF была расширяемой и, возможно, в будущем вернет больше, чем просто XML

1 Ответ

0 голосов
/ 26 апреля 2012

Нет проблем с использованием пространства имен, которое является строкой. Пусто. Весь смысл использования пространства имен вообще состоит в том, чтобы отличать его от других контрактов данных, которые имеют то же имя DataContract, но другое пространство имен DataContract. Это особенно важно, поскольку имена / пространства имен DataContract никоим образом не обязательно связаны с именами / пространствами имен, полученными из их представления типа CLR.

Другими словами, если вы уверены, что у вас НЕ будет других типов с тем же именем DataContract в другом пространстве имен в вашем приложении - и , если вы считаете, что в будущем их не будет. из-за соображений управления версиями - вы можете продолжать использовать string.Empty в качестве пространства имен контракта данных.

Помимо только атрибута операции (WebGet / WebInvoke), вам также необходимо учитывать, какую привязку и поведение вы используете сейчас и что вы будете использовать в будущем. Например, прямо сейчас вы можете использовать WebHttpBinding и WebHttpBehavior. Вы можете контролировать, какие форматы данных также поддерживаются на уровне WebHttpBinding - XML, JSON, Binary и т. Д. Вы также можете контролировать, какой ТИП XML возвращается из WebHttpBehavior - XML ​​может быть «пустым» или «может быть» завернутый », который имеет дополнительную вложенность. Наконец, вы можете даже подключить свой собственный DataContractSerializerOperationBehavior в какой-то момент, чтобы подключить совершенно новый сериализатор или собственный формат данных, если вы захотите (хотя, если вы сделаете это, вам потребуется реализовать свой собственный сериализатор, форматтер, поведение , связывание, кодирование и т. д., как это было сделано для SOAP и JSON.)

Надеюсь, это поможет!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...