更新
ASP.NET Web API を使用します。
OKコメントを残しましたREST best practices: dont use WCF REST. Just avoid it like a plague
が、説明しなければならないと感じています。
WCF の根本的な欠陥の 1 つは、それがPayloadのみに関係していることです。たとえば、Foo
とBar
はペイロードです。
[OperationContract]
public Foo Do(Bar bar)
{
...
}
これは WCF のテナントの 1 つであるため、トランスポートが何であれ、ペイロードが渡されます。
しかし、それが無視するのは、context/envelope
多くの場合トランスポート固有の呼び出しです。そのため、多くのコンテキストが失われます。実際、HTTP の力はペイロードではなくコンテキストにあり、以前のバージョンの WCF では、クライアントの IP アドレスを取得する方法がなくnetTcpBinding
、WCF チームはそれを提供できないと断言していました。私は今ページを見つけることができませんが、コメントを読んだことを覚えています.MSの担当者は、これはサポートされていないと言いました.
WCF REST を使用すると、次の点で HTTP の柔軟性が失われ、自分自身を明確に表現できなくなります (後で修正する必要がありました)。
- HTTP ステータス コード
- HTTP メディア タイプ
- Eタグ、...
新しい Web API である Glenn Block が機能しており、ペイロードをコンテキストにカプセル化することで、この問題に対処しています。
public HttpResponse<Foo> Do(HttpRequest<Bar> bar) // PSEUDOCODE
{
...
}
しかし、私のテストではこれは完璧ではなく、個人的には Nancy などのフレームワークやプレーンな ASP NET MVC を使用して Web API を公開することを好みます。