UPDDATE
Использование ASP.NET Web API.
ОК. Я оставил комментарий REST best practices: dont use WCF REST. Just avoid it like a plague
и чувствую, что должен это объяснить.
Одним из фундаментальных недостатков WCF является то, что он касается только полезной нагрузки . Например, Foo
и Bar
- это полезные данные.
[OperationContract]
public Foo Do(Bar bar)
{
...
}
Это один из арендаторов WCF, так что независимо от того, что такое транспорт 1017 *, мы доставим вам полезную нагрузку .
Но то, что он игнорирует, это context/envelope
вызова, который во многих случаях переносит специфический - так что большая часть контекста теряется. Фактически, сила HTTP заключается в его контексте, а не в полезной нагрузке, и в более ранних версиях WCF, не было никакого способа получить IP-адрес клиента в netTcpBinding
, и команда WCF была непреклонна, что они не могут предоставить его. Я не могу найти страницу сейчас, но помню, что читал комментарии, и парни из MS просто сказали, что это не поддерживается.
Используя WCF REST, вы теряете гибкость HTTP в выражении себя ясно (и им пришлось планировать это позже) в терминах:
- HTTP-код статуса
- Типы носителей HTTP
- ETag, ...
Новый веб-API Glenn Block работает для решения этой проблемы путем инкапсуляции полезной нагрузки в контексте:
public HttpResponse<Foo> Do(HttpRequest<Bar> bar) // PSEUDOCODE
{
...
}
Но для моего теста это не идеально, и я лично предпочитаю использовать фреймворки, такие как Nancy или даже простой ASP NET MVC, для предоставления веб-API.