随笔分类 -  Wcf

1
wcf 分布式计算
摘要:Autofac 是一款优秀的IOC的开源工具,完美的适配.Net特性,但是有时候我们想通过属性注入的方式来获取我们注入的对象,对不起,有时候你还真是获取不到,这因为什么呢?1.你对Autofac 不太了解,在这个浮躁的社会,没有人会认真的了解每个开源项目,只要求能用就行2.没有时间了解,你是一个很忙... 阅读全文
posted @ 2014-11-08 22:31 baidixing 阅读(41683) 评论(16) 推荐(9) 编辑
摘要:无法删除数据库,因为该数据库当前正在使用。1 public ChinaerContext()2 : base("name=ContextConn")3 {4 // Database.SetInitializer(null);5 Database.SetInitializer(new DropCreateDatabaseAlways());6 }这是我采用entity framework codefirst进行自动生成数据库出现的错误,纠结了好久,现在我发现了一个特别土但是有效的方式。就是打开s... 阅读全文
posted @ 2013-08-20 01:04 baidixing 阅读(2648) 评论(5) 推荐(1) 编辑
摘要:在C#中存在方法重载,我们可以定义相同方法名但是参数类型或者个数不同,从而实现方法的重载功能。在wcf中,如果能够实现方法重载,那么我们就可以传递不同类型的数据,让服务返回不同的结果。这真是一个不错的主意,但是wcf能够实现方法重载吗?我们先简短的思考一下:wcf服务和客户端通过soap消息(也就是xml数据)进行交互,soap消息会包含参数类型以及返回值类型,还有方法名,客户端或服务会解析soap消息,转换成本地对象,从技术功能上说可以实现方法的重载,但是考虑到soap消息的传输安全性问题,soap消息可能会被更改,所以从这方面来说方法的重载就不太可能实现了,因为服务的调用要的就是稳定、可靠 阅读全文
posted @ 2013-04-15 23:22 baidixing 阅读(6347) 评论(0) 推荐(2) 编辑
摘要:今天看了一下wcf服务编程这本书,本来准备大致的浏览一下,但是当我看到了契约操作不能使用引用对象作为参数,只允许使用基本类型或数据契约这句话的时候,我知道契约操作只能是通过数据契约进行数据的传递,但是我也是好奇在电脑上测试了一下,结果发现这句话存在问题,可能是我对这句话的理解不够,或者说这句话隐含着什么别的意思,我没有理解透,下面我们就一起来通过这句话来构建一个测试程序来测试一下这句话的正确性。 1 using System; 2 using System.Collections.Generic; 3 using System.Linq; 4 using System.Text; 5 usin 阅读全文
posted @ 2013-04-14 20:42 baidixing 阅读(1173) 评论(3) 推荐(0) 编辑
摘要:在我以前的wcf博客中,我倾向于通过一个具体的问题来引出一个wcf的技术知识点,这得到了园友们的支持,我在这里向支持我的朋友们说声谢谢,谢谢你们的支持。但是也得到了很多的建议,今天有园友通过QQ联系我说,我讲的内容虽然说有知识点,但是知识点太分散,不能完整的理解wcf的各个知识点的作用以及相互之间的联系,我听后觉得很有道理,所以我放弃我以前的分散写wcf知识点的做法,改成一个系列一个系列的进行,这样可以让大家更好的更完整的掌握wcf的精髓。我整理了一下wcf的知识系列,可是费了我不少的功夫啊,写一个容易,要想总结出每个知识点应该属于哪个系列,还真是要费些脑细胞才行啊。WCF元数据的作用以及发布 阅读全文
posted @ 2013-04-13 23:26 baidixing 阅读(2077) 评论(1) 推荐(1) 编辑
摘要:在上一篇博客中介绍了TcpTrace的使用,并且说到要使用TcpTrace最简单的方法就是设置ClientViaBehavior的viaUri的值。但是没有说这个值表示的是什么意思?其实这个值表示的物理地址。其实在物理地址和逻辑地址分离的方面包括两方面的内容:服务端的物理地址和逻辑地址的分离以及客户端的物理地址和逻辑地址的分离,这个如果配合TcpTrace可以很好的说明结果。今天我们要说的是服务端的物理地址和逻辑地址的分离,因为客户端的分离是通过Clientvia实现的,所以那个很简单。要说服务端的物理地址和逻辑地址的分离,不得不说两个功臣:ListenUri和ListenUriMode。为什 阅读全文
posted @ 2013-04-08 23:42 baidixing 阅读(2288) 评论(0) 推荐(3) 编辑
摘要:现在时间已经是凌晨一点了,我准备了端口共享的内容,但是因为时间太晚,明天还要上班,所以我们就不长篇大徐了,剪短的说明一下内容,让大家明白就可以了。今天来说一下端口共享,什么是端口共享呢?在wcf中,所谓的端口共享其实就是一个服务的地址为http://127.0.0.1:80/calService,而另一个服务的地址也为http:127.0.0.1:80/weatherService,但是端口是一样的,在wcf中这其实是不能运行的。第一个服务启动以后,第二个服务如果要启动的话就会出现异常,为了说明wcf的端口共享,我们仍然是来举个简单的例子说明一下。 1 <?xml version=&qu 阅读全文
posted @ 2013-04-08 01:31 baidixing 阅读(5345) 评论(4) 推荐(2) 编辑
摘要:wcf支持请求-回复(response-reply)、单工(oneway)以及双工(duplex)三种消息交换模式。今天我们来说一下第一种消息交换模式--请求--回复,请注意这里是消息交换模式。请求-回复消息交换模式是默认的wcf通信方式,如果我们不显式的设定消息交换模式,那么它就是response-reply模式。这和我们通过浏览器访问一个网址的原理是一致的,客户端发起一个请求,然后客户端等待服务器的响应,服务端处理完成返回结果,在客户端显示,如果超时,浏览器会提示无法显示页面的错误。其实原理是一致的,并且如果采用http作为传输协议的话,可以说没有任何的区别。 1 namespace Ch 阅读全文
posted @ 2013-04-06 15:07 baidixing 阅读(2798) 评论(1) 推荐(2) 编辑
摘要:今天本来准备了wcf的三种消息模式 wcf 基础知识 之 消息交换模式 response/reply oneway deplex 的介绍,但是考虑到里面有说到soap消息,但是可能还有一些朋友对如何查看soap消息还不是很清楚,所以这次先来把如何查看wcf通信的介质--soap消息介绍一下。其实这个工具的使用非常简单,可以说如果知道了怎么做那是小学一年级的水平,但是我就曾经在这个一年级还浪费了好一些时间,所以为了避免浪费大家的时间,毕竟程序员的时间不是特别多。TcpTrace 专业查看wcf通信的工具,使用非常简单,但是为了演示如何使用这个小工具,以及我们应该注意哪些地方,还是通过一个简单的例 阅读全文
posted @ 2013-04-05 23:24 baidixing 阅读(3330) 评论(1) 推荐(3) 编辑
摘要:换了一个新工作,来到新的公司当然最重要的就是要先熟悉公司的业务,我果断了通过tfs下载了公司的一个业务的源码,里面虽然有很多的封装功能我看不到具体实现,但是通过项目的结构我还是发现了一个公司项目能够成功的关键。 公司名我就不说了,说了大家会觉得我有点什么似的?咱就说我通过看公司源码发现了什么,我先说说这个源码项目是做什么的?这个源码是针对公安局进行调度的程序,就是相当于公安局接线员似的,听公司的老人说这个项目的功能,我以为没有什么复杂的,但是我拿到了公司的源码,我的妈呀,吓我一跳,一共有接近六十个项目,就是这一个解决方案中有六十个项目存在。这是我干软件那么长时间,第一次看到一个解决方案竟然需. 阅读全文
posted @ 2013-04-03 22:22 baidixing 阅读(5555) 评论(23) 推荐(9) 编辑
摘要:上一篇博客中我们介绍到了数据契约的序列化操作,虽然数据契约的序列化和xml的序列化操作基本保持一致,除了一些细小的差别外,但是数据契约的序列化更加简单,更加方便。今天我们继续数据契约的序列化,只不过今天要讨论的问题不是如何序列化,而是如何保证序列化成功。说到这里,你可能会笑了?保证序列化成功是wcf的操作,我们根本不用管,如果序列化不成功,也是wcf框架的问题,肯定不会是我序列化对象的问题。其实对象的序列化和反序列化实现了数据在托管对象和xml之间两种形态的转换。由于托管对象是通过CLR类型来描述的,所以数据契约序列化器DatacontractSerializer在序列化的时候必须明确所有对象 阅读全文
posted @ 2013-03-29 18:52 baidixing 阅读(1311) 评论(2) 推荐(0) 编辑
摘要:上一篇博客我们说明了数据契约的前身Xml的序列化,这次还是言归正传,回到wcf的技术上来,分析一下DataContractSerializer 。首先我们必须了解wcf默认是通过xml进行数据传输,但是并不意味着就一定要用这种,还有轻量级的json。DataContractSerializer继承自XmlObjectSerializer,是可以直接对.Net对象进行序列化操作,但是DatacontractSerializer的使用更加方便。要使一个类成为数据契约,我们必须要通过DataContractAttribute进行标注,然后通过应用DataMemberAttribute特性来标注它的属 阅读全文
posted @ 2013-03-28 23:19 baidixing 阅读(1732) 评论(1) 推荐(0) 编辑
摘要:在上一篇博客介绍了xml序列化的原则,wcf 基础教程 契约 Contract 数据契约DataContract序列化前身 XmlSerializer xml序列化, 今天我们沿着上次描述的继续前进,这次的内容可能会很少,但是应该说如果我们想更进一步的控制xml,那么还是很有必要的。好了,不多说了,xml序列化使用的是.Net 中的XmlSerializer,在System.Xml.Serialization.XmlSerializer 命名空间下。上次仅仅是XmlSerializer 采用的默认的序列化规则。很多情况下,我们需要控制xml的输出,那么就需要我们人为的干预和控制。在xml序列化 阅读全文
posted @ 2013-03-21 23:39 baidixing 阅读(1293) 评论(2) 推荐(0) 编辑
摘要:本来今天打算描述一下数据契约的序列化,毕竟只是单纯的说数据契约的作用也没有太大意义,但是我发现如果单纯的叙述wcf的序列胡DataSerializer 很困难,因为它采用的事xml序列化,所以今天打乱了我的计划,来介绍一下.Net中的xml序列化,毕竟我们在使用序列化器的时候,很多时候生成的都是xml。契约是交互双方或多方就某个问题达成的一共共识,而信息交换式wcf通信的唯一手段,也是跨平台的关键,所以契约的最根本目的不是定义什么操作方式,而是对消息的结构进行规范、统一,只有通信双方对消息的结构达成了一致,通信才可能进行。wcf默认的数据交换方式就是xml,虽然说数据在wcf中有CLR对象和X 阅读全文
posted @ 2013-03-21 22:56 baidixing 阅读(1483) 评论(0) 推荐(1) 编辑
摘要:在前几篇博客中我有说到服务的寄宿,就是服务要运行起来必须采取的几种方式,相当于我们可以照葫芦画瓜的效果运行一个wcf服务,但是那只是实践,我们知其然更要知其所以然,所以从今天开始我们开始介绍wcf的三大部分:契约、绑定以及服务。当然这其中会有很多的细节问题,比如说终结点等等,我们穿插着进行。今天就先来预习一下契约,也称为合同(Contract).wcf的契约一共包括几种:数据契约、服务契约、消息契约、错误契约。既然是预习,那么我们就一起来学习一下这几种契约的作用。数据契约:DataContract 是用来对wcf的数据传输进行串行化。说到串行化,.net中也有串行化,但是.Net的串行化是把所 阅读全文
posted @ 2013-03-19 23:14 baidixing 阅读(1879) 评论(0) 推荐(1) 编辑
摘要:wcf的寄宿方式多种多样,今天我们一起来探讨一下windows 服务的寄宿方式,其实明白了控制台的寄宿方式,在windows下的寄宿方式也是一样,只不过是操作方式有点区别。编程代码基本是一样的。我们首先创建一个window 服务应用程序,然后在service1.cs设计界面中添加安装程序,这些都是我们创建windows服务应用程序应该熟知的步骤,我就不再赘述了,我们需要做的就是把控制台程序中的添加服务宿主的代码拷贝到windows服务应用程序中。 1 protected override void OnStart(string[] args) 2 { 3 4 ... 阅读全文
posted @ 2013-03-19 00:18 baidixing 阅读(4422) 评论(5) 推荐(2) 编辑
摘要:wcf 的服务寄宿方式大致可以分为两种,一种就是自我寄宿,另一种就是通过操作系统的组件进行寄宿。wcf的服务需要承载于一个被称为宿主的应用程序中。宿主程序为请求监听、消息处理、服务激活、以及操作执行提供了一个运行环境。我们将利用宿主程序来承载服务的操作称为服务寄宿。自定义一个控制台应用程序、Windows程序或其他类型的程序作为承载服务的宿主,我们将这种方式称为服务寄宿(Self-Hosting).另一种就是通过操作系统现有的进程激活方式为wcf服务提供宿主,包括IIS、WAS(Windows激活服务)、Windows 服务等几种。既然说到了寄宿,我就多说一句,就是IIS寄宿不需要启动,因为I 阅读全文
posted @ 2013-03-16 23:36 baidixing 阅读(2681) 评论(2) 推荐(2) 编辑
摘要:可能大家会觉得我说完了wcf的介绍以后,会介绍wcf的契约、服务这些内容,但是我没有,为什么呢?原因就是我一直坚持的从程序员中来,到程序员中去的观点。程序员的学习是一个渐进的过程,不是有了介绍就可以直接了解wcf的全貌,但是我也没有介绍wcf的配置,因为这个内容很多,但是我今天要介绍的是wcf中的一个知识点,这个知识点只是一个渐进的过程,但是知道了这个知识点以后,我们可以避免很多错误的发生。所以我说一下wcf中的一个Attribute ConfigurationName。在很多的契约及其服务行为属性中我们都可以看到这个属性的存在,但是这个属性究竟是做什么的。如果不仔细看一下很真是有些误导,但是 阅读全文
posted @ 2013-03-16 22:19 baidixing 阅读(2191) 评论(3) 推荐(0) 编辑
摘要:在上一篇博客wcf 基础教程 第一讲 wcf基础知识中,因为篇幅过长,所以我选择在这一篇把wcf用IIS承载的方式介绍一下。首先我们在WebHosting web项目中创建一个.svc的文件,这里我建议之间添加一个类,然后把文件后缀改成.svc就可以。我们添加了一个CalService.svc文件。1 <%@ServiceHost Service="Chinaer.WcfDemo.Services.CalService" Debug="true" %>添加了这个文件以后,我们在web.config中进行简单的配置。 1 <system. 阅读全文
posted @ 2013-03-16 00:22 baidixing 阅读(2481) 评论(0) 推荐(1) 编辑
摘要:最近工作有点忙,感觉有点累啊,很久没有更新博客了,看到自己的博客访问量日渐下降,我于心不忍,决定还是重新开博来吸引大家的关注。这次要说的不是别的,正是大名鼎鼎的wcf。或者在中间我会穿插MVC的说明,毕竟上一个系列MVC也没有写完就过年了,这次希望能坚持到底。呵呵既然是基础,那我们就来了解一下wcf的前生今世。然后再用一个小实例说明一下就可以结束了。SOA(面向服务的架构) 大家都很明白,wcf就是.Net平台下为了这个目的为出生的一个精品,作为微软技术的大一统,可以说值得我们深入的学习。WCF(Windows Communication Foundation)是作为.Net framewor 阅读全文
posted @ 2013-03-15 23:23 baidixing 阅读(8372) 评论(11) 推荐(4) 编辑

1