Использовать WCF для реализации услуг в соответствии с отраслевым стандартом? - PullRequest
2 голосов
/ 01 марта 2010

Я ищу подходящую платформу для реализации (веб) уровня обслуживания в .NET. Я немного знаком с WCF и удивляюсь, можно ли его настроить так, как я хочу.

1) Существует отраслевой стандарт для сообщений, отправляемых / получаемых системой, который определяет операции, используемые типы и т. Д. Он основан на XML. Для этого требуется, чтобы все запросы / ответы были завернуты в конверт, например,:

<xxx:Message>
  <xxx:Header>
    //some header data
  </xxx:Header>
  <xxx:Body>
    <xxx:Command>
      //request data
    </xxx:Command>
    <xxx:Command>
      //request data
    </xxx:Command>
  <xxx:Body>
</xxx:Message> 

Элемент xxx:Command фактически идентифицирует выполняемую операцию и параметры или содержит результат выполнения команды.
WCF оборачивает все в конверт SOAP. Можно ли настроить отправку всех запросов, используя конверт в приведенном выше примере вместо SOAP? Как я должен кодировать свои услуги, чтобы все исходящие и входящие сообщения были правильно проанализированы. Стоит ли искать атрибуты [MessageContract] или [DataContract] или оба?

2) Односторонние операции. Отраслевой стандарт гласит, что службы должны ответить сообщением «подтверждение», что запрос был получен. Я смотрел на односторонние операции, которые реализуют подобный подход - они уведомляют клиента, как только сообщение получено сервером. Мне интересно, как я могу настроить отправку сообщения «подтверждение» в соответствии с отраслевым стандартом.

Если WCF не позволяет этого, можете ли вы переадресовать меня на любое другое возможное решение - Remoting, может быть, на другие библиотеки веб-сервисов?

1 Ответ

1 голос
/ 06 марта 2010

1) Ни один атрибут не поможет вам. Эти атрибуты интерпретируются привязкой (например, WS-HttpBinding), чтобы определить, как на самом деле создавать ваши сообщения. Для этого вам потребуется написать пользовательскую привязку и, возможно, настраиваемый сериализатор в зависимости от того, как структурированы поля «запроса данных».

2) Опять же, вам нужно написать собственную привязку.

Быстрый поиск не показал каких-либо существующих реализаций привязки GSA S2S для WCF.

Существуют двигатели для S2S (например, S2SConnect ). Затраты на лицензирование могут или не могут стоить экономии времени от необходимости разработки собственной реализации.

...