【问题标题】:Best practice for a Sitecore projectSitecore 项目的最佳实践
【发布时间】:2010-01-27 10:00:08
【问题描述】:

我对 Sitecore 比较陌生,想了解更多关于新项目的常规方法的信息。因此,我愿意倾听并尝试一些经验丰富的 Sitecore 开发人员解决方案。我有很多问题,我不会一一问。我只是很好奇其他人的方法。

启动 Sitecore 项目的最佳方法是什么? 你会如何设置你的项目? 您将如何看待未来项目中的代码回收?

简而言之:您有哪些经验(如果您曾参与或正在参与 Sitecore 项目)以及您会如何推荐其他人与 Sitecore 合作。

现在我们正忙于构建可以在其他项目中回收的 Sitecore 块,但我确信有 1001 个方便的技巧和窍门。我希望我们有一些 Sitecore pro 的 @stackoverflow 可以提供一些帮助。

【问题讨论】:

标签: project sitecore


【解决方案1】:

根据我们的工作方式,这里有一些常规设置信息。

颠覆 这不是 Sitecore 特定的,但我们像这样设置我们的存储库

  • branches - 这用于对可能需要一段时间的网站进行重大更新。例如,我想更新网站上所有侧边栏的工作方式,这需要几周时间才能完成。我们要做的是创建一个新分支,并为这个 dev 分支设置另一个 sitecore 实例,然后做我们需要做的事情。完成后,我们将其合并回主干以进行测试和部署。
  • tags - 这用于保存永远不会合并回主干的代码副本(这是 this 和分支之间的区别),例如,当我们将更新部署到站点时,我们可以创建所述代码的标签,以便我们可以在必要时返回它。
  • trunk - 活动代码,此处签入的任何内容都应始终可部署。

树干 这是我们积极开发/修复错误的地方,具体取决于我们在项目的哪个部分。我们设置它是这样的(例如,该项目称为 TheProject)

我们将解决方案文件保存在该文件夹的根目录下,这将引用 src 文件夹中的各种库以及网站文件夹中的 Web 项目。

  • docs - 放置网站文档的地方。我强烈建议您在完成功能/部分时编写一份关于其工作所需的任何特殊知识的小指南。假设我正在处理登录页面上的特色内容框。此框将自动提取一些内容,除非它被明确覆盖。当我完成这样的事情时,我会使用大量屏幕截图为客户编写指南。我将指南发送给客户,并将其放入 docs 文件夹中。这既可以帮助客户培训他们的员工,也可以帮助新开发人员跟上进度。
  • lib - 这是我们保存项目中需要引用的所有 DLL 的地方。
  • test - 放置单元测试的地方。
  • src - 这是我们保存项目特定库代码的地方。所以在这里我们将有一个名为 TheProject.Library 的文件夹,其中会有用于上述的 Visual Studio 项目
  • web/Website - 这是我们安装 Sitecore 的地方,也是网站的根目录。在这里,我们有一个类似于 TheProject.Web 的项目。在项目中,我们添加了所有常规内容,例如 web.config/layouts 文件夹等。

通用 Sitecore 代码库 您可以做的最好的事情之一是从一开始就设置一个通用的 Sitecore 库,该库可以随着时间的推移添加到其中。然后,当您为项目编写任何代码时,不仅适用于该项目,您可以将其添加到那里。这似乎很明显,但从长远来看,这确实会有所帮助。你最终会得到更可靠的代码,请参阅link text

所以当我们完成所有这些后,我们就有了类似的解决方案/项目结构

TheProject(解决方案)

  • TheProject.Library
  • TheProject.Web
  • MyCompany.SitecoreLibrary(我们的通用站点核心库)

工具 这是另一回事,但我发现它确实有助于加快 Sitecore 开发。如果您发现自己在 Sitecore 中一遍又一遍地做某事,请使用 API 编写一个工具来为您做这件事。这不仅有助于解决您正在解决的任何问题,还有助于让您更加熟悉 API。

