配置WCF的心得
    
            
摘要:经过一整天的折腾,总算对手动配置WCF有些感觉了,于是写篇博文记录一下心得。根据蒋金楠老师的博文所说的,WCF的终结点有三个要素组成,分别是地址(Address)、绑定(Binding)和契约(Contract),简记可写成Endpoint = ABC。地址:地址决定了服务的位置,解决了服务寻址的问题。绑定:绑定实现了通信的所有细节,包括网络传输、消息编码,以及其他为实现某种功能对消息进行的相应处理。绑定的类型包括BasicHttpBinding、WsHttpBinding、NetTcpBinding等。契约:契约是对服务操作的抽象,也是对消息交换模式以及消息结构的定义。以上这些内容摘抄自蒋老
        
阅读全文
摘要:发个牢骚,博客园发博文竟然不能写副标题。这篇既为我的服装DRP系列第二篇,也给为WCF增加UDP绑定系列收个尾。原本我打算记录开发过程中遇到的一些问题和个人见解,不过写到一半发现要写的东西实在太多,有些问题甚至不好描述,又担心误导读者,就作罢了。说到即时通讯大伙都会第一时间想到QQ等聊天软件,似乎跟服装DRP八竿子打不着。即时通信翻译自Instant Messaging,如果我把它解释为即时消息推送,再将其放之于企业应用中就好理解了。举例:上级给下级发货,下级能第一时间知道货已发出,就用不着打电话询问或满心期待地频繁刷新列表;下级店铺卖出一单,正在为销售淡季发愁的老板看到蹦出的提示消息,瞬间有
        
阅读全文
摘要:详解在WCF服务寄宿IIS 在IIS中运行服务 ·将项目构建到\bin目录中 为了方便部署,我们需要对服务项目进行配置,让它编译到一个bin目录中。 1. 在Solution Explorer中右键单击DerivativesCalculatorService项目并选择Properties菜单项。 2. 在Project designer中,单击Build选项卡。 3. 将Output path从bin\Debug\改为bin\,如图所示。Project designer中经过调整的Output path属性 4. 选择File | Save All菜单项。 5. 选择File...
        
阅读全文
摘要:调用过WCF服务的同学可能都会遇到这样的问题,同一个实体类型,不同的服务Visual Studio生成了不同的版本,例如Service1.User和Service2.User,对于C#来说,这是两个不同的类型,Service1获得的User是放不到Service2服务里去的。手动的属性赋值来转换显然是不可取的,所以就共享类型了。方法1,服务端和客户端共享数据契约程序集。这个方法最常用,也是大家最熟悉的方法,把WCF的数据契约放在一个独立类库里,服务端,客户端都引用这个程序集,然后在生成WCF时,选择重新使用引用程序集中的类型即可。这个方法缺点很明显,它只有在客户端和服务端在同一个Visual 
        
阅读全文
摘要:嘻嘻哈,其实学习wcf纯属意外,因为当时是想看一下wpf,结果很不小心搜成了wcf(不知道当时心里怎么想的手给打错了),因为已经了去了解了wcf并且google了一些资料,心想既来之则安之,便整理了一些基本的笔记,写出来顺便就当理整理一下我的思路了。也可以给wcf想入门的同志们一点点参考。 wcf是做什么的,网上讲解很多,我就不多说了,我只想把我的第一个wcf代码程序展示出来,并且会附上详细注释。因为我的工作一直是做winform程序的,所以,该程序的服务器端和客户端均使用控制台应用程序进行开发。 wcf是具体的开发流程,msdn上解释是分为六部:1,定义 Windows Communicat
        
阅读全文
摘要:涉及到的技术概念 WCF,REST,AJAX,JSON遇到的问题:前台页面使用ajax请求后台rest服务,get请求没有问题,post请求时,后台接收参数总是nullrest方法属性,请求参数和返回参数都是json格式#region 创建数据库配置 /// <summary> /// 创建数据库配置 /// </summary> /// <param name="connectionconfig">connectionconfig表实体</param> /// <returns>返回受影响行数</retur
        
