サービス コントラクトにさまざまな応答形式を持つさまざまなメソッドを用意することで、これを非常に簡単に行うことができるはずです。
interface IYourService
{
[OperationContract]
[WebGet(UriTemplate="/YourMethod/XML", ResponseFormat=WebMessageFormat.Xml)]
SomeReturnObject YourMethodAsXml(.....);
[OperationContract]
[WebGet(UriTemplate="/YourMethod/JSON", ResponseFormat=WebMessageFormat.Json)]
SomeReturnObject YourMethodAsJson(.....);
}
両方のメソッドは、データの実際の計算/ルックアップまたはあなたがしていることを行う共通のコア関数を呼び出すことができます。
これには大きな構成戦争は含まれていないと思います....そして、3つのポイントのうち少なくとも2つ(XMLとJSON)を解決します。
JSONP は WCF でネイティブにサポートされていませんが、参照した記事が示すように、この動作をかなり簡単に追加できます。ただし、この WCF 拡張機能を有効にするには、いくつかの設定を配線する必要があります。しかし、私が見る限り、それはサーバー上で 1 回限りのものであるはずです。
この構成セットアップを本当に処理できない場合は、もちろん、WCF REST サービスに使用されるWebServiceHostFactoryWithJSONPSupport
からカスタムを派生させWebServiceHostFactory
、必要な拡張機能 (サービスの動作など) をホスト ファクトリに追加することができます。クラスは封印されていないため、十分に単純なはずです(少なくとも理論的には:-))。