03 2015 档案

摘要:对于Client来说,它实际上不能和Service进行直接交互,它只能通过客户端创建的Proxy来间接地和Service进行交互,然而真正的调用而是通过服务实例来进行的。我们把通过Client的调用来创建最终的服务实例过程称作激活,在.NET Remoting中包括Singleton模式、SingleCall模式和客户端激活方式,WCF中也有类似的服务激活方式:单调服务(PerCall)、会话服务(PerSession)和单例服务(Singleton)。 阅读全文
posted @ 2015-03-26 13:56 梦在旅途 阅读(3397) 评论(0) 推荐(2) 编辑
摘要:一、服务契约(包括回调契约)通过指定不同的OperationContract.Name来实现重载方法,当然代码部份还是必需符合C#的重载要求,即相同方法名称,不同的参数个数或参数类型 namespace Contract { [ServiceContract(Name = "HellworldService", Namespace = "http://www.zuowenjun.cn")] public interface IHelloWorld { [OperationContract(Name = "GetHelloWorldWithoutParam")] string GetHelloWorld(); [OperationContract(Name = "GetHelloWorldWithParam")] string GetHelloWorld(string name); } 阅读全文
posted @ 2015-03-25 21:19 梦在旅途 阅读(583) 评论(0) 推荐(0) 编辑
摘要:在WCF中,提供了专门用来序列化和反序列操作的类,该类就是DataContractSerializer类。一般而言,WCF会自动选择使用DataContractSerializer来对可序列话数据契约进行序列化,不需要开发者直接调用。WCF除了支持DataContractSerializer类来进行序列化外,还支持另外两种序列化器,这两种序列化器分别为:XMLSerializer(定义在System.XML.Serialization namespace)和NetDataContractSerializer (定义在System.XML.Serialization namespace)。XmlSerializer类不是WCF专用的类,Asp.net Web服务统一使用该类作为序列化器,但XmlSerializer类支持的类少于DataContractSerializer列支持的类型,但它允许对生成的XML进行更多的控制,并且支持更多的XML架构定义语言(XSD)标准。它不需要在可序列化类上有任何声明性的属性。 阅读全文
posted @ 2015-03-25 21:15 梦在旅途 阅读(977) 评论(0) 推荐(0) 编辑
摘要:学习与强化在双工模式下WCF服务创建与使用,步骤与代码如下。 第一步,定义服务契约(Service Contract),注意ServiceContract特性上需指定回调契约 //服务契约 using System.ServiceModel; namespace WcfServiceLibrary1 { [ServiceContract(Namespace = "http://wwww.zuowenjun.cn", CallbackContract = typeof(ICallback))] public interface IHello { [OperationContract(IsOneWay = true)] void SetName(string name); } } //回调契约(由于回调契约本质也是一个服务契约,所以定义方式和一般意义上的服务契约基本一样。 有一点不同的是,由于定义服务契约时候已经通过[Ser 阅读全文
posted @ 2015-03-25 21:12 梦在旅途 阅读(3190) 评论(0) 推荐(0) 编辑
摘要:不说废话,直接上代码。以下服务创建是在独立的WCF类库中,若采用WCF应程程序,定义及创建服务代码均相同,但文件名不同,是CalculatorService.svc 第一步,定义服务契约(Service Contract),即:定义一个服务接口 using System.ServiceModel; namespace WcfServiceLibrary1 { [ServiceContract(Namespace="http://www.zuowenjun.cn")] public interface ICalculator { [OperationContract] double Add(double x, double y); [OperationContract] double Subtract(double x, double y); [OperationContract] double Multiply(double x, 阅读全文
posted @ 2015-03-25 21:04 梦在旅途 阅读(470) 评论(0) 推荐(0) 编辑
摘要:不说废话,直接上代码。以下服务创建是在独立的WCF类库中,若采用WCF应程程序,定义及创建服务代码均相同,但文件名不同,是CalculatorService.svc 第一步,定义服务契约(Service Contract),即:定义一个服务接口 using System.ServiceModel; namespace WcfServiceLibrary1 { [ServiceContract(Namespace="http://www.zuowenjun.cn")] public interface ICalculator { [OperationContract] double Add(double x, double y); [OperationContract] double Subtract(double x, double y); [OperationContract] double Multiply(double x, 阅读全文
posted @ 2015-03-25 20:54 梦在旅途 阅读(398) 评论(0) 推荐(0) 编辑
摘要:通过LINQ表达式树动态构建查询条件 第一种方法:PredicateExtensions 第二种方法:PredicateBuilder 注意,经我实际应用,发现第一种方法PredicateExtensions类有个缺陷,就是仅适合在DbDataContext中使用,若用在EntityContext中,则会报错:LINQ to Entities 不支持 LINQ 表达式节点类型“Invoke”。而使用第二种方法则不会有这个问题,至于问题的根源我还没有找到原因,还望高手指教,谢谢! 阅读全文
posted @ 2015-03-20 22:20 梦在旅途 阅读(1878) 评论(0) 推荐(1) 编辑

点击右上角即可分享
微信分享提示