2009-08-20 23 views
34

CMSとしてsitecoreを使用して新しいプロジェクトを開始します。私は、コンテンツオーサリングツールとしてSitecoreを使用し、Sitecoreと一緒にコンテンツ配信(CDA)サイドでASP.net MVCを使用することを考えていました。あなたの考えや考えを聞くのが大好きです。SitecoreとASP.net MVC

誰かがこれを試しましたか?

sitecoreとMVCの競合または補完技術はありますか?

建築上の考えを歓迎します。

+0

それはサイトコアは、今後のリリースでは、ファーストクラスのフレームワークとしてMVCをサポートすることになりました。この出くわす誰にも注目に値します。 http://www.sitecore.net/Community/Business-Blogs/Technical-Trends/Posts/2012/06/MVC-and-Sitecore-651-Overview.aspx –

+1

ちょうど始まったばかりのコンテンツのコレクションですSitecoreとMVCを使用してください:https://sitecore-community.github.io/docs/sitecore-mvc/ –

+0

私はSitecore v8 +の経験があります。ここでは、MVCはデフォルトのオプションであり、完全にサポートされています。 –

答えて

24

場合によっては、2つをマージすることに大きな利点があります。 MVCはコンテンツ駆動型のサイトにはあまり適していません。しかし、構造化されたフローとデータの複数のプレゼンテーションを持つWebアプリケーションは、それから非常に有益です。 Sitecoreには、データの複数のプレゼンテーションには多少の制限があります.1つのアイテムには1つのデザイン詳細セットしか定義できません。 WYSIWYG編集やワンクリックプレビューのための要件が​​ない場合は、データリポジトリとしてSitecoreを使用し、そのパイプラインから来るContext値の一部(言語など)を利用できます。

カップルの変更は、この作品を作るためにサイトコアHTTPパイプラインに必要です:

1)ASP.NET MVCは、要求(例えば/Controller.aspx/Actionを処理するために取得するにはIIS6でのaspx拡張子を使用している場合) SitecoreのFilePath解析を修正します(SitecoreがFilePathを解決してパスが途切れてしまうというバグがあります)。

これを修正するには、httpRequestBeginパイプラインの先頭に新しいプロセッサを配置します。

public class MvcFixHttpProcessor : Sitecore.Pipelines.HttpRequest.HttpRequestProcessor 
{ 
    public override void Process(Sitecore.Pipelines.HttpRequest.HttpRequestArgs args) 
    { 
     //when using a path such as /Controller.aspx/Blahblahblah, Sitecore's parsing of FilePath can break if Blahblahblah is too long 
     RouteData routeData = RouteTable.Routes.GetRouteData(new HttpContextWrapper(args.Context)); 
     if (routeData != null) 
     { 
      args.Url.FilePath = args.Context.Request.Url.LocalPath; 
     } 
    } 
} 

(編集2011年9月13日:私はいくつかの時間に上記の修正プログラムを使用するために持っていなかった。)

2)ASP.NET MVC

にルーティングされているURLを無視するサイトコアに知らせます

これを実現するには、ItemResolverに続くhttpRequestBeginパイプラインに新しいプロセッサを配置します。

public class SystemWebRoutingResolver : Sitecore.Pipelines.HttpRequest.HttpRequestProcessor 
{ 
    public override void Process(Sitecore.Pipelines.HttpRequest.HttpRequestArgs args) 
    { 
     RouteData routeData = RouteTable.Routes.GetRouteData(new HttpContextWrapper(args.Context)); 
     if (routeData != null) 
     { 
      args.AbortPipeline(); 
     } 
    } 
} 

あなたのサイトコアのURLで言語を使用している場合は、その言語を確保するために、MVC ActionLinkの生成とサイトコアのリンク生成を組み合わせたいくつかのカスタム・ロジックを追加する必要がありますが、あなたのMVCのURLの先頭に追加されます。しかし、上記のパイプラインの変更では、URLへの言語の追加は、(Sitecoreが言語を読み込んだ後にURLを書き換えるので)MVCルーティングに副作用がないはずです。

このアプローチは、特定の種類のアプリケーションでのみ有効です。しかし、これらのケースでは、Sitecoreはモデルに適した優れたデータレイヤーを作成します。 Sitecoreアイテムに基づいて強く型付けされたドメインオブジェクトを作成するためのカスタムItemラッパーの作成に注目してください。

:運のベスト

