我有一个由ASP.NET Web应用程序和Windows服务组成的企业应用程序。这有许多“可插拔”连接器进入使用WCF(作为客户端和/或服务器)的其他系统。在启动过程中,必须将可插拔连接器加载到Web应用程序和服务中。
如果我使用标准的WCF配置机制,我需要将所有连接器的WCF配置合并在一起,然后将其放入web.config和service.exe.config中。
理想情况下,我希望将每个连接器的WCF配置作为该连接器自己的配置文件的一部分,因此在启动时加载每个连接器时,将执行该连接器的WCF配置。这看起来更模块化/ OO方法,因为一个连接器的所有配置在一个地方组合在一起并与其他配置分开
我意识到我可以通过使用完全编程配置来实现这一点,但我真正想做的是能够通过将配置部分作为文本或DOM树传递来在运行时配置WCF。
有没有办法实现这个目标?我目前正在使用.Net 3.5,但也对4.5感兴趣,因为我们很快就会转向它。
提前致谢
答案 0 :(得分:1)
我无法看到允许访问基本ServiceHost从外部源加载配置配置部分的选项。
我无法看到您可以在运行时更新或替换系统配置(另外,更改Web应用程序中的配置没有意义。)
您最好的选择是构建一个代表您不同配置选项的类,例如哪种绑定和哪种安全性等等。然后,您可以使用序列化过程将该类保存到xml文件中。 当连接器加载你抓取相关的xml并反序列化它并使用纯代码构建服务主机/客户端通道时,应该相当容易。
对于客户端,只需使用ChannelFactory。
最糟糕的选择是使用System.ServiceModel.dll中的OutOfTheBox元素类,并自己实现一半的WCF库。