将MVC web迁移到Sitecore的最佳实践

将MVC web迁移到Sitecore的最佳实践,sitecore,sitecore6,Sitecore,Sitecore6,我们有两个MVC3.0 web应用程序,其中一些是web表单和MVC3.0在项目/解决方案中的组合 我是sitecore的新手,请有人帮助我理解以下关于将现有应用程序迁移到sitecore的内容吗 在什么类型的场景中,我们应该将MVC3.0 razor视图移动到sitecore 将MVC3.0迁移到sitecore的关键问题是什么 我需要在sitecore管道上注入任何东西吗 我是否需要更改任何导航链接才能在sitecore下工作 任何指向sitecore迁移现有web应用的最佳实践的链接都是好

我们有两个MVC3.0 web应用程序,其中一些是web表单和MVC3.0在项目/解决方案中的组合

我是sitecore的新手,请有人帮助我理解以下关于将现有应用程序迁移到sitecore的内容吗

  • 在什么类型的场景中,我们应该将MVC3.0 razor视图移动到sitecore

  • 将MVC3.0迁移到sitecore的关键问题是什么

  • 我需要在sitecore管道上注入任何东西吗

  • 我是否需要更改任何导航链接才能在sitecore下工作

  • 任何指向sitecore迁移现有web应用的最佳实践的链接都是好的

  • 我关注了下面的博客,仍然不清楚为什么以及何时应该将web控件和razor视图转换为Sitecore渲染


    谢谢。

    将MVC应用程序迁移到Sitecore解决方案时,您有几个可用的选项-根据要迁移的组件的性质,您必须选择最合适的选项

    我将尝试回答您的5个具体问题:

    1。何时使用Razor视图

    我不确定问题是“何时使用Razor视图”还是“何时使用Sitecore视图渲染”——我将假设后者

    如果您正在编写不需要任何业务逻辑且只处理呈现项的呈现组件,则视图呈现非常有用。如果您正在考虑在Raxor视图中添加代码,则应该考虑控制器渲染是否更合适,或者可能定制<代码> MVC。 2。迁移陷阱

    将MVC应用程序迁移到Sitecore时,您可能会发现一些问题

    • 基于组件的控制器-在MVC中,每页有一个控制器。Sitecore支持ControllerRendering的概念,允许您在一个页面上有多个控制器(注意:始终有一个路由控制器可以被视为主路由控制器)
    • 项目路由-Sitecore有一个对映射到项目路径的所有路径都有效的全面路由。标准MVC路线和“项目路线”可以愉快地共存。项目路由当前不支持路由参数(例如,您不能在项目路由上指定{action}或其他参数)
    • MVC4-目前没有对MVC4的官方支持(这种支持不会持续很久,但在此期间请看一看)
    • 区域-当前区域不完全受支持
    • 不知道要使用什么渲染类型以及何时将现有功能转换为组件
    3。流水线定制

    您不必定制Sitecore管道。我可以看到一些例子,其中在迁移故事的上下文中修改管道是有用的。我最近在一个Sitecore用户组中提到的一个例子涉及全局添加一个
    ActionFilter
    (通过
    mvc.resultExecuting
    管道),将ASP.Net mvc应用程序注入Sitecore占位符。在我的示例中,我将MVC音乐商店注入一个占位符,并让Sitecore控制窗口装饰(页眉/页脚/菜单)。通过这种方式,我可以将现有的MVC应用程序引入Sitecore,而无需对其进行太多更改

    4。导航链接

    如果导航端点是Sitecore项目路由(即网站上项目的路径),则应使用Sitecore的
    LinkManager
    生成适当的链接。如果端点是标准MVC路由
    RouteLink
    ActionLink
    应该可以正常工作

    我想如果没有一个具体的例子,答案将是“也许”

    5。最佳实践迁移博客帖子

    我不知道有任何关于Sitecore MVC迁移最佳实践的博客文章或文章。请记住,对MVC的全面支持是Sitecore最近的一项新功能,从开始到结束还没有多少人看到这一过程

    为什么以及何时转换为Sitecore渲染

    您在结束问题时表示,您仍然对何时以及为什么将控件和Razor视图转换为Sitecore渲染感到困惑。以下是一些指标,表明某物是Sitecore呈现的候选对象:

    • 它是一个可以在许多页面上重用的组件
    • 您希望允许Sitecore用户将组件添加到页面。(想想页面编辑器)
    • 您希望利用Sitecore的组件级缓存
    • 您希望利用Sitecore安全性来限制谁可以使用/查看该组件
    • 您希望通过个性化、规则或在其上运行MVT来控制组件
    在MVC的上下文中,有一些迹象表明,将某些内容转换为Sitecore渲染可能不正确:

    • 它严重依赖于路由和路由参数

    我相信这个答案中的许多要点都可以扩展,我知道这方面没有明确的规则,但我希望这个答案有助于澄清一些困惑…

    +1-不确定这是“最佳实践”还是第一篇尝试的博客文章,但这里有一篇关于如何将MVC音乐商店教程网站转换为Sitecore MVC的文章。我认为Chris的博客文章很好地说明了如何使用Sitecore MVC的一些不同方面。但是,如果您从一个“MVC音乐商店”应用程序开始,并且希望将其合并到Sitecore解决方案中,我可能不会仅仅为了在Sitecore中重新组装而将其作为一部分。某些组件比其他组件更适合成为Sitecore渲染。