wcf项目源码
❶ WCF全面解析的前言
“全书之写印,实系初稿。有时公私琐务猬集,每写一句,三搁其笔;有时兴会淋漓,走笔疾书,絮絮不休;有时意趣萧索,执笔木坐,草草而止。每写一段,自助覆阅,辄摇其首,觉有大不妥者,即贴补重书,故剪刀浆糊乃不离左右。个中甘苦,只自知之。”
在某个阳光明媚的早晨,我在去上班的公交车上翻看岳南先生的《南渡北归》的时候,看到上面这段董作宾描述自己写作《殷历谱》之甘苦的文字,回想起我写作这本书的经历,不禁感慨万千。我无意将《WCF全面解析》自比煌煌巨着《殷历谱》,只是觉得人同此心,这段文字正好描述我写作此书的状态。
《WCF技术剖析(卷1)》(以下称《卷1》)于2009年7月正式出版,在此不久我就开始了《卷2》的创作。对于《卷1》的写作,我还算是游刃有余,但是写作《卷2》的难度是我始料未及的。如果像市面上大部分专着一样只涉及WCF编程,我想《卷2》早在一年之前就已经完成了。但是我在写作之初就没有将本书定位为一本纯粹的WCF编程书籍,而是决心写一本“深入肌理”,对WCF进行“庖丁解牛”式剖析的书籍。在没有任何现成资料可供参考的情况下,我只能通过对源码的分析来了解其底层的实现原理。为了能够确保这部分内容的正确性,我编写了很多的测试程序来证实我的想法。
“探究之深”是本书难以在较短的时间之内交付出版的一个主要原因,而另一个因素则是“涉及之广”。WCF不是微软在Windows平台下的闭门造车,而是在设计之初就考虑到了针对开放标准的支持。《卷2》涉及到太多的WS-*规范,比如“异常处理”一章涉及到SOAP;“元数据”一章涉及到WS-Policy、WS-Transfer、WS-MEX和WSDL;“事务”一章涉及到WS-Coordination和WS-AT;“可靠会话”一章涉及到WS-RM;“传输安全”一章涉及到WS-Security、WS-Trust 、WS-Secure Conversation和WS-Security Policy;“WCF 4.0新特性”一章涉及到WS-Discovery。对于这一系列的WS-*规范,单单从头到尾看一遍都需要花费不少时间,而我已经不太记得自己究竟看多少遍了。
《卷1》的整个内容基本上都围绕着WCF本身,但《卷2》却涉及到不少的背景知识。为了让读者对WCF有一个全面而深刻的了解,我在书中涉及到很多背景知识的介绍。比如“事务”一章中花费了很多文字介绍MSDTC和System.Transactions事务;“并发与限流”一章中有针对同步上下文的介绍;为了让读者能够深入认识可靠会话的实现原理,我将其同TCP协议的机制进行类比;“队列服务”一章中对MSMQ进行了系统的介绍;“传输安全”一章中更是涉及到针对非对称加密以及NTLM和Kerberos认证原理的介绍。
由于写作难度不小,加上写作和资料收集只能在工作之余进行,所以很多次都有中途放弃的念头。很有意思的是,每次在我下定决心放弃写作后没几天总是会收到《卷1》的读者给我的留言,这些留言体现了对《卷1》的肯定,充满了对《卷2》的期待。读者的肯定和期待一次次给了我坚持下去的力量,前后经历了两年的时间终于完成了《卷2》,这算是对读者的交代,也是对我自己的交代。
《卷2》完稿之后我开始为《卷1》的再版进行修订。对于出版后的《卷1》我基本上很少翻看,因为我个人基本上不太喜欢翻看自己写的东西,包括自己写的400多篇博客文章。针对《卷1》的修订让我第一次完整地阅读自己写的东西,经过了写作《卷2》的“折磨”,让我对WCF有了更加深刻的认识,于是我基于对WCF最新的理解开始对《卷1》的内容进行大刀阔斧的修改。虽然《卷1》大体上还是保留着原来的结构,但是内容已经发生了巨大的改变。据我粗略估计,改动内容的比率基本上达到一半。
最后我将《卷2》和修订后的《卷1》给李建忠和吕建伟(阿朱)老师帮忙审阅,李建忠老师建议增加关于WCF REST的内容,于是我在《卷1》中新加了“REST服务”一章。由于新的《卷1》已经难现往日模样,在本书的策划编辑张春雨老师的建议下我决定将原《卷1》和《卷2》作为一个整体分上、下册出版,于是才有了你手中的这本《WCF全面解析》。 “实践出真知”,不断地在具体应用中进行实践是学习WCF最有效的手段。实践是检验真理的唯一标准,通过将所学的WCF知识应用到一个真正的应用之中,才能确保我们掌握的知识的正确性。实践不但可以巩固我们的所学,还会让我们意识到不足。《WCF全面解析》在每一章节都会提供一系列的实例演示,读者可以单独下载这163个实例的源代码。
❷ 求《WCF服务编程》随书源代码,要完整版的啊
❸ 跪求WCF的工作原理
首先:
WCF的全称是,Windows通信基础的意思,是Microsoft为构建面向服务的应用程序而提供的统一编程模型,它整合.NET平台下所有和分布式系统有关的技术。
其次:
WCF本质是面向服务的。主要分为服务端和客户端两部分。服务端和客户端进行通信的过程如下图所示:
在上图中,主机进程就是服务端,在其中需要创建服务,然后将服务通过EndPoint(终结点)与客户端进行通信。客户端在使用服务时,需要首先创建一个代理服务,然后调用这个代理服务。
EndPoint(终结点)在WCF中是非常重要的部分。它包含了服务地址(Address)、绑定格式(Binding)和契约(Contract)。其中,地址定义了服务的位置,绑定定义了服务通信的方式,契约定义了服务所提供的功能。为了便于记忆,我们将终结点的这三个要素简称为服务的ABC。
服务端提供了什么服务,都具备什么功能,这被称为WCF服务的契约。
WCF服务不能凭空存在。每个WCF服务都必须托管(Hosting)在一个Windows进程中,该进程被称为宿主进程。
WCF服务宿主可以由IIS提供,可以由Windows服务提供,也可以由WindowsVista的Windows激活服务提供。其中,使用IIS托管只能使用HTTP协议。
❹ wcf分布式winform快速开发框架系统源码权限管理源码c#+sql怎么安装
berated them for wasting his
❺ C#WCF winform小项目源码
❻ 如何构建wcf项目 服务端和客户端分别要进行哪些操作
你这个问题有点泛了, 首先你需要在服务度定义服务协定(一般是接口) 然后再根据服务协定来实现服务(实现接口中定义的方法) 然后你需要把服务发布出去 可以采用自承载和IIS等来承载 一旦承载好了之后 就会有一个服务地址 然后在你的客户端添加引用就可以了
❼ 如何配置net.tcp 的WCF服务
这个方法里,我们有两个函数,一个能够根据学生点获取学生全名,另一个是根据学生点获取学生的实体对象。
好了,让我们来编译这个项目,得到一个WCFServiceGeneratedByConfig.exe文件。
然后,我们需要配置文件来让服务器端启动,所以这里我们要用WCF Service Configuration Editor
工具来进行,由于在VS2008 和VS2010中带有这个软件,我们可以直接通过菜单->Tools->WCF Service Configuration Editor来打开。
首先,点击File->New config, 打开Service的Configuration界面。
然后,点击Create a new service…,在弹出的界面中,我们选择刚才生成的那个WCFServiceGeneratedByConfig.exe文件。双击之后,软件自动显示出了里面含有的Service:
点选那个Service,然后点击两次next,我们会看到出现了选择Communation Mode的界面,这里由于我们用的是net.tcp,所以我选择了第一个:TCP。
然后点击Next,我们会看到要我们填写EndPoint,这里我随便填写了一个:
之后,点击Next知道Finish,然后,我们的最基本的配置就结束了。
回到Config界面之后,我们点击Advanced->Service Behaviors->New Service Behavior Configuration,在弹出的界面中,我们点击Add->serviceMetadata:
然后点击Add,我们就添加了一个Behavior Element。点击刚刚生成的serviceMetadata节点,在显示的界面中,设置HttpGetEnabled为true。
然后点击原来的Service节点下的Host节点,在Base Address栏目下单击Add,添加如下的Base Address:
最后点击OK。然后点击菜单File->Save As 保存到项目文件夹下即可。
这里是生成的代码:
View Code
这一步做完后,我们需要让服务能够启动,怎么启动呢?请看下面的代码:
View Code
代码中的注释部分非常重要,我们一定要添加,否则下面的步骤不能进行,具体的原因,参加我的另一篇文章:在net.tcp模式下,由SvcUtil.exe生成代理类文件和配置文件
然后运行这个ConsoleApplication。
接下来,找到SvcUtil.exe,C:\Program Files\Microsoft SDKs\Windows\v7.0A\bin\SvcUtil.exe,在CMD窗口下运行如下命令:
C:\Program Files\Microsoft SDKs\Windows\v7.0A\bin\SvcUtil.exe net.tcp://127.0.0.1:50001/StudentServiceEndPoint
这样,这个小工具就会自动的给我们生成代理类和配置文件
Microsoft (R) Service Model Metadata Tool
[Microsoft (R) Windows (R) Communication Foundation,版本 3.0.4506.2152]
版权所有(c) Microsoft Corporation。保留所有权利。
正在尝试使用 WS-Metadata Exchange 从“net.tcp://127.0.0.1:50001/StudentServiceEndPoint”下载元数据。此 URL 不支持 DISCO。
正在生成文件...
E:\WCF\WCF_ChatRoom\StudentService.cs
E:\WCF\WCF_ChatRoom\output.config
请按任意键继续. . .
客户端的配置步骤
接下来,新建一个WindowsFormsApplication程序,将这个代理类拷入,配置文件修改名称为App.config拷入,
然后在Form1.cs中拖入一个文本框,一个按钮,一个DataGridView,后台代码如下:
View Code
启动这个实例,输入学生ID,我们成功得到了服务端返回的值。
在本机和公网上的运行结果
那么能不能在公网上使用呢?呵呵,这个当然,将服务端拷贝到外网的一台机器上,然后修改服务器端的配置文件中的地址为:net.tcp://169.*.*.124:50001/ StudentServiceEndPoint,然后将本机的配置文件中的地址也修改为这个,最后运行,依然能够得到返回的结果。
❽ 刚接触WCF,想知道 base.InvokeAsync是怎么执行的,怎么能跟过去看到阅读源码
你这是在客户端调试的时候看的吧,这种代码新手真不容易看懂啊。还是看服务端的代码好些。
❾ 谁有ASP.NET MVC3 WCF 开发的小项目源代码
如果你是想学习的话,最好下载个mvc3的书籍,然后跟着他边学变写代码,等你学完了,自然就有项目源码了
❿ wcf开发的服务,怎么自动生成客户端代码
首先VS中的模板WCF SERVICE APP 项目,是一个承载到IIS的服务,用过web service就清楚,部署都差不多。 客户端引用wcf服务,知道url地址就行了,客户端添加服务引用,和添加以前的web service差不多。 客户端使用到服务端的数据模型,在服务端定