(編集2011年9月13日。カスタム項目Generatorは、このhttp://blog.velir.com/index.php/2010/10/19/custom-item-generator/のために素晴らしい作品)。

+0

返事をありがとう。それはまさに私が考えていたものです。強く型付けされたドメインオブジェクトを構築するために、サイトコアモジュールDomainObjectsに関する経験をお持ちですか?私は、私のドメインデータを含むドメインオブジェクトと、ドメインオブジェクトからのデータと、サイトマップからの多言語コンテンツをビューに移すプレゼンテーションオブジェクトを含むハイブリッドを考えています。プレゼンテーションオブジェクトは、サービスレイヤの助けを借りてコントローラに作成されます。 – Vinod

+1

Sitecoreはバージョン6.4からMVCをサポートします。 – Vinod

+0

はい!上のパイプラインの中止コードは何も含まれていませんが、これは奇妙です。 btw、あなたの質問に遅れて答えるには、あなたのドメインオブジェクトを作るための共有ソースリポジトリのVelirからカスタムアイテムジェネレータをチェックアウトする必要があります。 – techphoria414

8

私はあなたがここで求めているはずの本当の質問は、すでにSitecoreを導入しているのであれば、なぜMVC導入のオーバーヘッドと煩わしさが必要なのでしょうか?

MVCを必要とする基本Webサイト以外のビジネス要件はありますか?

+1

ウェブフォームは恐ろしいですか? –

+1

これはどのように答えですか?それはせいぜい修辞的な問題なのです。 – magnattic

+0

は「これをあなたのアイデアや考えを聞くのが大好きだ。 は、誰もがこれを試したことがありますか? はサイトコアですとMVC競争や技術を補完? どれ建築のアイデアは歓迎されています。」 –

4

私はSitecore開発者がASP.NET MVCを考慮していることは知っていますが、試してみたかどうかはわかりません。私はASP.NET MVCの恩恵を受けたと思うSitecoreプロジェクトは考えられません。 Sitecoreのダイナミックレスポンスエンジン、パイプライン、ハンドラ、ワイルドカード、その他の機能は、MVCで達成できるもののスーパーセットを提供するようです。 ASP.NETマスターページの同様の話 - Sitecoreでそれらを使用できますが、Sitecoreのレイアウトの詳細は優れています。

私はSitecoreの有無にかかわらず、Sitecoreはコントローラの機能を提供しているようです(本当にASP.NETはコントローラで、Sitecoreはプラグインするだけです)、あなたの情報アーキテクチャはモデルです、プレゼンテーションコンポーネントがビューです。

1

私は現在、両方の技術を使って2つの大きなプロジェクトに取り組んでいます。私は両者の大ファンだが、両者をマージすることは何のメリットもない。

Sitecoreが行っている限り、学習曲線はありますが、私の場合、Webフォームとは対照的にASP.NET MVCを「最初に」学習して以来、非常に正直なところ、学習曲線は若干私のWebフォームでの経験はありません。しかし、Sitecoreにはまだまだ学習曲線がありますが、それを助けるための豊富なトレーニングや参考資料があります。また、Sitecoreに付属しているWebコントロールでは、まっすぐなWebフォームアプリケーションを構築するのに比べると、それほど気になりません。加えて、XSLTをレンダリングエンジンとして使用するオプションもあり、便利です。

あなたが考えているプロジェクトが1つだけの場合は、プレゼンテーションシステムが非常によく考えられているので、Sitecoreに固執するといいでしょう。そしてMarkが言ったように、それは事をかなり複雑にするでしょうし、それから何が得られるのかも分かりません。また、commodore73の感情をエコーし​​て、Sitecoreのものを構築することは、別のフレームワークを使用するだけで、MVCを既に使用しているような気がします。

6

私は要件に関するマークのコメントを2回続けています。それはリスクに値するでしょうか?あなたはネイティブレンダリング機能を使用しないと決めた場合は、最も可能性の高いサイトコアの次の機能を失うことになる。

  1. OMSを
  2. マーケター
  3. 条件付きのレンダリング
  4. ページエディタ
  5. ページデザイナー
  6. ため
  7. Webフォーム

多分もっとです。

1

SitecoreのMVCは潜在的可能性を秘めていますが、生産準備はできていないと思います。 thisブログ記事を作成するときにわかったように、あなたは未知の地面をカバーしています。

彼らは確信して混合することができる、と私は確信して、それの値を参照してください:) ませネイティブ機能は、私はここに私のブログの記事で説明する方法でlossedされていない
0

私はこの記事はかなり知っていますとにかく、私はSitecore MVCに関する私の意見を与えるだろうが、私は古いです。私はSitecore MVCだけを使用して数ヶ月前にプロジェクトに取り掛かりました。このプロジェクトはCMSの有無に関わらず、できるだけ多くのCMSに対応できるように(私たちは現在2を使用しています)、私が扱うものには多くの制限があります。

ASP.NET MVCはわれわれにとって魅力的ではありませんでした。それは2015年であり、我々は新しい技術を進めなければならない。私たちはSitecore 8を使用しています。私はSitecore MVCがSitecore 7で成熟したと考えています。

道路にはまだいくつかのバンプがあります。フォームポストでSitecoreを使用する予定の場合は、AJAXを使用して作成されていることを確認してください。通常のPOSTアクションを使用するとフィールドで検証を行うのは難しいかもしれませんが、回避策があります。

-1

今、ハビタットプロジェクトがあります。

Sitecore Habitatは、モジュラーアーキテクチャを使用してbulitされているSitecoreプロジェクトです。彼らのウェブサイトには、インストールとテストのための完全な実例があります。

生息地プロジェクト:

https://github.com/Sitecore/Habitat

+0

なぜdownvotes?これはスパムではありません。このプロジェクトはSitecoreの公式サイトであり、ベストプラクティスのためにHelixを使用しています – SysDragon