Запуск SOAP и RESTful по одному URL - PullRequest
       14

Запуск SOAP и RESTful по одному URL

3 голосов
/ 04 февраля 2011

Скажем, у нас есть веб-сайт, который отвечает на заголовок хоста "kebab-shop.intra.net"

Возможно ли иметь в этом URL и SOAP, и RESTful?

То естьоба они обрабатываются в развернутом коде.

  • kebab-shop.intra.net/takeaway.asmx
  • kebab-shop.intra.net/kebab/get/...

Мне сказали, что это невозможнобыть сделано, без особых объяснений. Как этот ответ .Это может быть, я обезьяна базы данных, но я хотел бы подумать о том, какие варианты у меня есть или нет, пожалуйста.

Пока мысли

  • Отдельный хостзаголовки, например, добавить kebab-shop-rest.intra.net
  • Отдельные веб-сайты

В идеале, я хотел бы иметь один веб-сайт, одно URL имя домена, один заголовок узла,Нулевой шанс?

Это IIS 6 с .net 4. И у нас есть некоторые большие корпоративные ограничения, которые означают, что мы ограничены файлом zip, который можно поместить в соответствующую папку, используемую в Интернете.сайт.Это предназначено для того, чтобы позволить нашим клиентам мигрировать без больших затрат на поддержку , корпоративной , инфраструктуры и затрат на развертывание.Сосуществование будет только в течение месяца или трех.

Редактировать: я спрашиваю, потому что я не веб-разработчик.Если мои условия неверны, вот почему ...

Итак ... Мне нужны SOAP и REST на kebab-shop.intra.net на IIS 6 без сложности.

Ответы [ 2 ]

4 голосов
/ 04 февраля 2011

То есть оба они обрабатываются в развернутом коде.

* kebab-shop.intra.net/takeaway.asmx
* kebab-shop.intra.net/kebab/get/...

Да, это определенно должно быть возможно. Если у вас есть одна служба WCF, вы можете легко выставить две отдельные конечные точки для одной и той же службы - одну, например, с помощью. basicHttpBinding (примерно эквивалентно ASMX), а другой с webHttpBinding (REST).

Полные URL-адреса должны отличаться - но первая часть может быть такой же, я считаю.

Если вы размещаете в IIS6, вам нужен один виртуальный каталог, который будет частично определять конечную точку SOAP - это должно быть что-то вроде:

http://kebab-shop.intra.net/YourVirtDir/takeaway.svc

(или: http://kebab-shop.intra.net/YourVirtDir/takeaway.asmx, если вы настаиваете на использовании устаревшего веб-сервиса ASP.NET).

и конечная точка REST может находиться в одном виртуальном каталоге и определять шаблоны URI, например Вы можете иметь что-то вроде:

http://kebab-shop.intra.net/YourVirtDir/TakeKebab/gbn

или похожие URL.

Однако: проверяя это сам, я обнаружил, что обе конечные точки службы не могут «жить» с одного базового адреса - с одной из них должен быть связан другой «относительный адрес».

Так что либо вы добавите, например, «SOAP» к вашей конечной точке SOAP

http://kebab-shop.intra.net/YourVirtDir/takeaway.svc/SOAP/GetKebab
http://kebab-shop.intra.net/YourVirtDir/TakeKebab/gbn

или вы добавляете что-то в свою службу REST

http://kebab-shop.intra.net/YourVirtDir/takeaway.svc/GetKebab
http://kebab-shop.intra.net/YourVirtDir/REST/TakeKebab/gbn
3 голосов
/ 04 февраля 2011

Я не вижу причины, по которой ты не можешь.Обычно ваши конечные точки SOAP будут представлять собой один определенный URL-адрес для каждой службы, тогда как для ресурсов, предоставляемых через REST, у вас будет один URL-адрес для каждого ресурса (следуя «шаблонам URL-адресов»).

Примеры URL-адресов для SOAP:

http://kebab-shop.intra.net/soap/service1    
http://kebab-shop.intra.net/soap/service2

Пример шаблонов URL для REST:

http://kebab-shop.intra.net/rest/{resourcetype}/{id}/

e.g.: http://kebab-shop.intra.net/rest/monkeys/32/

и т.д ...

...