如何向客户部署和管理C#Web应用程序,与基础项目有一些细微差别?

时间:2009-01-19 18:42:27

标签: asp.net deployment web-applications

我有一个半大型的Web应用程序,我们在本地运行,我需要在另一个位置部署它。第二个位置需要对项目进行一些细微的修改(特别是化妆品)。您如何管理这些差异,以及您使用什么来向这样的客户分发网站和更新?

编辑: 现在我们的网络应用程序在内部运行,我们使用Cruise Control .NET和带有WDP的MSBuild构建。什么是部署到客户的好选择?我们不会为他们更新他们的网站,因此需要一个易于部署和更新的解决方案。

4 个答案:

答案 0 :(得分:12)

分支您的代码。

希望您的代码是源代码控制的(如果没有,现在就开始!),您应该从基础分支到“Customer X”分支,并在该分支中进行轻微的修饰。然后只为该客户构建和部署该分支。

此外,如果更改足够小,您可以尝试使更改可配置。这样,您可以在任何地方部署同一个站点,只需更改配置即可满足客户的需求。差异越复杂,就越难以使它们可配置。

审阅评论后:请注意配置是否切实可行,但只有在更改次数较少的情况下,否则您将使用配置逻辑污染您的代码。 (感谢评论者)

所以:很多变化 - >分支(更易于维护),一些细微的变化 - >使可配置(更实用)。

答案 1 :(得分:2)

我们必须一直这样做。我们尝试概括并使版本之间的差异可配置。自定义的最常见原因是:

  • 其他数据库字段:我们实现了一种动态方式来存储这些项目在db
  • UI布局:我们有特殊文件夹,用于放置按需加载的图像和css文件
  • 不同的必填输入字段:我们将定义存储在配置中并以编程方式激活它们
  • 特殊报告:我们将模板文件放在自定义文件夹中,以便选择而不是标准模板

某些更改需要编写新模块。我们将它们编码在一个自定义库中,该库将在主应用程序中动态加载。

答案 2 :(得分:1)

我们通常通过数据驱动来实现这些差异。客户的差异只是一个不同的设置;未来的任何其他用户都可以在以后重复使用相同的“自定义”选项。

创建“一次性”不会缩放。

答案 3 :(得分:0)

由于这个原因,自定义补丁很痛苦。我们通常只在源控制系统中进行分支,并在使用脚本更新后手动应用更改。由于额外的开销,我们尽可能地阻止自定义补丁。