加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

asp.net – 避免重复大型应用程序

发布时间:2020-12-16 09:52:26 所属栏目:asp.Net 来源:网络整理
导读:我管理一个非常大的Web /数据库应用程序(目前大约有80个ASPX页面).这在我们的客户端共享(例如,他们都在同一URL访问同一个应用程序). 我还将单个ASPX页面上传到实时服务器,而不是编译版本,以允许我在不同时间在网站的不同部分上工作. 我现在面临一个挑战,即新
我管理一个非常大的Web /数据库应用程序(目前大约有80个ASPX页面).这在我们的客户端共享(例如,他们都在同一URL访问同一个应用程序).

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

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

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

解决方法

我以前做过这种事情,我认为只有3页,一个全新的“分叉”是矫枉过正的.不是我说的,“不要使用源代码管理”. (你更好地使用某种源代码控制)但是对于三个页面,我认为最简单的解决方案是一些简单的重定向逻辑.

我假设当这些特定用户登录到您的系统时,您有某种“全局变量”,表明他们是相关公司的成员.在您尝试替换的3个页面中,只需输入if(companyName ==“specialCompany”)Server.Transfer(“specialCompanyDirectory / anotherPage.aspx”);或者其他的东西.我建议将所有三个被替换的页面放到一个单独的目录中,只是为了理智.然后在“specialCompanyDirectory”的每个页面的顶部,确保检查当前用户确实是“specialCompany”的成员.

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

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

编辑:

通常,分支被设计为保持独立,直到您最终合并它们.如果你要保持他们永远不同,而在各个分支正在发展,他们彼此无关;因此,如果您对“main”分支中的这3个页面中的一个进行小的更改,则必须再次在“specialCompany”分支中进行更改.

我建议你使用我最初描述的方法,因为你编辑的次数很少.我建议您使用某种全局方法来决定何时使用特殊方法,以便您可以跟踪进行这些特殊更改的位置.例如,在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(如果你认为你将会做很多这类事情,这可能是最好的想法)那么你可以试试这个:

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

(您不必在下一部分中执行此操作,但将所有代码放在某种源代码控制中是最佳实践)
然后,为每个“特殊”目录创建一个新的存储库.

此方法将确保您将所有代码都包含在源代码管理中,并且您不必复制对“基本”代码的更改.

至于Source Control软件,我更喜欢SVN,但那只是我.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读