MVC アプリケーションを Sitecore ソリューションに移行する場合、利用可能なオプションがいくつかあります。移行するコンポーネントの性質に応じて、最も適切なオプションを選択する必要があります。
5 つの具体的な質問にお答えします。
1.Razor ビューを使用する場合
質問が「いつ Razor ビューを使用するか」なのか、それとも「いつ Sitecore View Rendering を使用するか」という質問なのかはわかりません - 後者を想定します。
ビュー レンダリングは、ビジネス ロジックを必要とせず、レンダリング アイテムのみを扱うプレゼンテーション コンポーネントを作成する場合に最適です。Razor ビューにコードを追加することを検討している場合は、コントローラー レンダリングがより適切かどうか、またはmvc.getModel
パイプラインをカスタマイズするかどうかを検討する必要があります。
2. 移行の落とし穴
MVC アプリケーションを Sitecore に移行する際に気になることがあります。
- コンポーネントベースのコントローラー - MVC では、ページごとに 1 つのコントローラーがあります。Sitecore は、ページ上に複数のコントローラーを持つことを可能にする ControllerRenderings の概念をサポートしています (注: プライマリとして認識できるルート コントローラーは常に 1 つ存在します)。
- アイテム ルーティング - Sitecore には、アイテム パスにマップされるすべてのパスに対して有効なキャッチ オール ルートがあります。標準の MVC ルートと「アイテム ルート」は問題なく共存できます。アイテム ルートは現在、ルート パラメーターをサポートしていません (たとえば、アイテム ルートで {action} やその他のパラメーターを指定することはできません)。
- MVC4 - 現在、MVC4 の公式サポートはありません (これは長くは続きませんが、当面はhttp://herskind.co.uk/blog/2012/10/sitecore-66-mvc4を参照してください) 。
- エリア - 現在、エリアは完全にはサポートされていません。
- 使用するレンダリング タイプと、既存の機能をいつコンポーネントに変換するかがわからない。
3. パイプラインのカスタマイズ
Sitecore パイプラインをカスタマイズする必要はありません。移行ストーリーのコンテキストでパイプラインを変更すると役立ついくつかの例を見ることができます。私が最近 Sitecore ユーザー グループで話した例の 1 つは、ASP.Net MVC アプリケーションを Sitecore プレース ホルダーに挿入するActionFilter
グローバル (パイプライン経由) の追加に関するものでした。mvc.resultExecuting
私の例では、MVC Music Store をプレースホルダーに注入し、Sitecore コントロール ウィンドウ ドレッシング (ヘッダー/フッター/メニュー) を用意しました。このようにして、既存の MVC アプリケーションをあまり変更せずに Sitecore に取り込むことができました。
4. ナビゲーション リンク
ナビゲーション エンドポイントが Sitecore アイテム ルート (Web サイト上のアイテムへのパス) である場合は、Sitecore のものを使用LinkManager
して適切なリンクを生成する必要があります。エンドポイントが標準の MVC ルートRouteLink
であり、問題ActionLink
なく動作する場合。
具体的な例がなければ、答えは「たぶん」になると思います。
5. 移行のベスト プラクティスのブログ投稿
Sitecore MVC 移行のベスト プラクティスを扱ったブログ投稿や記事は知りません。完全な MVC サポートは Sitecore に最近追加されたものであり、この旅を最初から最後まで見た人はまだ多くないことに注意してください。
Sitecore Rendering に変換する理由と時期
コントロールと Razor ビューを Sitecore レンダリングに変換する時期と理由についてまだ混乱していると述べて、質問を締めくくります。何かが Sitecore レンダリングの候補であることを示すいくつかの指標を次に示します。
- 多くのページで再利用できるコンポーネントです。
- Sitecore ユーザーがコンポーネントをページに追加できるようにしたいと考えています。(ページエディターを考えてください)
- Sitecore のコンポーネント レベルのキャッシュを利用したい。
- Sitecore のセキュリティを活用して、コンポーネントを使用/表示できるユーザーを制限したいと考えています。
- パーソナライゼーション、ルールを使用してコンポーネントを制御するか、コンポーネントで MVT を実行します。
MVC のコンテキストでは、何かを Sitecore レンダリングに変換することが正しくない可能性があることを示すいくつかの指標があります:
- ルーティングとルート パラメータに大きく依存します。
この回答のポイントの多くは拡張できると確信しており、これには明確なルールがないことを知っていますが、この回答が混乱の一部を解決するのに役立つことを願っています...