私は同様の質問がされたことを知っていますが、それらのほとんどは時代遅れです。だからここにもう一度行きます:)。アプリケーションに完全なRESTサービスレイヤーを実装する必要があります。この問題を解決するには、どのフレームワークが最適かという問題があります。 RESTまたは必要なものではありません。認証は必須の機能です。ここに私のアイデアの一部があります。どう思いますか?
私は最初に ServiceStack を開始しました。これは、非効率(開発と実行時)と代替.NETフレームワークを使用したWebサービスの作成に課せられる摩擦のためです。
ServiceStackは、私たちが信じているように強力なフォーカスパフォーマンスを備えています 最高のエンドユーザーUXを提供します ---を含む組み込み キャッシングプロバイダーの強力なセット - 。NETの最高速JSONシリアライザー - -4x倍高速 .NETおよびMVCに同梱されているシリアライザーよりも(デフォルトのJavaScriptSerializerは.NETで最も遅い)。最大のパフォーマンスを得るために、実行時の反映や正規表現は使用されません。スマートな非線形ルートマッチングを採用しているため、より高速な組み込みのキャッシュプロバイダーを使用して ASP.NETのセッションのパフォーマンスが低い を回避することをお勧めします。
ServiceStackを使用すると、最小限のコードを使用して自動的になしcode-gen、config、pre/postビルドステップなど.
簡単な Hello World サービスの例:
public class Hello { public string Name { get; set; } }
public class HelloResponse { public string Result { get; set; } }
public class HelloService : IService
{
public object Get(Hello request)
{
return new HelloResponse { Result = "Hello, " + request.Name };
}
}
これらのクラスだけで、すべてのWebサービスが自動的にさまざまな異なる形式(JSON、XML、JSV、CSV、SOAP)で利用可能になり、すべてゼロの労力で。
C#を使用した厳密に型指定されたクライアントAPIの例:
var client = new JsonServiceClient("http://localhost/Service");
var response = client.Send<HelloResponse>(new Hello { Name = "World!" });
JQueryを使用したJavaScriptの例:
$.getJSON("http://localhost/Service/hello/World!", function(r) {
console.log(r.Result);
});
Webサービスを繰り返し開発する場合、Webサービスを視覚化することが重要であるため、ブラウザーでWebサービスを表示するときのデフォルトのContent-Typeは、人にやさしい JSON HTML5 Report 形式(スタンドアロンでも http://ajaxstack.com/jsonreport/ )これにより、Webサービスの応答を一目で視覚化できます。
また、WebサービスAPIを文書化するための優れた方法として機能する 自動生成されたメタデータページ (独自のカスタム説明で注釈を付けることができます)も取得します。
しかし、もし彼らが開発をやめることに決めたら
ServiceStackの作成者として、私は近い将来に開発を放棄することはないと思います。それを使ってシステムを毎日構築しているのは、それを開発するのに、よりクリーンで、より高速で、より生産的なフレームワークであることがわかったからです。
DTO-first message-based アーキテクチャ Service Interface pattern を有効にするアーキテクチャを促進する.NET Webサービスフレームワークはほとんどありません= =で一般的に見られるWebサービスのベストプラクティスJavaエコシステムにより、バッチフルで粗粒度のSOAベースのWebサービスを簡単に開発できます。
0リスクがあり、別の.NET Webサービスフレームワークのために破棄されます。他の.NETフレームワークがWebサービスのベストプラクティス(つまり、DTO /リモートファサードとサービスインターフェースのパターン)を積極的に宣伝し、パフォーマンスに重点を置いているとは信じていないからです。
しかし、20人近くの貢献者がいるオープンソースプロジェクトであっても、この恐れは緩和されます。 MSが放棄し、誰もが後継者に移行することを余儀なくされた独自のクローズドソースフレームワークはいくつありますか?オープンソースソフトウェアは進化し、放棄されたり書き直されたりすることはありません。
ServiceStackのソースコード全体は http://github.com/ServiceStack の下にあります。ロックインはなく、GitHubを使用すると、多くの人がすでに行っているように、誰でも簡単にフォークして開発を続行できます。
最後に、ServiceStackはIIS 6/7のWindowsまたはLinux/OSXのMonoを使用して6/7の任意のASP.NETホストで実行できます。スタンドアロンのHttpListenerホストもサポートしているため、 Webサーバー、つまり、Windowsサービス内のコンソールまたはWindowsアプリケーションに埋め込まれ、さらに MonoTouch iPhoneアプリケーション内でホストされる .
最近 Nancy で遊んでいて、私も Manos de Mono を検討しています。ナンシーのホームページの例です。
public class HelloModule : NancyModule
{
public HelloModule()
{
Get["/"] = parameters => "Hello World";
}
}
私にとって、最も簡単でクリーンなソリューションは、JsonResultを返すメソッドを使用してASP.NET MVC3のコントローラーとしてサービスを実装することです。
利点:
MVCフレームワークが面倒な作業を行います
コードの代わりに属性を使用してモデル検証を実装できます
IISの任意のバージョンへのXCopy展開