摘要:
最近开发一套由客户方定制的服务,据说之前版本是通过C写的WebService。那个神奇的Service我是没见过。只是有一点,之前的验证过程居然是这样进行的:客户端发送账号、密码,Service进行验证。验证成功后,Service会将产生一个加密字符,以类似Session方式存储并发送一个加密字符串给客户端。之后客户端每次调用服务都发送这个加密字符串以供服务端进行验证合法性。虽然个人觉得极为变态,但是交涉未果。另外还有一点需求就是:服务端会有一个授权文件,这个授权文件里面存放的是对客户端接口调用的授权信息。 基于以上原因,考虑到WCF优秀的扩展性决定对他进行一定的扩展,以完成以上需求。 ... 阅读全文
摘要:
大家都知道WCF会话模式有几个要求:1、会话契约;2、绑定支持;3、实例模式为PerSession。这几个要素是WCF支持的必要条件。会话契约:由服务端提供实现,客户端调用时只持有契约定义,所以需要通过契约定义告知客户端,服务端是支持会话的。绑定:会话没有绑定的支持也就无从谈起了。InstanceContextMode为PerSession。通过它可以保证在会话期间,服务实例不会被销毁。 较为复杂的问题在于ServiceContract中SessionMode的设置。SessionMode定义如下://摘要://指定可用于指示支持协定需要或支持的可靠会话的值。publicenumSessio. 阅读全文
摘要:
在使用WCF实例模型时,你是否思考过这几个的问题:”WCF中的实例模式如何正确应用”?”使用WCF中的实例模式有何原则可以遵循吗”? 众所周知:客户端调用服务时,最终会将调用服务端的某个实例来完成。在WCF服务中,可以通过ServiceBehavior的InstanceContextMode设置服务实例。InstanceContextMode定义如下://摘要://指定可用来处理包含在传入消息中的调用的服务实例数。publicenumInstanceContextMode{//摘要://为每个会话创建一个新的System.ServiceModel.InstanceContext对象。PerSe 阅读全文
摘要:
MVC在Web开发中的优势(在TDD方面、逻辑与UI的彻底分离)已无需多言,除此之外个人感觉在给UI提供JSON各式的数据也更加方便。但是总体上说,在公司的这次MVC经历最后的感觉还是比较失败。个人记录下来在此做个反思,同时希望和大家一起交流,向大家学习。整体项目截图如下:(图1)首先从以上截图中,... 阅读全文
摘要:
开篇之前郑重申明:本文是基于Artech所介绍的Kerberos认证的来谈谈个人对Kerberos认证流程以及消息交互理解。如果您想深入了解,请点击此处。如有理解不当的地方,还望赐教。 先介绍Kerberos中的几个概念:概念说明:AD:Active DirectoryService Session Key :服务会话密钥Logon Session Key :登录会话密钥KDC : Key Distribution CenterKAS :Key Kerberos Authentication Service。它是KDC的一个服务TGS: Ticket Granting Service;它是K. 阅读全文
摘要:
在企业级应用开发中,利用合适的框架针对不同项目构建相应的应用。Spring.Net作为Spring的.Net版本,具有很强大的应用。如:作为IoC容器、AOP处理框架、与NHibernate的集成、Spring.Net发布WebService\WCF服务等。而NHibernate作为一个优秀的ORM框架也广受开发者的青睐。本文将通过Spring.Net+NHibernate来构建WCF应用。本文要点:Spring.Net与NHibernate的集成应用Spring.Net注入WCFEntity与DTO对象之间的转化先上一张结构图:正式介绍之前介绍一下框架 版本:Spring.Net :1.3. 阅读全文
摘要:
Spring.Net集成了.Net多方面的开发,比如:WebService、.Net Remoing、WCF等。本文简单介绍一下通过Spring.Net的IoC容器开发WCF 服务。 示例使用的Spring.Net 版本:1.3.2。本节介绍的是基于Spring.Net的IoC容器来开发WCF服务。这种方式和之前WCF开发差别不大,只是服务的寄宿、以及客户端代理的创建都交由Spring.Net来完成。以下通过一个简单示例进行说明。1、ServiceContract定义以及服务配置: [ServiceContract(Namespace="Spring.WCF")] publ 阅读全文
摘要:
inverse 与Cascade分别表示NHibernate中类之间关系、级联操作。他们之间不同值以及不一样的组合,很多时候都影响着业务逻辑的执行。其实inverse与Cascade又是不一样的。理解它们的作用对使用NHibernate进行开发也是比较重要的。inverse:意思是反转,它指明类之间的关系由谁来进行维护。例如:班级(Class类)与学生(Student),班级-学生就是one-to-many,学生-班级就是many-to-one。它只能在one-to-many中many的一方进行设置(当然,在many一方,可能是在也可能是在也可能是在中进行设置),而对于one方,是不进行Inv 阅读全文
摘要:
本文是《你是否觉得.Net Web Service 中asmx文件是多余的?》的继续。主要讨论Spring.Net发布的WebService基于接口发布调用问题。目录.Net客户端调用Ajax调用1、.Net客户端调用对于类似前一节中通过接口规范发布的服务,在.Net中可以通过松散的调用来完成。松散到什么程度呢?只需要两个条件:1、WebService地址 2、服务接口程序集。调用过程如下: <objectsxmlns="http://www.springframework.net"xmlns:aop="http://www.springframework. 阅读全文
摘要:
用.Net开发 WebService一般都会先添加一个.asmx文件,然后在其.cs文件里将类标记上WebService,WebMethod等特性来构建WebService。是否想过.asmx文件是多余的呢。? 其实.asmx即不像aspx一样用作UI,又不像.handler文件一样处理业务逻辑,它的存在就是多余。使用Spring.Net构建WebService完全可以不需要.asmx文件,直接通过它的IoC容器将它注入到对外提供服务的类中即可。本文将带你走进一个没有.asmx文件的WebService。目录: 创建不依赖于asmx文件的WebService通过Spring.Net提供Web. 阅读全文
摘要:
WCF作为一项通讯技术,必须保证传输的可靠性与消息的可靠性传输可靠性:指的是点对点可靠性,确保数据包按顺序到达。它不受网络等因素的影响消息可靠性:指提供了消息端对端的保证,确保消息的顺序无误。如果传输失败,它还能提供重试功能自动处理网络阻塞、消息缓存、流控制,根据具体情况适时调整发送消息数。它还能通过对连接的验证管理连接自身,并在不需要的时候清除连接理论上,WCF服务的实现与服务契约的定义与它使用的绑定以及属性无关。实际上,服务处理消息以及契约定义都可能与消息的有序传递有关。在WCF中使用DeliveryRequirementsAttribute来对服务或者契约应用这种约束。[Attribut 阅读全文
摘要:
最近公司一些内部培训师在公司内部进行培训,某虽不才,但是还是欣然报名,上报了几门课程。于是整理了一些基本入门资料,希望对想要学习的初学者有些帮助。 本篇主要针对NHibernate的,后续还会有一些WCF、Spring.Net基本使用、Enterprise Library 等方面的东西奉上。敬请期待!上一张截图先:下载: /Files/tyb1222/ORM.pdf 响应代码下载:http://files.cnblogs.com/tyb1222/NHibernateConfig.rar http://files.cnblogs.com/tyb1222/Demo.rar数据库脚本:http... 阅读全文
摘要:
WCF中,并发是一个很影响服务性能的重要方面。通过ServiceBehaviorAttribute中的ConcurrencyMode可以设置服务的并发性。 对于双工通讯来说,服务对客户端的回调也是通过代理完成的。那么这又涉及到另外一个问题:回调客户端时,能否让回调服务也并发执行呢?WCF中定义了CallbackBehaviorAttribute ,可以通过它来设置回调服务的行为。它同样定义了ConcurrencyMode,可指定回调的并发模式,但它没有定义回调的实例模式,即InstanceContextMode。本文主要探讨服务的并发与回调服务的并发。目录:测试重入与回调并发会话对重入与回调. 阅读全文
摘要:
WCF中的并发针对服务而言。而服务实例封装在InstanceContext,所以WCF中的并发最终体现在了InstanceContext中。WCF服务实例上下文模式InstanceContextMode又决定服务以何种方法为客户端提供服务。实例模式 :publicenumInstanceContextMode{PerSession,PerCall,Single}PerSession:每次会话都是使用同一个服务实例PerCall:每次调用都创建新的服务实例对象Single:所有服务都是用同一个服务实例对象,相当于所有客户端代理都使用服务端同一个静态服务实例对象为其服务默认情况下,Instanc. 阅读全文
摘要:
整理了几个WCF里几个基本知识点:1、WCF中的Message WCF中的消息对象Message,是有状态的。它的状态是MessageState枚举。共有以下几种类型:publicenumMessageState{Created,Read,Written,Copied,Closed} 对Message对象,只有在Create状态下,才能读,否则读取会有异常。Message同样定义了许多Write之类的方法,这些Write方法同样也只能用于处于Created的消息。 在WCF中,有可能需要对消息进行一些读取、等操作。但是读取操作会改变Message的 状态,导致再次读取会有异常。这时,可以使.. 阅读全文
摘要:
近来看WCF相关资料 发现之前一些没太关注或者有些错误认识的知识点,有些也貌似不怎么常用。于是整理了这一则笔记。1、 WCF中的绑定。 可以通过绑定无参数构造函数实例化绑定,然后调用CreateBindingElements获取到此种绑定的绑定元素。 WSHttpBindinghttpBinding=newWSHttpBinding();BindingElementCollectioncollection=httpBinding.CreateBindingElements();foreach(varelementincollection){ Console.WriteLine(eleme... 阅读全文
摘要:
对于WCF中通讯的双方来说,客户端可以异步的调用服务;服务端对服务也能以异步的方式实现。这就涉及到两个方面:WCF客户端异步调用服务;服务端的异步实现本节是Artech《WCF技术剖析(卷1)》一篇读书笔记。在文章中老A介绍了客户端如何以异步的方式消费WCF服务,以及服务的异步实现,个人对这几种方式做个总结。目录: WCF客户端异步调用服务 服务端的异步实现 WCF客户端异步调用服务主要通过生成异步的代理类,然后调用其中的异步方法来实现异步调用。异步代理类的生成:通过SvcUtil /async 直接生产异步代理;通过添加应用的方式,点击”添加引用“的“高级”按钮,在弹出来的对话框中选择“.. 阅读全文
摘要:
在WCF中有几种涉及到地址的概念:基地址与相对地址、逻辑地址与物理地址。本文就从WebService寻址开始,总结一下WCF中的几种地址。目录:WebService寻址逻辑地址与物理地址基地址、相对地址、绝对地址1、WebService寻址 与以协议无关的SOAP作为消息的载体在被客户端发往服务端以后就不再由客户端所控制了。如果以HTTP将SOAP从客户端发往服务端,通过HTTP协议的标准动作如Get、Post进行操作,服务处理完毕以后再通过HTTP响应发往客户端这样一次交互就完成了。可事实上,SOAP没有标准方法来指定消息的目的地址、如何返回响应以及错误在哪等。如果消息交互变得复杂一点,这. 阅读全文
摘要:
WCF中经常会使用HTTP协议与Tcp协议来实现双工通讯,对应使用的协议分别为WsDualHttpBinding、NetTcpBinding。HTTP是基于应用层的协议,而Tcp是基于传输层的协议。Tcp经过三次握手建立起客户端到服务端的可靠连接,发起请求的客户端与回调客户端的服务端都使用一个连接就能完成。使用HTTP协议时,从客户端到服务端发起请求到服务端返回给客户端回复完成后,连接就关闭。 由于HTTP的这种无连接性,基于WsDualHttpBinding的双工在进行通讯时实际上服务端在回调客户端时,会与NetTcpBinding在使用上有些差异。1、NetTcpBinding实现双工1. 阅读全文
摘要:
前一节介绍了WCF客户端构建的过程,其间又说明了WCF框架中核心ClientRuntime对象建立过程,以及客户端所采用的ClientMessageInspectors、ClientMessageFormatter、ClientOperationSelector等等基础。本节目录:1、RealProxy建立的过程2、TransparentProxy建立的过程3、服务调用过程。4、总结1、RealProxy建立的过程 通过之前的介绍,大家都应该有个共识:客户端通过透明代理建立对应的实际代理对服务进行调用,而在WCF在实际代理对象类型为ServiceChannelProxy。实际代理对象Ser.. 阅读全文