【发布时间】:2010-11-27 00:21:46
【问题描述】:
仅用一个代码库运行一堆网站是否可能或可行?
例如,我有一个基于域名或子域名的连接字符串的站点。因此,根据访问站点的域/子域,站点返回的内容存储在专门用于该站点的数据库中。
这样做可能会出现哪些类型的问题?特别是如果使用 asp.net。
【问题讨论】:
仅用一个代码库运行一堆网站是否可能或可行?
例如,我有一个基于域名或子域名的连接字符串的站点。因此,根据访问站点的域/子域,站点返回的内容存储在专门用于该站点的数据库中。
这样做可能会出现哪些类型的问题?特别是如果使用 asp.net。
【问题讨论】:
这是可以接受的。
请注意,任何人都可以更改您可能选择的域名(只要您为其配置了主机标头),因此请确保您不要四处制作类似“admin.foo”的东西但仅依靠它来确保安全(但显然你会生气)。
我觉得没问题。
【讨论】:
它有效并且被证明。 Se DotNetNuke 只是其中的 1 个示例。
请求进来。正则表达式/字符匹配域名。加载该域的设置(图像、css、配置、页面等的基本路径),然后就可以了。
【讨论】:
要注意的问题是,如果您的应用程序既 a) 将数据存储在内存中,又 b) 使用相同的应用程序空间。因此,例如,如果您想创建两个不同的博客,并且希望数据驻留在内存中(例如,如果您的后端存储是 XML,并且您不想在每个请求中解析 XML),那么您必须确保 Asp.Net 将每个调用视为一个单独的应用程序(它们都可以指向同一个文件系统文件夹,因此使用相同的文件)。
我在编写multi-blog data provider for BlogEngine.Net 时遇到了这种情况。它使用单个代码库根据请求的 URL 提供不同的博客。但是,由于 BlogEngine.Net 将其数据保存在内存中,因此除非将 IIS 配置为每个博客都是其自己的应用程序,否则数据提供程序将无法工作。
【讨论】: