从技术上讲,这很简单。我们多年来一直这样做。尽管我们使用不同的约定(my.domain.com/cust1
加上my.domain.com/cust2
url 重写),但这并没有改变任何东西。
所以,这就是你要做的。您创建连接字符串提供程序的抽象规范:
public interface ICustomerInformationProvider
{
string GetConnectionString( string CustomerId );
... // perhaps other information
}
然后你提供你想要的任何实现,比如:
public class WebConfigCustomerInformationProvider : ICustomerInformationProvider { ... }
public class DatabaseConfigCustomerInformationProvider : ICustomerInformationProvider { ... }
public class XmlConfigCustomerInformationProvider : ICustomerInformationProvider { ... }
并且您以某种方式将您的接口映射到实现上(例如,使用您选择的 IoC 容器)。
这使您有机会在部署期间配置提供程序,例如,开发人员可以使用一个提供程序(从文件中读取连接字符串),而生产环境中可以使用另一个提供程序(从数据库中读取连接字符串,这很容易规定)。
如果您还有其他问题,请随时提出。