避免重复大型应用程序

时间:2012-11-27 10:56:36

标签: asp.net visual-studio version-control alm

我管理一个非常大的Web /数据库应用程序(目前大约有80个ASPX页面)。这在我们的客户端共享(例如,他们都在同一个URL访问同一个应用程序)。

我还将单个ASPX页面上传到实时服务器,而不是编译版本,以允许我在不同时间处理网站的不同部分。

我现在面临一个挑战,即新客户希望在自己的服务器上托管应用程序。这将涉及在上传之前修改大约3页。

我之前从未遇到过这样的挑战,但是为了避免重复整个应用程序只是为了那些微小的变化,我们是否还有一步之遥?将来我需要管理原始应用程序,以及客户端自己的托管版本,但不一定要上传每个新版本两次,并且还管理修改过的3个页面的不同版本。

2 个答案:

答案 0 :(得分:2)

我以前做过这种事情,我认为只有3页全新的" fork"太过分了。不是我说的,"不要使用源代码控制"。 (你 BETTER 正在使用某种源代码控制)但是对于三个页面,我认为最简单的解决方案是一些简单的重定向逻辑。

我假设当这些特定用户登录到您的系统时,您拥有某种全局变量'这表明他们是有关公司的成员。在您尝试替换的3个页面中,只需添加if (companyName == "specialCompany") Server.Transfer("specialCompanyDirectory/anotherPage.aspx");之类的内容即可。我建议将所有三个被替换的页面放在一个单独的目录中,只是出于理智的考虑。然后在" specialCompanyDirectory"中每页的顶部一定要检查当前用户确实是" specialCompany"。

的成员

根据应用程序和页面的逻辑,您可能需要执行重定向以外的操作;比如使用单独的Web用户控件。

无论哪种方式,为3页更改创建一个完整的单独应用程序似乎是错误的方法。如果您要更改一大堆页面,请查看TFS分支,SVN forks或其他软件。

修改

通常,分支设计为保持独立,直到最终合并它们。如果你要保持他们永远不同,而在各个分支正在发展,他们彼此无关;因此,如果您要对主要'中的这三个页面中的一个进行一些小改动。分支机构,您必须在“特殊公司”中再次进行更改。分支也是如此。

我建议您使用我最初描述的方法,因为您编辑的内容很少。我建议您使用某种全局方法来决定何时使用特殊方法,以便您可以跟踪进行这些特殊更改的位置。例如,在App_Code中的某处添加一个看起来像这样的方法:

public String companySpecialMethod()
    {
        if (Request.ServerVariables["HTTP_HOST"].ToString().ToLower().Contains("somespecialdomain.com"))
        {
            return "somespecialdomain";
        }
        else if (Request.ServerVariables["HTTP_HOST"].ToString().ToLower().Contains("anotherspecialdomain.com"))
        {
            return "anotherspecialdomain";
        }
        else
            return "";
    }

然后在您的代码中,您可以执行以下操作:

if (companySpecialMethod() == "")
{
    //run a normal method
    normalMethod();
}
else if (companySpecialMethod() == "somespecialdomain")
{
    //run a special method, just for somespecialdomain
    somespecialdomainMethod();
}
else if (companySpecialMethod() == "anotherspecialdomain")
{
    //run a special method, just for anotherspecialdomain
    anotherspecialdomainMethod();
}

<强>无论其

如果你真的想在这个解决方案中使用Source Control(如果你认为你将会做很多这类事情,这可能是最好的想法)那么你可以试试这个:

enter image description here

假设您希望将所有代码放在存储库中:您基本上创建了一个存储库(主存储库),其中只包含所有项目中完全相同的代码。这样,您的所有基本代码都将保持最新;您在正常项目中所做的任何更改都将传播到您的特殊项目中。

(你没有 来完成下一部分,但是将所有代码放在某种源代码管理中是最佳实践) 然后,为每个特殊的&#39;创建一个新的存储库。目录。

此方法将确保您将所有代码都包含在源代码管理中,并且您不必将更改复制到您的基础&#39;代码。

就Source Control软件而言,我更喜欢SVN,但这只是我。 :) TFS也是一个很好的产品,与SVN类似。

答案 1 :(得分:1)

首先,80页很小。

其次,源代码控制将是一件好事。

拥有MSDN许可证?最多五个用户的TFS服务访问是免费的。