asp.net – 避免重复大型应用程序
我管理一个非常大的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,但那只是我. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- asp.net-web-api – 如何访问所有querystring参数作为字典
- asp.net – Orchard CMS和Sitefinity CMS
- asp.net-mvc – 如何在@ Html.TextBox mvc4中添加新的css类
- ASP和C#之间的语义差异?
- 探索ASP.NET Identity 身份验证和基于角色的授权,中级篇
- asp.net-mvc – 在.NET 3.5 ASP.NET MVC应用程序中使用Goog
- asp.net-mvc – MVC3验证与实体框架模型/数据库首先
- asp.net-mvc – 显示主键是一种危险
- 在ASP.NET Core Web API Controller中使用C#7元组
- asp.net-mvc – 有一个强大的方法来删除ASP.NET MVC中的Mod
- asp.net-core – 在Windows上为不同平台构建core
- asp.net-mvc-3 – 如何使用剃刀包括.html或.asp文
- asp.net – 无法在ASP应用程序中调试某些aspx页面
- asp.net-mvc-3 – 是否可能显示从ASP.NET MVC 3中
- Asp.net实现MVC处理文件的上传下载功能实例教程
- asp.net – 如何在没有实体框架的MVC中使用Simpl
- asp.net-mvc – 将JSON对象作为参数传递给MVC控制
- asp.net – 如何将IIS Developer Express切换到“
- asp.net – 在Web api控制器中手动验证模型
- asp.net-mvc – 我可以使用MVC全局动作过滤器来禁