其实写这篇博客还是由刚做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的配置文件架构了。
没有深入的挖掘过,总是不知道为什么。知识总是越学越少,因为问题解决一个就少了一个,知识也总是越学越多,因为总会发现圆外的空间是越来越大的.哲学家芝诺用圆的面积比喻已经掌握的知识,用圆外的空白代表尚需学习的无知面,圆越大,其圆周接触的无知面越大。
其实就像青蛙在井里,只知道一片天,而跳出井,才知道周围还有那么大地方。