锐化器 这更像是一个通用的 .NET 开发建议,使用 Resharper(http://www.jetbrains.com/resharper/index.html)。我有点像 Resharper 的粉丝,它让开发中的许多事情变得更容易和更快。在我看来,最大的优势在于它使重构代码变得非常容易,随着时间的推移,这对于保持代码的简洁和易于理解非常重要。

我希望这会有所帮助。

加布

【讨论】:

    【解决方案2】:

    正如您所说,这是一个很大的问题。以下是我的一些想法:

    发展环境

    首先,当我开始一个新项目时,我会在我的开发环境中安装 Sitecore,并确保一切正常。在安装过程中或在我将数据库放在单独的 SQL 服务器上并相应地更改连接字符串之后。

    我打开 Visual Studio 并创建一个解决方案并包含所需的文件。我创建了某种 HelloWorld 渲染并尝试构建解决方案,以便我可以验证一切是否正常工作。

    当一切都启动并运行时,我会创建整个解决方案的 zip 文件,包括数据文件夹。现在是时候将它添加到某种版本控制系统中了,在我的例子中是 Subversion。

    我将 zip 文件添加到 subversion 并添加我认为在项目期间会更改的所有文件,通常我告诉 subversion 忽略 sitecore 文件夹,这在签入文件时大大提高了性能。

    在我执行提交操作后,我项目的其他团队成员可以签出代码并开始开发(解压缩 zip 文件后,偏离路线)

    尽管这违反了 Sitecore 的建议,但我们都致力于同一个数据库,但我们对这种方法没有任何问题,但是由一位开发人员创建/更改的 GUI 中的项目需要一些时间才能为所有其他人创建/更改。

    我们可以使用相同的 Sitecore 安装程序开发几个不同的项目,但由于几乎所有客户都使用不同版本的 Sitecore,我们发现这种方法有点麻烦。

    我们通常会设置一个自动构建服务器,但这是另一个问题。

    可重用的代码和渲染

    我想说的是,我们基于相同的代码库创建了简洁的包,可以在项目之间重用,但不幸的是我们还没有。今天,解决方案之间有很多剪切和粘贴。

    向客户上传代码

    这是通过 sitecore 包完成的,通常会动态选择要包含的文件,比如特定文件夹中的所有 ascx 文件在过去 5 天都发生了变化。

    你有它。

    【讨论】:

    • 感谢您的回答。我希望更多的人会对我的问题做出反应。
    • 我很困惑,也许是因为我从未真正构建过 SiteCore,但源代码管理中的 zip 文件有什么意义?
    • 压缩文件是为了能够在新的开发环境中从 svn 设置 Sitecore。由于 Sitecore 包含超过 30k 的文件,因此每次在 svn 上执行提交时都需要花费大量时间来检查所有这些文件。有时,我们会对未通过 svn 进行版本控制的文件进行更改,如果是这样,我们也会更新 zip。
    • 实际上,为了让特定的 Sitecore 项目进入源代码控制,您可以使用 Sitecore 的内置序列化功能
    • 今天我们还可以选择将 powershell 与 Sitecore 结合使用,以进一步增强自动化构建过程。
    【解决方案3】:

    看看this series

    尤其是组件架构部分提高了我们的可重用性。

    【讨论】:

    • 我们尝试为我们的站点设置多项目,但对此并不满意。这种设置为配置支持增加了许多额外的工作。
    【解决方案4】:

    当您在 Sitecore 的 web 根文件夹中创建 Visual Studio 的项目并将所有 Sitecore 的 dll 文件保存在 bin 目录中时,不要忘记将所有这些文件添加到项目的引用中:

    bin\ComponentArt.Web.UI.dll
    bin\HtmlAgilityPack.dll
    bin\ITHit.WebDAV.Server.dll
    bin\Lucene.Net.dll
    bin\Mvp.Xml.dll
    bin\Newtonsoft.Json.dll
    bin\RadEditor.Net2.dll
    bin\Sitecore.Kernel.dll
    bin\Sitecore.Logging.dll
    bin\Sitecore.NVelocity.dll
    bin\Sitecore.Zip.dll
    

    因为当你清理你的项目并且你只会引用 Sitecore.Kernel.dll(在大多数情况下),你会丢失 bin 目录中的大部分 dll!

    【讨论】:

    • 也许我理解错了,但您是否建议将您的解决方案放在 IIS 根目录中?这是一种糟糕的安全做法,如果您的代码对公众可见,任何人都可以下载您的代码。我为项目中所需的所有 DLL 使用一个单独的文件夹,然后在我的 web .csproj 中使用 MSBuild 命令在成功构建后复制这些文件,为您自动执行该过程:)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-05-22
    • 2011-01-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多