从数据库中读取system.servicemodel部分

时间:2011-03-07 15:18:37

标签: wcf

我们有一个动态组合的应用程序,用户可以在其中添加服务和操作。此应用程序安装在服务器群集上。

由于向应用程序添加服务涉及到web.config的大量写入,我想知道是否可以从数据库而不是system.servicemodel读取web.config部分。

似乎微软的配置实现与其存储的位置紧密耦合。

1 个答案:

答案 0 :(得分:0)

没有“开箱即用”的方式来做到这一点。但是,这是可能的。

以下几脚,Configuration类使用FileStream实例,它实际上可以使用任何Stream。可以使用IInternalConfigHost接口的自定义实现替换该特定步骤(在那里实现许多属性和方法)。

特别有趣的是OpenStreamForReadOpenStreamForWrite,两者都返回Stream个实例。在那里,您可以将逻辑从数据库的XML配置到ConfigurationSection实例,并将ConfigurationSection实例作为XML放入数据库。

下一步是创建Configuration类的实例。但是,在这里我们必须变脏,因为它的构造函数永远不会离开System.Configuration王国。需要使用反射来达到并使用它。我建议实施IInternalConfigConfigurationFactory来包装反射魔法。

Configuration Create( Type typeConfigHost,
    params object[] hostInitConfigurationParams );

作为第一个参数传递已实现的配置主机的类型。

我们有Configuration个实例后,我们可以使用自定义ServiceHostChannelFactory<T>DuplexChannelFactory<T>