Совершение звонка WCF с Ajax

  1. Требуемый использовать УСПОКОИТЕЛЬНЫЙ сервис, чтобы смочь выполнить ajax вызов к wcf сервису (например: при помощи WebInvoke атрибут по контрактам на Операцию)
  2. После того как сервис сделан УСПОКОИТЕЛЬНЫМ путем добавления a webHttp при привязывании сервисного хоста хост может иметь другие конечные точки также? (wsHttp или netTcp)
  3. Требуется что aspNetCompatibilityEnabled имейте значение true для сервиса, который имеет webHttp, связывающий (и может эта установка сосуществовать для других конечных точек),
  4. Я понимаю, что могу использовать и JQuery и ScriptManager для того, чтобы сделать WCF обращается к клиенту. Почему я должен использовать один по другому?
5
задан DotnetDude 12 March 2010 в 17:48
поделиться

1 ответ

Ответы

  1. Нет.
    AJAX обычно используется для отправки простых запросов HTTP GET ("REST"). Так не должно быть. Вы также можете отформатировать полезную нагрузку с помощью конверта SOAP и отправить его в конечную точку. В этом случае служба WCF должна иметь как минимум wsHttp или basicHttpBinding. Вот пример использования VBScript для создания и отправки запроса SOAP , но вы можете сделать то же самое в Javascript. Вы не можете использовать более продвинутые расширения SOAP, такие как WS-Security, XML DigSig и так далее. Ну, вы могли бы , но это было бы непрактично. Например, я не знаю ни одной библиотеки канонизации XML в Javascript, которая необходима для выполнения WS-Security или цифровых подписей. Есть 17 подобных препятствий. Результат: вы не можете использовать более продвинутые расширения SOAP при вызове из Javascript.
    .
    Если вы используете jQuery ajax, вам нужно будет использовать обратный вызов beforeSend в запросе ajax для установки заголовка SOAPAction.
    .
    При этом гораздо проще обрабатывать json в программе Javascript, чем обходить DOM XML-документа. Другими словами, вам лучше использовать JSON / REST при подключении из Javascript к WCF вместо SOAP. Думаю, иногда это не вариант.

  2. Да
    Служба WCF может иметь несколько конечных точек, и они могут прослушивать один и тот же или разные транспорты, такие как HTTP, net.tcp, net.pipe или net.msmq.

  3. Нет. aspNetCompatibilityEnabled просто включает некоторые ASMX-подобные функции на сервере.Он влияет на то, как разработан сервис, и не зависит от подписи сообщения. Это исключает использование протоколов, отличных от HTTP. Подробнее об этом см. Статью Венлун Дуна .

  4. Какую структуру использовать на клиенте - что проще? У меня нет опыта работы со ScriptManager, но критерии принятия решения довольно просты. jQuery отлично работает и подходит, если вы уже используете jQuery. Если у вас нет или вам нужен jQuery, вы можете использовать XmlHttpRequest для отправки запросов SOAP или REST. Если это что-то неуместное, используйте что-нибудь другое.

4
ответ дан 15 December 2019 в 00:57
поделиться
Другие вопросы по тегам:

Похожие вопросы: