Я пытаюсь найти хорошие учебные пособия, которые показывали бы мне создание простой службы на основе SOAP с использованием WCF и ее развертывания. Я занимаюсь поиском в Интернете за последние 2 часа и не могу найти хороший ресурс. Может ли кто-нибудь мне помочь?
WCF для создания службы на основе SOAP
Ответ 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.
Надеюсь, что это поможет.