其实写这篇博客还是由刚做ITOO4.0的时候遇到的那个遇到过的那个错误,因为没有好好总结而引发的一次大总结,于是延伸到了从<serviceHostingEnvironment>延伸到了<system.serviceModel>,此刻我在想对WCF还是热爱的不够深沉呀,当时的那一番热血已经都付诸东流了,有必要继续延伸到WCF的各个枝枝叶叶了……
上篇博客说到的serviceHostingEnvironment其实是<system.serviceModel>的一个配置属性,一些错误也是针对这一块的,今天扩充的来讲述和学习一下<system.serviceModel>
想要客户端可以调通服务,需要再服务端和客户端配置相同的协议、地址、契约等。如下我们熟悉的<system.serviceModel>
ServiceModel所有的配置元素
<system.serviceModel> <behaviors> </behaviors> <bindings> </bindings> <client> </client> <comContracts> </comContracts> <commonBehaviors> </commonBehaviors> <diagnostics> </diagnostics> <extensions> </extensions> <protocolMapping> </protocolMapping> <routing> </routing> <serviceHostingEnvironment> </serviceHostingEnvironment> <services> </services> <standardEndpoints> </standardEndpoints> </system.serviceModel>
name |
特性 |
描述 |
|
behaviors |
行为 |
此节定义名为 endpointBehaviors 和serviceBehaviors 的两个子集合。 每个集合分别定义终结点和服务所使用的行为元素。 每个行为元素由其唯一的 name 属性标识。 |
|
bindings |
绑定 |
此节包含标准绑定和自定义绑定的集合。 每一项均由其唯一的 name 进行标识。 服务通过用 name 与绑定进行链接来使用绑定。 |
|
client |
客户端 |
此节包含客户端用来连接到服务的终结点的列表。 |
|
comContracts |
COM协定 |
此节定义支持 WCF 和 COM 互操作的 COM 协定。 |
|
commonBehaviors |
行为元素 |
此节只能在 machine.config 文件中定义。 它定义了名为 endpointBehaviors 和 serviceBehaviors 的两个子集合。 每个集合分别定义计算机上所有 WCF 终结点和服务所使用的行为元素。 如果同时在<commonBehaviors> 和 <behaviors> 节中定义了某个行为,则 <behaviors> 节中的行为优先。 |
|
extensions |
扩展集合 |
此节包含一个扩展集合,这些扩展使用户能够创建扩展的用户定义绑定、行为和其他方面。 |
|
protocolMapping |
协议映射 |
此节定义传输协议方案(如 http、net.tcp、net.pipe 等)和 WCF 绑定之间的一组默认协议映射。 |
|
routing |
路由 |
此节定义一组路由筛选器,这些筛选器确定计算传入消息时使用的WCF MessageFilter的类型,以及用于定义在筛选器匹配时消息发送到的目标终结点的路由表。 |
|
serviceHostingEnvironment |
服务宿主环境 |
此节定义服务承载环境要为特定传输实例化的类型。 如果此节为空,则使用默认类型。 |
|
services |
服务 |
|
|
standardEndpoints |
终结点集合 |
此节定义一个标准终结点集合,这些终结点是预配置的可重用终结点。 标准终结点具有一个或多个设置为固定值的地址、绑定和协定特性。 例如,发现终结点具有固定的协定。 此外,还可以使用标准终结点用新属性扩展服务终结点,这与定义自定义绑定相似。 |
几点说明
1、<services>
定义WCF服务,此才程序集可以包含任意多个服务。每个服务都有自己的service配置节。即服务协议、行为、终结点。
2、behaviorConfiguration 属性
它是可选项。 它标识服务所使用的服务行为。 此特性指定的行为必须链接到同一配置文件的范围(即,同一文件或父文件) 中定义的服务行为。
每个服务将公开 endpoint 元素中定义的一个或多个终结点。 每个终结点都具有自己的地址和绑定。 配置文件中使用的所有绑定都必须在该文件的范围内定义。
绑定通过 name 和 bindingConfiguration 属性的组合链接到终结点。 binding 属性定义在哪个节中定义绑定。bindingConfiguration 属性定义使用绑定节中的哪个已配置绑定。 绑定节可以定义若干个已配置的绑定。
总结
从一个小小的报黄页而引发的WCF的一些配置项,其实是可以一直继续延伸下去的,再扩展就到了WCF配置架构,接着该是.NET Framework的配置文件架构了。
没有深入的挖掘过,总是不知道为什么。知识总是越学越少,因为问题解决一个就少了一个,知识也总是越学越多,因为总会发现圆外的空间是越来越大的.哲学家芝诺用圆的面积比喻已经掌握的知识,用圆外的空白代表尚需学习的无知面,圆越大,其圆周接触的无知面越大。
其实就像青蛙在井里,只知道一片天,而跳出井,才知道周围还有那么大地方。