所谓获取WCF的服务元数据(Metadata),归根结点,实际上就是获取服务的终结点 (Endpoint)的信息,这是服务公开在外的数据信息,包括Address、Binding与Contract,也就是所谓的ABCs。Juval Löwy在《Programming WCF Services》一书中,用生动形象的棒棒糖表示了终结点的构成:

WCF服务可能包含多个终结点,每个终结点相当于是通信的入口,客户端和服务端通过终结点交换信息,如下图所示:

因而,如果能够获取终结点的详细信息,有助于我们更好地剖析服务的定义、内容与执行方式。
服 务有两种方案可以发布自己的元数据。一种是基于HTTP-GET协议提供元数据;另一种则为元数据交换方式,它往往使用一个专门的终结点,称之为 元数据交换终结点。元数据交换终结点与其它终结点相似,仍然包含了地址、绑定与契约,但是使用的服务契约为WCF提供的接口 IMetadataExchange。
- 添加新评论
- 阅读次数:
Justin Smith在MSDN杂志上发表了文章《使用 WCF 和 .NET Framework 3.5 进行 HTTP 编程》,畅谈了WCF 3.5对于HTTP编程的改进。以下几点值得关注:
.NET Framework 3.5 中的 WCF 构建于 .NET Framework 3.0 的扩展点之上,从而为构建符合 Web 原则的服务提供一流的支持。它包含一个易于使用的 HTTP 编程模型、JavaScript Object Notation (JSON) 消息传递功能,以及新的整合 API,使创建和使用整合的内容变得非常简便。凭借此功能集,WCF 现已成为将服务连接到 Web 客户端的首选服务平台,不论这些客户端是 ASP.NET AJAX 控件、SilverlightTM 客户端,还是浏览器。
...
- 添加新评论
- 阅读次数:
第一部分 引言
软件设计因为引入面向对象思想而逐渐变得丰富起来。“一切皆为对象”的精义,使得程序世界所要处理的逻辑简化,开发者可以用一组对象以及这些对象之 间的关系将软件系统形象地表示出来。而从对象的定义,进而到模块,到组件的定义,利用面向对象思想的封装、继承、多态的思想,使得软件系统开发可以向搭建 房屋那样,循序渐进,从砖石到楼层,进而到整幢大厦的建成。应用面向对象思想,在设计规模更大、逻辑更复杂的系统时,开发周期反而能变的更短。自然其中, 需要应用到软件工程的开发定义、流程的过程控制,乃至于质量的缺陷管理。但从技术的细节来看,面向对象设计技术居功至伟。然而,面向对象设计的唯一问题 是,它本质是静态的,封闭的,任何需求的细微变化都可能对开发进度造成重大影响。
- 添加新评论
- 阅读次数:
C# Corner今天发表了Bechir Bejaoui的一篇文章《What really make difference between structures and classes?》。关于结构和类的区别其实是老生常谈,不过本文总结得较为全面,所以翻译过来给大家共享。
总结起来,两者共有如下区别:
1、结构是值类型,类则是引用类型。因此前者是放在栈(Stack)里,后者则仅仅是将引用地址存放在栈里,而具体的值则存放在堆(heap)里。如下图所示:


- 添加新评论
- 阅读次数:
日前eBay高级架构师Randy Shoup已经确定计划在4月7日到9日举行的QCon全球企业开发大会北京站上的演讲题目:来自eBay的教训——可扩展站点的最佳实践,将会谈及一整套eBay发展过程中总结出来的最佳实践,包括分区、异步、故障恢复和自动化等。
- 添加新评论
- 阅读次数:
自从网络开始产生巨大威力以来,微软就从一位落后者开始苦苦追赶,进而凭借自己强大的实力,扮演了强势的侵略者角色。然而,遗憾的是微软从来都没有在网络领域中扮演过引导者的角色,从Internet Explorer到.NET,从Portal到Web 2.0,再到现在的SaaS或者S+S,微软总是缺乏足够的创新去开辟新的市场,反而亦步亦趋地跟随在IBM、Sun或者Google的后面。然而,微软具有的底蕴使得
- 添加新评论
- 阅读次数:
若要公开WCF服务,需要提供一个运行服务的宿主环境。就像.NET CLR需要创建宿主环境以托管代码一般,WCF的宿主环境同样运行在进程的应用程序域中。在应用程序域中可以创建一个或多个ServiceHost实例,其关系如图一所示:

图一 托管ServiceHost
WCF并不推荐在应用程序域中创建多个ServiceHost实例。如果要托管多个服务,完全可以在一个宿主中通过多个Endpoint公开多个WCF服务。由于应用程序域对安全进行了隔离,如果需要提供不同的安全上下文,则有必要创建多个ServiceHost实例。
WCF的典型宿主包括以下四种:
1、"Self-Hosting" in a Managed Application(自托管宿主)
2、Managed Windows Services(Windows Services宿主)
3、Internet Information Services(IIS宿主)
4、Windows Process Activation Service(WAS宿主)
- 添加新评论
- 阅读次数:
- 添加新评论
- 阅读次数:
软件设计最大的敌人,就是应付需求不断的变化。变化有时候是无穷尽的,于是项目开发就在反复的修改更新中无限期地延迟交付的日期。变化如悬在头顶的达摩克 斯之剑,令许多软件工程专家一筹莫展。正如无法找到解决软件开发的“银弹”,要彻底将变化扼杀在摇篮之中,看来也是不可能完成的任务。只有积极地面对“变 化”,方才是可取的态度。极限编程(Extreme Programming,XP)的倡导者与布道者Kent Beck提出要“拥抱变化”,从软件工程方法的角度,给出了应对“变化”的解决方案。如果从软件设计方法的角度出发,要在开发过程中应对未来可能的变化, 解决之道则是——封装变化。
- 添加新评论
- 阅读次数:
如果需要保证消息的传输正确性,以及传输的消息顺序,在WCF中的实现非常容易,即使用可信赖会话ReliableSession,前提是我们应该选择正 确的绑定。支持可信赖会话的绑定包括WSHttpBinding,WSDualHttpBinding,WSFederationBinding以及 NetTcpBinding和NetNamedPipesBinding(该绑定使用IPC协议,按照Juval Lowy的说法,该绑定的类名并不合理。绑定的类名通常根据协议命名,而不是根据它所采用的技术,例如NetTcpBinding而不是 NetSocketBinding。因此IPC绑定应命名为NetIPCBinding,而不是NetNamedPipesBinding)。其中,与 WS-*相关的绑定需要手动打开可信赖会话。
- 添加新评论
- 阅读次数:






张逸(Bruce Zhang)
