私はServiceStackをWindowsService to Host RESTサービスで使用するために評価しています。これまでのところ、これは優れており、WCFよりもはるかに優れています。はるかに使いやすいことは言うまでもありません。
上記のWindowsサービスは、「ダッシュボード」として機能する単純なHTMLページを提供できる必要があります。もちろん、ServiceStackはダッシュボードにjsonデータを提供するために使用されますが、画像やjsとともにダッシュボードページを提供するのはどうでしょうか。これは可能でしょうか?本格的なASP.Netをホストするのではなく、IISがこれらのサーバーで実行されることはないという厳格な制限があります。単一の管理マシンのみが実行されるため、スケーラビリティも要件ではありません。ダッシュボードを表示します。
ServiceStackのHTMLストーリーの大幅な改善が、 ServiceStack.Razor NuGetパッケージ のv3.9.11に追加されました。このサポートにより、ServiceStackは完全なWebサイトおよびWebサービスフレームワークに移行し、WCF、MVC、およびWebApiをはるかに簡単に置き換えることができます。
Razor Supportを使用したServiceStackの新しいHTMLストーリーを説明する完全なドキュメントは、 Razor Rockstars デモWebサイトで管理されています。
Razorのサポートとその機能を説明する完全なドキュメントは、上記のリンクで説明されています。
HTML Content-Typeは、真のRESTサービスフレームワークから期待されるように、ServiceStackに追加されました。つまり、Razorビューを追加するだけで、既存のサービスを拡張できます。 text/html
Content-Typeに対するクライアントの要求(既存の登録済みフォーマットには影響しません)。例:この / rockstars RESTサービスは引き続きアクセスできます)他のすべてのコンテンツタイプ:
さらに、サービスに[ClientCanSwapTemplates]
属性がある場合、クライアントは実行時にページのビューとテンプレートを交換できます。上記の同じページは次のとおりです。
このようにServiceStackがHTML形式を自然に採用しているため、HTMLとリッチなネイティブモバイルおよびデスクトップクライアントの両方にサービスを提供できる1セットのサービスを開発するのは簡単です。
Razorのサポートが追加される前は、ServiceStackでHTMLページを提供するためのいくつかの戦略があります。
既存のファイルに対してWeb要求を行うと、静的ファイルハンドラーとともに返されます。次に、ajax jsonをWebサービスにコールバックするだけで、動的にページを生成できます。
WindowsサービスAppHostスターターテンプレート のTODOバックボーンアプリケーションはこのように機能します。 (およびServiceStackの他のほとんどのサンプルプロジェクト:-)
Webサービスから返されたstringは、応答ストリーム 'as-is'に直接書き込まれるため、独自のhtmlテンプレートソリューションを使用してhtmlを返すことができます。 。
ServiceStackの その他の可能な戻り値の型 とその処理方法のリストを次に示します。
ServiceStackに組み込まれているビューエンジンは Markdown Razor -MVCのRazorに触発されましたが、Markdown構文を使用しています。カスタム基本クラスと拡張メソッド/ユーティリティをサポートすることは非常に拡張可能です。
Markdown Razorを使用する優れた機能は、json、xmlなどを返す同じWebサービスであり、同じURLで動的に生成されたhtmlページのビューモデルにすることもできます。
この例は カテゴリWebサービス です。ここで結果を確認できます: http://www.servicestack.net/docs/category/Framework
[〜#〜] json [〜#〜] 、 [〜#〜] xml [〜#〜] などで同じサービスを再度取得することもできます。 部分的に生成されたhtmlページ (テンプレートなし)および 動的に生成されたマークダウン 。
このページは、このMarkdownRazorビューに送信されたWebサービスDTO /ビューモデルを使用して作成されました https://raw.github.com/ServiceStack/ServiceStack.Examples/master/src/Docs/Views/Category.md
WebサービスにMarkdownRazorページを指定した場合、それは現在表示されているデフォルトの HTML5 JSONレポート の上で使用されます。
HTML出力のレンダリングに使用する適切なMarkdownテンプレートを解決するためにServiceStackが使用する解決順序は次のとおりです。
ServiceStackは、既存のASP.NETWebアプリケーションの有無にかかわらず使用できます。アプリケーションがHTML-heavyおよびREST-Services-lightの場合一般的なアプローチは、 / custompath (例:/ api)でServiceStackをホストすることです。これにより、すべてのHTMLページの生成にASP.NETを使用できます。
代わりにASP.NETMVCを使用する場合は、MVCのGlobal.asaxRegisterRoutes()のルートを無視する必要があります。
routes.IgnoreRoute ("servicestack/{*pathInfo}");