Asp classic 将电子商务软件的多个实例重构为单个代码库

Asp classic 将电子商务软件的多个实例重构为单个代码库,asp-classic,url-rewriting,hostheaders,Asp Classic,Url Rewriting,Hostheaders,免责声明,我是我公司的技术支持和系统管理员,不是开发人员。我不追求细节,只是一个想法,如果我想实现的是可能的还是不可能的 我们拥有数百个内部经典ASP遗留电子商务软件应用程序实例,由于客户和我们自己的无数定制,版本管理简直是噩梦,自定义代码无法管理,我们已经放弃发布新功能和大规模部署错误修复,因为无法跟踪谁需要什么补丁 与这个问题类似,我正在制作管理脚本来更好地自动化这个问题 然而,我真正想做的是尽可能少地将应用程序代码(而不是数据库)移植到单个代码库中。我的问题是: ASP能否根据所调用的主

免责声明,我是我公司的技术支持和系统管理员,不是开发人员。我不追求细节,只是一个想法,如果我想实现的是可能的还是不可能的

我们拥有数百个内部经典ASP遗留电子商务软件应用程序实例,由于客户和我们自己的无数定制,版本管理简直是噩梦,自定义代码无法管理,我们已经放弃发布新功能和大规模部署错误修复,因为无法跟踪谁需要什么补丁

与这个问题类似,我正在制作管理脚本来更好地自动化这个问题

然而,我真正想做的是尽可能少地将应用程序代码(而不是数据库)移植到单个代码库中。我的问题是:

  • ASP能否根据所调用的主机头相对有效地处理与不同数据库的连接?我计划对程序进行一些基本的扩展,获取hostheader 在metadb中查找数据库凭据,相应地设置应用程序连接字符串逻辑

  • 应用程序从数据库向Web服务器写入一些文件以进行缓存,我希望通过将其写入/masterapp/customer1/specificfile.htm之类的内容来模拟这种行为,然后将代码中对/specificfile.htm的引用改为更像/masterapp/shop name/specificfile.htm。显然,写入specificfile.htm的例程会相应地写入新位置。这似乎合理吗

  • 其他绑定到Web服务器的存储特定内容(如图像和csv文件)我需要在不更改URL的情况下继续工作理想情况下,ASP是否可以使用逻辑将/images/example.jpg的get请求重定向到/masterapp/shop name/images/example.jpg或/shopname/images/example.jpg,具体取决于主机头?或者这可以通过isapirewrite实现吗?(我们已经在使用)

我认为这些是最大的挑战。我不需要一个完整的项目计划来实现这些事情,我只想知道这是否可行。如果答案是“是”,我应该能够向我的老板推销开发,因为这样可以节省支持时间,我们的内部开发人员也有希望能够做到这一点。

这应该是可能的,我从一开始就用这种方式开发代码,取得了类似的结果。当您在中对其进行改造时,将会非常困难,但这与您的实际问题是分开的

要回答您的实际观点:

  • 假设您的DB连接字符串已经在应用程序变量或设置文件中?如果是这样,您只需要在global.asa Session_OnStart中使用一些逻辑来读取主机头并选择适当的DB字符串。这可以是硬编码的,或者您可以有一个“控制”数据库来存储站点、它们的数据库字符串、文件路径等,并将详细信息拉入会话对象

  • 这与上述内容相关,从数据库中提取缓存存储位置,或者为每个站点提供一个“目录名友好”的基本名称,这样您就可以拥有
    “/masterapp/”&Session(“strstebasename”)&“/cache/somefile.htm”

  • 如果你在IIS7上,那么你可以使用URL重写模块来处理这个问题,如果你在IIS6上,你可以使用第三方工具来为你重写URL。我再次这样做,这样可以保证它的工作。如果你想变得更聪明,你可以让你的主应用程序为你创建重写文件,然后“触摸”web.config将它们加载到IIS中

主机头的一个“问题”是记住处理www和no-www记录

您提到了每个站点的自定义代码,我还没有在生产中这样做,但已经在应用程序外部进行了测试,您可以在声明函数后重写它们。你不能让包含变量名,但你可以加载一个文本文件并执行它,所以有一种方法可以自定义函数,或者更改特定于你的over arching应用程序的单个实例的核心函数。

这应该是可能的,我从一开始就用这种方法开发代码,取得了类似的结果。当您在中对其进行改造时,将会非常困难,但这与您的实际问题是分开的

要回答您的实际观点:

  • 假设您的DB连接字符串已经在应用程序变量或设置文件中?如果是这样,您只需要在global.asa Session_OnStart中使用一些逻辑来读取主机头并选择适当的DB字符串。这可以是硬编码的,或者您可以有一个“控制”数据库来存储站点、它们的数据库字符串、文件路径等,并将详细信息拉入会话对象

  • 这与上述内容相关,从数据库中提取缓存存储位置,或者为每个站点提供一个“目录名友好”的基本名称,这样您就可以拥有
    “/masterapp/”&Session(“strstebasename”)&“/cache/somefile.htm”

  • 如果你在IIS7上,那么你可以使用URL重写模块来处理这个问题,如果你在IIS6上,你可以使用第三方工具来为你重写URL。我再次这样做,这样可以保证它的工作。如果你想变得更聪明,你可以让你的主应用程序为你创建重写文件,然后“触摸”web.config将它们加载到IIS中

主机头的一个“问题”是记住处理www和no-www记录

您提到了每个站点的自定义代码,我还没有在生产中这样做,但已经在应用程序外部进行了测试,您可以在声明函数后重写它们。您不能将include包含在变量名中,但您可以将其加载到文本文件中并执行它,因此有一种方法可以自定义函数,或更改特定于over arching应用程序单个实例的核心函数