WCF 客户端的自动配置
Automatic configuration of WCF client
我们已经为客户创建了一个 WCF 服务应用程序。由于该服务用于传输大量数据(这可能需要很长时间),因此已对 Web.config
文件进行一些更改(例如增加超时限制或消息大小限制)以适应这种情况。
一切正常,没有技术问题...除了客户不太满意,每当他们创建一个使用 WCF 服务的新应用程序时,他们需要手动将所有更改添加到客户端App.config
文件。
他们希望自动从服务中读取更改。
我从来没有听说过 WCF 有这样的功能,所以我认为这是不可能的。但我非常希望确认...或拒绝,如果这真的可能的话。
除非您创建自定义方法来公开这些参数,或者至少是它们的值,否则它们对消费者不可见。
配置文件应该是私有的,这就是您无法在标准安装中浏览到它们的原因。
在我看来,您的客户似乎需要接受,也许在添加新服务时,需要做一些工作。理论上,他们可以从现有应用程序中剪切和粘贴服务模型配置或其部分,以节省 'some' 时间。
IIRC .. 在早期版本的股票交易应用程序中。
How to implement Configuration Service 5.0 of the StockTrader 5.0 sample application?
上面SOF提到link
有一种方法可以从服务中获取配置。
但是,stocktrader 应用程序现在看起来与以前大不相同。
所以我不知道哪个版本会有所不同。
Greg Leake(Leak)是我一年在 TechEd 遇到的那个家伙的名字....说到这个,IIRC。
实现起来并不简单。
编辑一些客户端配置文件的成本.........与配置服务......你必须进行调用。
但听起来您的客户在抱怨时需要一些奶酪。
这是一个较旧的视频...可能会让您走上正确的道路。
这个PDF
会给你提示。
"configuration service" 和 运行 的工作量很大。
我们最终......没有这样做......并在 msbuild 任务中使用 xml- 操作......调整 wcf 客户端xml 部分。
编辑:
另一种想法。将您的 WCF 放在单独的文件中……然后分发这些文件。
这将使 "where to edit" 更容易识别 ..... 或批发更换所有 (4) 个文件。
app.config 或 web.config
<?xml version="1.0"?>
<configuration>
<system.serviceModel>
<behaviors configSource="WCFBehaviors.config">
</behaviors>
<bindings configSource="WCFBindings.config">
</bindings>
<client configSource="WCFClient.config">
</client>
<services configSource="WCFServices.config">
</services>
</system.serviceModel>
然后制作4个文件。
示例 WCFServices.config
<services>
<service name="MyApp.MyService">
<endpoint
address = "http://localhost:8001/MyService"
binding = "wsHttpBinding" bindingConfiguration="WSHttpBindingName1"
contract = "MyApp.MyIService" >
</endpoint>
</service>
</services>
请注意,这些不会像 web.config 和 app.config 那样被自动包含在内。
您必须确保它们最终出现在您的构建输出中。
我们已经为客户创建了一个 WCF 服务应用程序。由于该服务用于传输大量数据(这可能需要很长时间),因此已对 Web.config
文件进行一些更改(例如增加超时限制或消息大小限制)以适应这种情况。
一切正常,没有技术问题...除了客户不太满意,每当他们创建一个使用 WCF 服务的新应用程序时,他们需要手动将所有更改添加到客户端App.config
文件。
他们希望自动从服务中读取更改。
我从来没有听说过 WCF 有这样的功能,所以我认为这是不可能的。但我非常希望确认...或拒绝,如果这真的可能的话。
除非您创建自定义方法来公开这些参数,或者至少是它们的值,否则它们对消费者不可见。
配置文件应该是私有的,这就是您无法在标准安装中浏览到它们的原因。
在我看来,您的客户似乎需要接受,也许在添加新服务时,需要做一些工作。理论上,他们可以从现有应用程序中剪切和粘贴服务模型配置或其部分,以节省 'some' 时间。
IIRC .. 在早期版本的股票交易应用程序中。
How to implement Configuration Service 5.0 of the StockTrader 5.0 sample application?
上面SOF提到link
有一种方法可以从服务中获取配置。 但是,stocktrader 应用程序现在看起来与以前大不相同。 所以我不知道哪个版本会有所不同。 Greg Leake(Leak)是我一年在 TechEd 遇到的那个家伙的名字....说到这个,IIRC。
实现起来并不简单。
编辑一些客户端配置文件的成本.........与配置服务......你必须进行调用。
但听起来您的客户在抱怨时需要一些奶酪。
这是一个较旧的视频...可能会让您走上正确的道路。
这个PDF
会给你提示。
"configuration service" 和 运行 的工作量很大。
我们最终......没有这样做......并在 msbuild 任务中使用 xml- 操作......调整 wcf 客户端xml 部分。
编辑:
另一种想法。将您的 WCF 放在单独的文件中……然后分发这些文件。 这将使 "where to edit" 更容易识别 ..... 或批发更换所有 (4) 个文件。
app.config 或 web.config
<?xml version="1.0"?>
<configuration>
<system.serviceModel>
<behaviors configSource="WCFBehaviors.config">
</behaviors>
<bindings configSource="WCFBindings.config">
</bindings>
<client configSource="WCFClient.config">
</client>
<services configSource="WCFServices.config">
</services>
</system.serviceModel>
然后制作4个文件。 示例 WCFServices.config
<services>
<service name="MyApp.MyService">
<endpoint
address = "http://localhost:8001/MyService"
binding = "wsHttpBinding" bindingConfiguration="WSHttpBindingName1"
contract = "MyApp.MyIService" >
</endpoint>
</service>
</services>
请注意,这些不会像 web.config 和 app.config 那样被自动包含在内。 您必须确保它们最终出现在您的构建输出中。