WCF для создания службы на основе SOAP

Я пытаюсь найти хорошие учебные пособия, которые показывали бы мне создание простой службы на основе SOAP с использованием WCF и ее развертывания. Я занимаюсь поиском в Интернете за последние 2 часа и не могу найти хороший ресурс. Может ли кто-нибудь мне помочь?

Ответ 1

Что касается ресурсов: там Центр разработчиков MSDN WCF, в котором есть все, начиная от новичков и заканчивая статьями и образцами кода.

Кроме того, проверьте экранную библиотеку на MSDN для некоторых действительно полезных, 10-15-минутных фрагментов информации практически по любой теме, связанной с WCF, которую вы можете интересоваться.

Также очень хороши статьи Сервисные станции в журнале MSDN по различным аспектам WCF - некоторые более простые, такие как Сериализация в WCF или WCF Bindings in Depth, еще более продвинутый и эзотерический - но всегда стоит посмотреть!

Обновление: для обучения WCF и SOAP, например,

и многое другое - есть тонна учебных материалов и учебных материалов по WCF с использованием привязок SOAP - не просто REST-материал наверняка!

Ответ 2

Конечные точки REST/SOAP для службы WCF

Вы можете открыть службу в двух разных конечных точках. SOAP можно использовать привязку, которая поддерживает SOAP, например. basicHttpBinding, RESTful можно использовать webHttpBinding. Я предполагаю, что ваша служба REST будет находиться в JSON, в этом случае вам необходимо настроить две конечные точки со следующей конфигурацией поведения

<endpointBehaviors>
<behavior name="jsonBehavior">
<enableWebScript/>
</behavior>
</endpointBehaviors>

Примером конфигурации конечной точки в вашем сценарии является

<services>
<service name="TestService">
<endpoint address="soap" binding="basicHttpBinding" contract="ITestService"/>
<endpoint address="json" binding="webHttpBinding"  behaviorConfiguration="jsonBehavior" contract="ITestService"/>
</service>
</services>

поэтому услуга будет доступна в

http://www.example.com/soap http://www.example.com/json Примените [WebGet] к контракту операции, чтобы сделать его RESTful. например.

открытый интерфейс ITestService {  [OperationContract]  [WebGet]  строка HelloWorld (строковый текст) }

Обратите внимание: если служба REST не находится в JSON, параметры операций не могут содержать сложный тип. Для простого старого XML в качестве формата возврата это пример, который будет работать как для SOAP, так и для XML.

[ServiceContract(Namespace = "http://test")]
public interface ITestService
{
[OperationContract]
[WebGet(UriTemplate = "accounts/{id}")]
Account[] GetAccount(string id);
}

Поведение POX для REST Plain Old XML

<behavior name="poxBehavior">
  <webHttp/>
</behavior>

Конечные точки

<services>
<service name="TestService">
<endpoint address="soap" binding="basicHttpBinding" contract="ITestService"/>
<endpoint address="xml" binding="webHttpBinding"  behaviorConfiguration="poxBehavior" contract="ITestService"/>
</service>
</services>

Сервис будет доступен в

http://www.example.com/soap http://www.example.com/xml
Запрос REST попробует его в браузере,
http://www.example.com/xml/accounts/A123

Конфигурация конечной точки клиента SOAP для службы SOAP после добавления ссылки на службу,

<client>
<endpoint address="http://www.example.com/soap" binding="basicHttpBinding"
  contract="ITestService" name="BasicHttpBinding_ITestService" />

в С#

TestServiceClient client = new TestServiceClient();
client.GetAccount("A123");

Другой способ сделать это - разоблачить два разных контракта на обслуживание и каждый из них с конкретной конфигурацией. Это может вызвать некоторые дубликаты на уровне кода, однако в конце дня вы хотите заставить его работать.

Ответ 3

WCF - это технология построения служб. Он не предполагает, что сервисами являются сервисы SOAP или RESTFul или что-то еще. Вам необходимо изучить основы WCf, такие как Service и DataContracts, Endpoints, Bindings и т.д., Чтобы иметь возможность работать с любым видом сервиса.

Ссылки, данные marc_s, очень полезны для этого.

Теперь, что касается SOAP, это формат\технология, используемый для переноса сообщений с одной конечной точки на другую. Эта информация освещена аспектом привязки WCF. Когда вы выставляете и потребляете услуги, вам просто нужно выбрать привязку, которая использует SOAP.

Следовательно, вы должны, используя ссылки, данные marc_s, изучить основы WCF для создания службы. Затем вы узнаете, как создать службу и какую привязку выбрать для использования SOAP.

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