2010-07-07 58 views
2

免责声明,我是我公司的技术支持和系统管理员,而不是开发人员。我并不追求具体细节,只是一个想法,如果我想获得成功或不可能。将多个电子商务软件实例重构为单个代码库

我们托管了我们内部传统的ASP传统电子商务软件应用程序的数百个实例,并且由于客户和我们自己的无数定制,版本管理是噩梦,自定义代码无法管理,我们放弃了发布新的功能和大量部署错误修复,因为无法跟踪哪些用户需要哪些修补程序。

Parellel这个问题我做了管理脚本来更好地自动化这个。

但是我真正想做的是使用miniumum可能的努力,将应用程序代码(不是数据库)移植到单个代码库中。我有的问题:

  • ASP可以相对有效地处理连接到不同的数据库,具体取决于被调用的主机头?我计划对例程进行一些基本扩展,获取主机头 在metadb中查找db凭证,相应地设置应用程序连接字符串逻辑。

  • 应用程序为了缓存目的从数据库中向Web服务器写入一些文件,我想通过将其写入类似/masterapp/customer1/specificfile.htm的文件来处理此行为,然后更改引用to /specificfile.htm中的代码更像/ masterapp/店名 /specificfile.htm。显然,写入specificfile.htm的例程会相应地写入新的位置。这看起来合理吗?

  • 其他网络服务器的特定内容,如图像和csv文件我需要继续工作,没有URL的理想变化,ASP可以使用逻辑重定向请求/images/example.jpg到/ masterapp/店名 /images/example.jpg或/ 店名 /images/example.jpg取决于主机标题?或者可以通过isapirewrite完成? (我们已经使用)

我认为这些是最大的挑战。我不需要一个完整的项目计划来说明如何实现这些东西,我只想知道它是否可行。如果答案是肯定的,由于节省了支持时间,我应该可以将我的老板出售给开发人员,我们的内部开发人员可能会希望对此进行管理。

回答

0

应该是可能的,我已经取得了类似的成果,从一开始就以这种方式开发的代码。当你对此进行改进时,这将变得更加困难,但这与你的实际问题是分开的。

要回答你的实际点:

  • 想必你的数据库连接字符串已处于应用变量或设置文件?如果是这样,您只需在global.asa Session_OnStart中读取主机头并选择适当的DB字符串即可。这可能是硬编码,或者你可能有一个“控制”数据库存储网站,他们的数据库字符串文件路径等,并将细节拉入会话对象。

  • 这与上面的,从数据库中拉你的缓存存储位置,或者为每个站点有一个“目录名友好”的基本名称,所以你可以有"/masterapp/" & Session("strSiteBaseName") & "/cache/somefile.htm"

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

一个“gotcha”,你将拥有主机头记得处理www和no-www记录!

您提到了每个站点的自定义代码,我没有在生产环境中完成此任务,而是在应用程序之外进行测试,并且可以在已经声明之后重写函数。你不能包含变量名,但你可以加载一个文本文件并执行它,所以有一种方法可以自定义函数,或更改特定于你的整个应用程序的单个实例的核心函数。