John Whitmire Ответов: 0

Получение поведения 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 это то, что мне нужно (так как я не мог заставить работать даже простую аутентификацию), но это добавило столько же путаницы, сколько и ясности.

0 Ответов