私のターゲット プロジェクトは、Windows 8、WinRT、および Windows Phone 8 です。ソースを共有するために、ソリューションにポータブル クラス ライブラリを使用しています。別の MVC Web Api プロジェクトで作成されたいくつかの REST サービスを呼び出す必要がHttpClient
ありますが、PCL でクラスを使用できません。それを解決するための良いアプローチはどれですか?私はサービスインターフェイスで考えていたので、プラットフォームごとにHttpClient
、WebClient
またはそれぞれの場合に適切なクラスを使用してプロジェクトを作成しました。このアプローチは機能する可能性がありますが、他の方法があるかどうか疑問に思っていました。
4 に答える
Microsoft は、このライブラリを移植可能 (PCL) になるように書き直しましたHttpClient
。これは NuGet にあります。当面の間、プレリリースとしてのみ利用できるため、NuGet GUI パッケージ マネージャーを使用している場合は、必ず [プレリリースを含める] に設定してください。コマンドラインから:
Install-Package Microsoft.Net.Http
Microsoft の見解では、HttpClient は必ずしも移植可能ではありません。他の唯一の方法は、各プロジェクトが実装する個別のライブラリを作成し、説明したようにすることです。このようにして、ターゲットにしたいすべてのプラットフォームで共通性を実現できます。
対象となるプラットフォームに関しては、ある程度の同等性があると思いました...別のプロジェクトが必要な場合は、コードファイルを他のプロジェクトにリンクして、複数のプロジェクトを維持する必要がないようにするか、Project Linkerを使用することもできます(ただし、2012 バージョンが存在するかどうかはわかりません)。
ポータブル REST が最近 GitHub で利用できるようになり、WebClient が利用できない場合に Web リクエストを作成するのに役立つはずです。
https://github.com/advancedrei/PortableRest#readme
PortableRest は、REST API クライアントを他のポータブル クラス ライブラリに実装するためのポータブル クラス ライブラリです。JSON.NET を利用して迅速でカスタマイズ可能なシリアル化を実現し、Microsoft.Bcl.Async ライブラリを利用して、任意のプラットフォームで実行できるようにします。いくつかの変更を加えて再コンパイルする必要がありますが、RestSharp と大部分は互換性があるように設計されています。
この最初のリリースでは、単純な JSON 要求のサポートが制限されています。今後のリリースでは、より多くのオプション (XML と、できれば DataContract のサポートを含む) が利用可能になります。