WCF и [DATACONTRACT] + [DATAMEMBER] - PullRequest
       14

WCF и [DATACONTRACT] + [DATAMEMBER]

0 голосов
/ 24 мая 2011

Мне было интересно, как добавить DataContract к моему сервису?Я имею в виду, я знаю, что должен создать класс, поместить над ним [DATACONTRACT], а затем добавить [DATAMEMBER] поверх каждого члена, но затем, как добавить DataContract к службе (у меня уже есть [ServiceContract]и [OperationContract] работает на службе) ??

В настоящий момент я делаю все программно (нет файла .config).

некоторый фрагмент кода, показывающий, как я запускаю и добавляю свой OperationContract: (Я использую .NET 4.0)

Сервисная сторона:

            using (ServiceHost host = new ServiceHost(typeof(StringReverser), new Uri[]{ new Uri("net.tcp://localhost") }))
            {

                   host.AddServiceEndpoint(typeof(IStringReverser), new NetTcpBinding(), "TCPReverse");

                   host.Open();
            }

Клиентская сторона:

        Callbacks myCallbacks = new Callbacks();

        DuplexChannelFactory<IStringReverser> TCPFactory =
           new DuplexChannelFactory<IStringReverser>(
              myCallbacks,
              new NetTcpBinding());

        TCPFactory.Credentials.Windows.ClientCredential = new System.Net.NetworkCredential("username", "password");
        IStringReverser TCPProxy = TCPFactory.CreateChannel();

        Console.WriteLine("Client connected");

Заранее спасибо

Ответы [ 2 ]

0 голосов
/ 24 мая 2011

DataContracts - это то, что передается операциям вашего сервиса. Обычно, если у вас есть сложные типы в качестве параметров, вы будете украшать их атрибутом DataContract.

Если вы имеете дело только с примитивными типами в качестве параметров, то нечего украшать с помощью DataContract.

0 голосов
/ 24 мая 2011

Вам не нужно никуда «добавлять» данные контракта. Вам просто нужно использовать его в качестве параметра или возвращаемого значения любой операции в вашем контракте на обслуживание или контракте обратного вызова. Контракт данных определяет данные, передаваемые как часть запроса или ответа на обслуживание. Если контракт данных не используется какой-либо операцией службы, он, очевидно, не имеет отношения к службе (в случае метаданных он не включается).

Единственным исключением являются некоторые сложные сценарии с известными типами, но, вероятно, этого не произойдет в этом вопросе.

...