web-dev-qa-db-ja.com

ServiceStackでHTMLページを提供することは可能ですか?

私はServiceStackをWindowsService to Host RESTサービスで使用するために評価しています。これまでのところ、これは優れており、WCFよりもはるかに優れています。はるかに使いやすいことは言うまでもありません。

上記のWindowsサービスは、「ダッシュボード」として機能する単純なHTMLページを提供できる必要があります。もちろん、ServiceStackはダッシュボードにjsonデータを提供するために使用されますが、画像やjsとともにダッシュボードページを提供するのはどうでしょうか。これは可能でしょうか?本格的なASP.Netをホストするのではなく、IISがこれらのサーバーで実行されることはないという厳格な制限があります。単一の管理マシンのみが実行されるため、スケーラビリティも要件ではありません。ダッシュボードを表示します。

31
Kilhoffer

WebおよびWebサービスにServiceStackのみを使用する

ServiceStackの新しいRazorViewEngineサポート

ServiceStackのHTMLストーリーの大幅な改善が、 ServiceStack.Razor NuGetパッケージv3.9.11に追加されました。このサポートにより、ServiceStackは完全なWebサイトおよびWebサービスフレームワークに移行し、WCF、MVC、およびWebApiをはるかに簡単に置き換えることができます。

Razor Supportを使用したServiceStackの新しいHTMLストーリーを説明する完全なドキュメントは、 Razor Rockstars デモWebサイトで管理されています。

Razorのサポートとその機能を説明する完全なドキュメントは、上記のリンクで説明されています。

ただREST HTML形式のサービスフレームワーク

HTML Content-Typeは、真のRESTサービスフレームワークから期待されるように、ServiceStackに追加されました。つまり、Razorビューを追加するだけで、既存のサービスを拡張できます。 text/html Content-Typeに対するクライアントの要求(既存の登録済みフォーマットには影響しません)。例:この / rockstars RESTサービスは引き続きアクセスできます)他のすべてのコンテンツタイプ:

さらに、サービスに[ClientCanSwapTemplates]属性がある場合、クライアントは実行時にページのビューとテンプレートを交換できます。上記の同じページは次のとおりです。

このようにServiceStackがHTML形式を自然に採用しているため、HTMLとリッチなネイティブモバイルおよびデスクトップクライアントの両方にサービスを提供できる1セットのサービスを開発するのは簡単です。

HTMLを提供する他の方法

Razorのサポートが追加される前は、ServiceStackでHTMLページを提供するためのいくつかの戦略があります。

Ajax呼び出しで静的htmlページを使用する

既存のファイルに対してWeb要求を行うと、静的ファイルハンドラーとともに返されます。次に、ajax jsonをWebサービスにコールバックするだけで、動的にページを生成できます。

WindowsサービスAppHostスターターテンプレート のTODOバックボーンアプリケーションはこのように機能します。 (およびServiceStackの他のほとんどのサンプルプロジェクト:-)

文字列を返す

Webサービスから返されたstringは、応答ストリーム 'as-is'に直接書き込まれるため、独自のhtmlテンプレートソリューションを使用してhtmlを返すことができます。 。

ServiceStackの その他の可能な戻り値の型 とその処理方法のリストを次に示します。

MarkdownRazorの使用

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が使用する解決順序は次のとおりです。

  • Webサービスが(カスタマイズされたIHttpResult.TemplateName応答を介して)テンプレートを指定する場合、その名前のビュー。
  • 最初に/ Viewsを検索し、次に/ Views/Sharedを検索するResponseDTOと同じ名前のビュー
  • リクエストDTOと同じ名前のビューで、最初に/ Viewsを調べ、次に/ Views/Sharedを調べます。

/ custompathでServiceStackをホストします

ServiceStackは、既存のASP.NETWebアプリケーションの有無にかかわらず使用できます。アプリケーションがHTML-heavyおよびREST-Services-lightの場合一般的なアプローチは、 / custompath (例:/ api)でServiceStackをホストすることです。これにより、すべてのHTMLページの生成にASP.NETを使用できます。

代わりにASP.NETMVCを使用する場合は、MVCのGlobal.asaxRegisterRoutes()のルートを無視する必要があります。

routes.IgnoreRoute ("servicestack/{*pathInfo}");
55
mythz