Какая технология .NET Web наиболее подходит для этого? - PullRequest
0 голосов
/ 13 сентября 2010

Я буду взаимодействовать с третьей стороной - обмен информацией осуществляется следующим образом.

Если мое приложение является клиентом, а третье лицо - сервером, то:

  • Сервер-клиент: я даю им заранее определенный URL, и они отправляют данные с помощью HTTP POST. Параметры POST содержат переменную «xml» с запросом в собственном формате XML.
  • Клиент-сервер: это делается аналогичным образом, только на этот раз, когда я отправляю запрос (не имеет отношения к вопросу, я думаю)

Возможно ли это с WCF? Если так, то как? Если нет, ASP? MVC? В любом случае, пожалуйста, дайте несколько указаний относительно конкретных шагов.

Спасибо

Редактировать: данный ответ представляет собой HTTP 200 вместе с собственным XML-ответом. Как правило, поток данных будет:

Сервер отправляет запрос в службу клиента => Генерировать ответ (обычно клиент запрашивает у сервера что-то сделать) => Вернуть HTTP 200 с ответом XML

Ответы [ 5 ]

4 голосов
/ 13 сентября 2010

Я бы предложил что-то вроде службы REST WCF. Вы можете настроить его на прием запроса POST с одним строковым параметром. Строка будет содержать ваш XML, который вы можете загрузить в XDocument или что-то подобное для анализа вашего XML.

Это может выглядеть примерно так:

[OperationContract]
[WebInvoke(Method="POST")]
public string AcceptRequest(string Xml)
{
  // Do something here
}

Вы на самом деле не указали, что вам нужно делать с сообщением или как вы должны отвечать, поэтому в зависимости от этих требований это может не сработать.

Рик Страл (Rick Strahl) публикует серию постов в блоге об услугах WCF REST, которые вы можете начать здесь:

1 голос
/ 13 сентября 2010

Мне бы очень хотелось узнать, почему вы делаете старые школьные веб-сервисы (пользовательский XML поверх пользовательской конечной точки HTTP) в 2010 году. Тем не менее, я думаю, что в этом сценарии вы, вероятно, захотите либо:

a)Старый простой IHttpHandler принимает необработанный ввод и возвращает ответ.
b) Приложение ASP.NET MVC, выполняющее то же самое на выделенном контроллере.

Решение действительно будет зависеть от того, что еще нужно развернуть сэто приложение, но любой из них будет работать.Кикеры здесь - это ответы синхронные, а домен относительно сфокусированный.

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

1 голос
/ 13 сентября 2010

Я бы посмотрел на WCF, не зная подробных подробностей того, что вы делаете, я могу сказать вам следующее.

Windows Communication Foundation (WCF) создан для связи между размещенной службой и клиентомпоэтому он должен делать именно то, что вы хотите.

Больше информации здесь MSDN WCF

0 голосов
/ 13 сентября 2010

imho вы смешиваете различные технологии здесь.

Конечно, вы можете использовать классические asp.net, asp.net mvc и WCF для этого, но возникает вопрос: как вам нужно это запустить?особенно запрос, который вы инициируете, когда он был инициирован?

WCF предназначен именно для сценариев связи, поэтому он может быть наиболее гибким вариантом, который у вас есть.То, что не упомянуто, является ответом на то, что вам нужно для инициирования запроса на вашей стороне.

Это может быть часть страницы, которую вы кому-то представляете, в этом случае вы также хотите, чтобы asp.net (mvc) инициировал операцию.Может потребоваться запуск в качестве службы, и в этом случае вы можете использовать только решение WCF.Может потребоваться запуск из клиентского приложения, и в этом случае вам также понадобится указанное приложение.

Выше было сказано, если вам уже нужно выполнить asp.net (mvc) и обмен очень прост,мог бы сделать это без введения WCF.Меньше изучения.

Наконец, если HTTP POST + xml - это не просто пользовательская вещь, а вызов веб-службы, вы можете использовать WCF для получения запросов.Тем более, что это возможно, вам понадобятся другие части WS, такие как WS-Security.

0 голосов
/ 13 сентября 2010

Я не верю, что вы можете сделать это с WCF, хотя я не эксперт в WCF ... Если бы это был я, я бы создал файл ASP.Net ashx для получения данных, а затем создал страницу aspxВы можете сделать загрузку / отправку файла, используя WebClient, или что-то в этом роде.

...