Получение поведения webservice/webmethod в службе WCF
Я явно не смотрю в нужных местах и настолько запутался, что даже не знаю, как задать этот вопрос, но вот идет...
Предыдущая версия продукта около десяти лет назад (как в ".NET Framework 2.0") предлагала один веб-метод через выделенный веб-сервис, который обрабатывал сообщение HTTP Post через SOAP. (Удалось ли мне выразить это в правильном контексте?) У меня было случайное взаимодействие с этой частью команды разработчиков, и я узнал достаточно, чтобы "тащиться" за ней во время ее тестирования.
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)] public class TheWebService : System.Web.Services.WebService { [WebMethod] public string DoSomething(string a, string b) { . . . } }И файл web.config:
<configuration> <system.web> <webServices> <protocols> <add name="HttpGet"/> <add name="HttpPost"/> </protocols> </webServices> </system.web> </configuration>Где-то на пути общего продвижения приложения к коммуникации на основе WCF доступность этого конкретного веб-метода была потеряна. Мне нужно его воскресить. Содержимое MSDN, которое я нашел, говорит мне, что эти веб-функции теперь завернуты где-то в WCF. Примерно там я теряюсь.
То, что когда-то было украшено атрибутом WebService, теперь имеет атрибут ServiceBehavior; то, что использовало раздел конфигурации system.web, теперь использует system.serviceModel; и у меня есть тестовое приложение, которое может вызвать нужный метод через ServiceModel.Объект ClientBase<T> использует библиотеку DLL, содержащую определение интерфейса службы. Но я не знаю, где искать информацию, которая поможет мне восстановить простую доступность HTTP Post (которая знает только URI и подпись webmethod), и не объясняю мне, как это вообще выглядит.
namespace Contracts { [ServiceContract(Namespace = "MyApp.SomeNS")] public interface IWcfService { [OperationContract] string DoSomething(string a, string b); } } namespace Services { [ServiceBehavior(Namespace = "MyApp.SomeNS")] public class WcfService : Contracts.IWcfService { public string DoSomething(string a, string b) { . . . } } }Мне трудно отделить новое от устаревшего или вытесненного. Могу ли я получить простой пример, который говорит: "Это направление, в котором вы хотите идти", и некоторые указатели на то, где я должен искать, чтобы понять этот пример, чтобы я мог его применить?
Что я уже пробовал:
Мне удалось изучить привязки конфигурации serviceModel достаточно, чтобы увидеть разницу между ними.
basicHttpBinding
и wsHttpBinding
когда тестовое приложение будет выполнено и признать, что basic
это то, что мне нужно (так как я не мог заставить работать даже простую аутентификацию), но это добавило столько же путаницы, сколько и ясности.