WCF开发框架的案例应用总结
    
            
摘要:在我的《Winform开发框架》系列文章中,除了介绍Winform开发框架外,还详细介绍了基于Winform开发框架的WCF开发框架,WCF开发框架除了具有Winform程序的丰富体验,绚丽的界面外,还具备Web应用程序的分布式应用特点,数据库服务端配置而不用客户端操心等特点,而随着.NET4.0的出现,只有40多M的安装包,也确实为WCF应用的推广使用更加方便。由于WCF应用的分布式这个重要的特点,客户数据全部保存在服务端,因此也提高了数据的安全性,因此很多传统应用的场合都可以使用WCF技术的。本文主要介绍我近年来做WCF开发的案例应用进行总结,对一些问题进行共同探讨,共同进步。1、内部跨部
        
阅读全文
摘要:近来看WCF相关资料 发现之前一些没太关注或者有些错误认识的知识点,有些也貌似不怎么常用。于是整理了这一则笔记。1、 WCF中的绑定。可以通过绑定无参数构造函数实例化绑定,然后调用CreateBindingElements获取到此种绑定的绑定元素。WSHttpBindinghttpBinding=newWSHttpBinding();BindingElementCollectioncollection=httpBinding.CreateBindingElements();foreach(varelementincollection){Console.WriteLine(element.Get
        
阅读全文
摘要:对于WCF中通讯的双方来说,客户端可以异步的调用服务;服务端对服务也能以异步的方式实现。这就涉及到两个方面:WCF客户端异步调用服务;服务端的异步实现本节是Artech《WCF技术剖析(卷1)》一篇读书笔记。在文章中老A介绍了客户端如何以异步的方式消费WCF服务,以及服务的异步实现,个人对这几种方式做个总结。目录:WCF客户端异步调用服务服务端的异步实现WCF客户端异步调用服务主要通过生成异步的代理类,然后调用其中的异步方法来实现异步调用。异步代理类的生成:通过SvcUtil /async 直接生产异步代理;通过添加应用的方式,点击”添加引用“的“高级”按钮,在弹出来的对话框中选择“生成异步.
        
阅读全文
摘要:对于WCF中通讯的双方来说,客户端可以异步的调用服务;服务端对服务也能以异步的方式实现。这就涉及到两个方面:WCF客户端异步调用服务;服务端的异步实现本节是Artech《WCF技术剖析(卷1)》一篇读书笔记。在文章中老A介绍了客户端如何以异步的方式消费WCF服务,以及服务的异步实现,个人对这几种方式做个总结。目录:WCF客户端异步调用服务服务端的异步实现WCF客户端异步调用服务主要通过生成异步的代理类,然后调用其中的异步方法来实现异步调用。异步代理类的生成:通过SvcUtil /async 直接生产异步代理;通过添加应用的方式,点击”添加引用“的“高级”按钮,在弹出来的对话框中选择“生成异步.
        
阅读全文
摘要:今天,人们对REST的认识仅局限于漂亮的URI和CRUD操作,却忽视了RESTful系统的其他强大特性,如松耦合和自描述。本次演讲将讨论REST 中最难以被人理解的部分:HATEOAS(超媒体即应用状态引擎)或超媒体约束。超媒体是RESTful服务最重要的特点。非RESTful服务会迫使消 费者和服务之间的紧密耦合,而拥抱超媒体格式的RESTful服务则不会如此。换用超媒体感知的服务向消费者描述携带业务内容的业务协议,可以允许这些协 议独立于业务挑.http://wenku.baidu.com/view/ef33661252d380eb62946d5c.html#REST 表述性状态转移(Re
        
阅读全文
摘要:在WCF中有几种涉及到地址的概念:基地址与相对地址、逻辑地址与物理地址。本文就从WebService寻址开始,总结一下WCF中的几种地址。目录:WebService寻址逻辑地址与物理地址基地址、相对地址、绝对地址1、WebService寻址与以协议无关的SOAP作为消息的载体在被客户端发往服务端以后就不再由客户端所控制了。如果以HTTP将SOAP从客户端发往服务端,通过HTTP协议的标准动作如Get、Post进行操作,服务处理完毕以后再通过HTTP响应发往客户端这样一次交互就完成了。可事实上,SOAP没有标准方法来指定消息的目的地址、如何返回响应以及错误在哪等。如果消息交互变得复杂一点,这种问
        
阅读全文
摘要:概述 Representational State Transfer(REST)是Roy Fielding博士在2000年他的博士论文中提出来的一种软件架构风格。因此REST是设计风格而不是标准,REST通常基于使用HTTP,URI,和JSON,XML以及HTML这些现有的广泛流行的协议和标准。资源是由URI来指定,rest中的资源需要使用名词来命名。对资源的操作包括获取、创建、修改和删除资源,这些操作正好对应HTTP协议提供的GET、POST、PUT和DELETE方法。通过操作资源的表形来操作资源。资源的表现形式则是XML,JSON或者两者都有。REST的要求显示的使用HTTP方法访问资源连
        
阅读全文
摘要:WCF中经常会使用HTTP协议与Tcp协议来实现双工通讯,对应使用的协议分别为WsDualHttpBinding、NetTcpBinding。HTTP是基于应用层的协议,而Tcp是基于传输层的协议。Tcp经过三次握手建立起客户端到服务端的可靠连接,发起请求的客户端与回调客户端的服务端都使用一个连接就能完成。使用HTTP协议时,从客户端到服务端发起请求到服务端返回给客户端回复完成后,连接就关闭。由于HTTP的这种无连接性,基于WsDualHttpBinding的双工在进行通讯时实际上服务端在回调客户端时,会与NetTcpBinding在使用上有些差异。1、NetTcpBinding实现双工1.1
        
阅读全文
摘要:在介绍用于自定义Model元数据属性的AdditionalMetadataAttribute特性时我们提到了它实现的接口IMedataAware,我们说这是一个非常重要并且有用的接口,通过自定义实现该接口的特性我们可以对最终生成的Model元数据进行自由地定制。如下面的代码片断所示,IMedataAware接口具有唯一的方法成员OnMetadataCreated。当Model元数据被创建出来后,会先获取上述的这一系列标注特性对其进行初始化,然后获取应用在目标元素上所有实现了IMedataAware接口的特性,并将初始化的ModelMetadata对象作为参数调用OnMetadataCreate
        
阅读全文
摘要:前一节介绍了WCF客户端构建的过程,其间又说明了WCF框架中核心ClientRuntime对象建立过程,以及客户端所采用的ClientMessageInspectors、ClientMessageFormatter、ClientOperationSelector等等基础。本节目录:1、RealProxy建立的过程2、TransparentProxy建立的过程3、服务调用过程。4、总结1、RealProxy建立的过程通过之前的介绍,大家都应该有个共识:客户端通过透明代理建立对应的实际代理对服务进行调用,而在WCF在实际代理对象类型为ServiceChannelProxy。实际代理对象Servic
        
阅读全文
摘要:完整项目下载:http://files.cnblogs.com/qldsrx/FilesManager.rar 之前发过片段的内容,都没给出完整的项目代码,不少人来要,故整理下,做个完整的演示项目出来,花了4天的时间调试,真要命。另外如果是IIS承载的WCF服务,建议直接写一个继承IHttpHandler的类来实现,那样效率更高,控制更精细,用WCF服务来做仅仅是在不使用IIS的情况下的妥协方法。注:必须安装.NET4.0以上版本先简单介绍下该程序实现的功能: 一个服务端,使用WCF自承载,默认采用了RESF模式,直接提供了HTTP下载,也可以开启NET TCP等其它模式。HTTP下载时,..
        
阅读全文
摘要:前一节(《WCF体系架构(之一:Client与Server信息交互处理流程初略介绍)》)大致介绍了WCF服务消息处理的大致流程,WCF服务的消费者可以是WEB客户端、也可以是其他语言开发的应用程序。 对于WEB客户端以及其他语言的应用程序,跨平台的性能主要是通过HTTP协议+SOAP消息机制实现。本节主要详细介绍消息在WCF客户端应用程序消息处理流程-------------------------------------------------------------------目录:-1、WCF通过客户端代理调用 服务-2、实际代理如何映射到服务目标对象上-3、WCF客户端框架的核心Cl.
        
阅读全文
摘要:我们将整个ASP.NET MVC框架划分为若干个子系统,那么针对请求上下文激活目标Controller对象的子系统被我们成为Controller激活系统。在正式讨论Controller对象具体是如何被创建爱之前,我们先来看看Controller激活系统在ASP.NET MVC中的总体设计,了解一下组成该子系统的一些基本的组件,以及它们对应的接口或者抽象类是什么。目录一、Controller二、 ControllerFactory三、ControllerBuilder 实例演示:如何提升命名空间的优先级 针对Area的路由对象的命名空间四、 Controller的激活与URL路由一、Contro
        
阅读全文
摘要:WCF在设计的时候,就封装了对常用协议如Tcp\HTTP\MSMQ的处理机制。但WCF同时也允许开发者在WCF现有平台上进行扩展,以解决实际问题。 大部分情况下,通过WCF常用的协议,就已经能完成了大部分工作了。在WCF揭秘中,作者在介绍如何扩展WCF时,讲了一些WCF是如何处理行为、信道、传输等方面的工作机制。本节从WCF行为作为切入点,谈谈个人对WCF体系的理解。 在WCF框架设计时,为了简化WCF普通的应用场景,也为了满足一些特殊环境下的应用,WCF的设计者们将WCF进行分成设计。实现方式是将上层 与底层应用区分开。在一些特殊环境下对底层做一些扩展就行了。WCF将一般场景使用的的上层..
        
阅读全文
摘要:表现为请求地址与目标Controller和Action的动态映射的URL路由系统并不是专属于ASP.NET MVC,而是直接建立在ASP.NET 中。ASP.NET通过URL路由系统实现了请求地址与物理文件的分离。[源代码地址从这里下载]一、URL与物理文件的分离对于一个 ASP.NET Web Form应用来说,任何一个请求都对应着某个具体的物理文件。部署在Web服务器上的物理文件可以是静态的(比如图片和静态HTML文件等),也可以是动态的(比如.asxp文件)。对于静态文件的请求,ASP.NET直接返回文件的整个内容;而针对动态文件的请求则会触发相关代码的执行,并最终返回执行后的结果。但是
        
阅读全文
摘要:我的WCF开发框架推出很久了,一直有不少的朋友支持及提供良好的完善意见,随着利用这种基于Winform界面的WCF开发框架开发了不同类型的项目,各种WCF对象的调用及处理逐渐稳定及统一化,因此是时候让我的开发伴侣(代码生成工具Database2Sharp)来做更多更有技术性的工作了---提供基于我的WCF开发框架模式创建的项目工程及调用WCF的Winform界面处理代码。这样在WCF快速开发框架中,有了更强更高效率的支持,整个项目的开发,就更加是水到渠成,闲庭散步了。因此,代码生成工具生成框架代码,结合我的WCF开发框架上基础项目代码,已经能覆盖的范围达到了90%以上了。有了这一切,无论是开发
        
阅读全文
摘要:ASP.NET MVC的URL路由系统通过注册的路由表对HTTP请求进行解析从而得到一个用于封装路由数据的RouteData对象,而这个过程是通过自定义的UrlRoutingModule对HttpApplication的PostResolveRequestCache事件进行注册实现的。RouteData中已经包含了目标Controller的名称,现在我们来进一步分析真正的Controller对象是如何被激活的。我们首先需要了解一个类型为MvcRouteHandler的类型。一、MvcRouteHandler通过前面的介绍我们知道继承自RouteBase的Route类型具有一个类型为IRoute
        
阅读全文
摘要:从 .NET 3.5 开始 WCF 已经支持用 WebHttpBinding 构建 RESTful Web 服务,基于 WCF 框架的 RESTful Web 服务还是建立在 WCF Message 栈上,还是基于RPC风格的,因为 REST 的工作原理有所不同,它不需要依赖 SOAP 协议,因此 WCF 消息管道对于它经过了特殊的消息优化。但 REST 集成在 WCF 消息管道上还是不理想,所以微软重新开始构造基于Http 协议特点的RESTful的Web API, 从2010年10月份开始把代码放在codeplex上http://wcf.codeplex.com/,我也一直在跟踪,学习WC
        
阅读全文
摘要:ASP.NET MVC和WCF真是微软两个很棒的框架,设计的很好,可扩展性非常强,到处都是横切、管道。以前写过一篇MVC流程的文章,http://www.cnblogs.com/lovecindywang/archive/2010/12/02/1894740.html主要是使用了MVC的各种扩展。如下图列出了WCF的一些扩展点供参考,其实知道某个扩展点是干什么之后,搜索一下MSDN这个接口就一清二楚了:大部分情况下针对服务模型层进行扩展即可,我们可以看到就一个服务调用已经被完全打散了,细化到:调用的参数、调用什么方法、调用什么类型、类型怎么创建、消息的拦截、错误拦截、上下文初始化、服务承载。。
        
阅读全文
摘要:WCF REST系列文章汇总(共9篇)[01]一个简单的REST服务实例[02]WebHttpBinding与消息编码[03]Web消息主体风格(Message Body Style)[04]帮助页面与自动消息格式(JSON/XML)选择[05]WebServiceHost有何特别之处?[06]UriTemplate、UriTemplateTable与WebHttpDispatchOperationSelector[07]通过ASP.NET Output Caching实现声明式缓存[08]提高性能的一个有效的手段:条件资源获取(Conditional Retrieval)[09]解决资源并发
        
阅读全文