阅读全文
摘要:WCF 第一章 基础 系列文章2011-06-23 11:30 by DanielWise, 3842 阅读,15评论,收藏,编辑《Essential Windows Communication Foundation 》 系列翻译文章最先从CSDN 上开始翻译,后来转到博客园,现在是将前四章的翻译内容从CSDN搬到博客园上,同时按章节划分不同系列,方便大家查看。以后会继续更新。[第1篇]基础 微软通信基础是关于服务的。主要是指创建,寄宿,使用以及安全性。WCF是基于标准和互通性的。可以提高开发人员的生产力。简短地说,WCF就是让每一个专业软件开发人员能够使用分布式计算服务。 在这一章,我们主要
        
阅读全文
摘要:WCF Service Hosting的线程关联性Mono实现比.NET统一?WCF Service Hosting的线程关联性Mono实现比.NET统一?Mono 3.0.2 基于双工通信的WCF应用 Demo的讨论中深蓝医生提到了一个问题:楼主,找了几天,终于明白我的程序错误在哪里了,在服务契约上加入下面的接口方法:[OperationContract]double Sub(double x, double y);这样客户端调用的时候,能够直接得到Sub方法的返回值,但同样功能的服务在mono 上面运行的时候,出现下面的错误:Unhandled Exception:System.NullR
        
阅读全文
摘要:在WCF中使用Ninject轻量级IOC框架 之 SOAP风格服务最近学习MVC 看到很多文章都用了Ninject框架进行解耦,就考虑是否能用在平时写的WCF服务中,因为毕竟目前还是总要写服务的……蛋疼ing……传送门:Ninject框架官网:http://www.ninject.org/download.html目前最新版本是3.0,另外需要下载WCF相关的扩展Ninject 入门:http://www.touchsunlight.com/coding/59.htmlWCF 入门:园子里找A大吧……以下为正文,请大家耐心围观,不要高呼No Picture&Code You Say a
        
阅读全文
摘要:Wcf异步调用简单示例WCF异步调用重要的一点就是跟服务契约毫无关系,异步或者非异步都是客户端说了算.所以要想让客户端异步调用服务,如何配置客户端是重点了,下面我来介绍:1.首先是一个简单的服务契约定义View Code2.客户端引入服务定义,我在这里使用VS的自动导入功能,并勾选自动生成异步操作在客户端的服务定义里会自动生成异步的BeginSayHello和EndSayHello方法View Code因此客户端调用服务的时候可以用同步也可以用异步,想咋的就咋的.但是要注意一下微软异步编程模型(APM)的使用方法:View Code今天就到这了标签:WCF,C#,异步
        
阅读全文
摘要:在IIS8添加WCF服务支持2012-11-12 16:57 by jv9, 409 阅读,0评论,收藏,编辑最近在做Silverlight,Windows Phone应用移植到Windows 8平台,在IIS8中测试一些传统WCF服务应用,发现IIS8不支持WCF服务svc请求,后来发现IIS8缺少对WCF服务的Managed Handler,按照以下步骤添加后,IIS8即支持WCF服务。1. 首先添加MIME类型 扩展名“.svc”,MIME类型 “application/octet-stream”2. 然后在“Handler Mappings”中添加Managed Handler,Req
        
阅读全文
摘要:WCF是Windows Communication Foundation的缩写,是微软发展的一组数据通信的应用程序开发接口,它是.NET框架的一部分,是WinFx的三个重要开发类库之一,其它两个是WPF和WF。在本系列文章(我现在计划的应该是三篇,一篇WCF的开发和部署,另外是在.net平台上调用它,第二篇是PHP调用,第三篇是JAVA调用)。 在本次的跨平台集成通信开发示例中,使用到的各种技术,咱且走且看,一边开发一边讲解。1.创建项目结构使用VS2010一个名为IntergatedCommunication的空解决方案,在其下,新建Contracts、Implemention两个类库项目,
        
阅读全文
摘要:鉴于一些理由需要拦截WCF方法,比如参数的检测。一个实际的场景是CSRF防范中需要对CsrfToken的检测。要实现拦截,在形式上要实现两点:1:为WCF方法增加特性类;2:捕获WCF方法;第一点很好实现,实现一个Attribute类。第二点则可以利用WCF框架中的IOperationInvoker接口,让该Attribute类同时也实现该接口,同时在该接口方法的ApplyDispatchBehavior方法中,为dispatchOperation实现一个新的OperationInvoker。public class MyOperationInterceptorAttribute : Attr
        
阅读全文
摘要:当使用WAS寄宿MSMQ的时候,即使用net.msmq协议的时候,会出现很多错。这是因为使用MSMQ需要比其他协议配置更多的地方。。。首先,如果你要做一个关于MSMQ的demo,我推荐大家使用“化零为整WCF(16) - 消息队列(MSMQ - MicroSoft Message Queue)”里边的示例。推荐理由:示例简单明了。其次,必须为IIS安装non-HTTP组件,并且为WCF Service应用程序开启net.msmq支持,否则会出现以下错误:Could not find a base address that matches scheme net.msmq for the endp
        
阅读全文
摘要:对于在IIS中通过W3SVC或WAS寄宿的WCF Service,其在浏览器中显示的地址(Web地址),与其配置文件中的BaseAddress和EndPoint Address有什么关系呢?让我们来分析一下。 第一,在IIS中寄宿时,不管WCF Service的EndPoint用什么协议向外暴露,它在浏览器中显示的地址不会变。该地址是WCF Service的可浏览地址(Web地址),它取决于WCF Service在IIS中的虚拟路径。该地址是面向浏览器的,只支持Http协议,例如http://localhost/WcfSrvDemo4/OrderProcessorService.svc。此时(
        
阅读全文
摘要:WCF Service重命名之后,在客户端就会出现服务类型找不到的错误。要分析解决这个问题,我们就要从svc、config和code文件之间的关系入手来分析。。。新添加一个WCF Service项,命名为OrderService.svc,然后把svc的文件名改成其他的名字,比如OrderProcessorService.svc。编译通过之后,试图从客户端访问这个service的时候,就会报错说找不到这个服务类型,如下:The type 'WcfSrvDemo4.OrderService', provided as the Service attribute value in t
        
阅读全文
摘要:一、诡异现象1、 在对一个项目的现场实施调试中,应用软件系统在获取服务端数据时报“操作失败”,经日志反馈为:WCF通讯超时!2、 经过反复测试发现:并不是所有操作都会失败,像登录、增、删、改、查等简单操作能正常运行,只是在获取某种数据量比较大的数据时会出现操作失败的情况。3、现场环境为:Dell R710(服务器)+Dell商用机(客户端)+光纤网.4、我们的系统是C/S和B/S统一的行业应用软件,采用WCF进行分布式通讯,并提供统一的应用服务。二、问题分析1、 电话对现场进行指导,把超时时间设置为10分钟后照样有问题。这让我很纳闷,就算是压力测试我们也要求即使是大数据也要在2分钟这内返回,何
        
阅读全文
摘要:Bootstrap是Twitter推出的一个开源的用于前端开发的工具包。它由Twitter的设计师Mark Otto和Jacob Thornton合作开发,是一个CSS/HTML框架。本文提供了一个解决方案利用ASP.NET SiteMap生成与Bootstrap“兼容”的菜单。具体的原理很简单,就是利用SiteMap读取预先定义的网站结构,按照Bootstrap的标准生成相应的HTML。[源代码从这里下载]我们将基于菜单的呈现定义在HtmlHelper的扩展方法中。如下面的代码片断,扩展方法RenderBootstrapMenu具有一个缺省的参数siteMapProviderName ,表示
        
阅读全文
摘要:大家都知道WCF会话模式有几个要求:1、会话契约;2、绑定支持;3、实例模式为PerSession。这几个要素是WCF支持的必要条件。会话契约:由服务端提供实现,客户端调用时只持有契约定义,所以需要通过契约定义告知客户端,服务端是支持会话的。绑定:会话没有绑定的支持也就无从谈起了。InstanceContextMode为PerSession。通过它可以保证在会话期间,服务实例不会被销毁。较为复杂的问题在于ServiceContract中SessionMode的设置。SessionMode定义如下://摘要://指定可用于指示支持协定需要或支持的可靠会话的值。publicenumSessionM
        
阅读全文
摘要:昨天有人在微博上问我如下一个问题:老蒋,客户端调用wcf的一个接口函数时,有没有什么办法可以先弹出一个确认框,确认后再执行调用。因为这个接口函数再很多地方都执行了调用,所以我想在某个入口进行统一地弹出一个确认框...其实这个问题可以通过WCF的扩展来完成,具体来说这个扩展涉及到一个我们不太常用的组件“InteractiveChannelInitializer”,在我的《WCF全面解析》中对它有过概括性的介绍。InteractiveChannelInitializer实现了接口IInteractiveChannelInitializer,从名称可以看出这是一个“交互性”的“信道初始化器”,在一般
        
阅读全文