无废话WCF入门教程一[什么是WCF]

无废话WCF入门教程一[什么是WCF]一、概述WindowsCommunicationFoundation(WCF)是由微软发展的一组数据通信的应用程序开发接口,可以翻译为Windows通讯接口,它是.NET框架的一部分。由.NETFramework3.0开始引入。WCF的最终目标是通过进程或不同的系统、通过本地网络或是

大家好,欢迎来到IT知识分享网。

一、概述

  Windows Communication Foundation(WCF)是由微软发展的一组数据通信的应用程序开发接口,可以翻译为Windows通讯接口,它是.NET框架的一部分。由 .NET Framework 3.0 开始引入。

  WCF的最终目标是通过进程或不同的系统、通过本地网络或是通过Internet收发客户和服务之间的消息。

  WCF合并了Web服务、.net Remoting、消息队列和Enterprise Services的功能并集成在Visual Studio中。

  WCF专门用于面向服务开发。

二、基于Asp.net 的应用程序开发与面向服务开发

wcf

  在基于Asp.net 的应用程序开发中,我们由客户机的浏览器访问应用程序服务器,然后通过应用程序服务器中的数据库连接去连接数据库服务器,读取或是操作数据,有时候可能会多一个文件服务器。大家可以观察到,基本上所有的应用都放在了一台服务器上,但对于一个,由于业务上的需要(如:与外部系统交互),一台服务器很难支持所有的应用。我们再看下面的图:

wcf

  客户机使用浏览器访问服务器A,服务器A为了业务需要与其他各种应用部署在服务器B、C、D….再通过WCF技术互相通信,相互访问…然而面向服务的好处不仅仅在此,他还提供了不同语言不同操作系统的可交互性..由于本文不是介绍SOA的文章,感兴趣的同学可以参见:SOA

三、第一个WCF程序

  1. 新建立空白解决方案,并在解决方案中新建项目,项目类型为:WCF服务应用程序。建立完成后如下图所示:

wcf

  2.删除系统生成的两个文件IService1.cs与Service1.svc。

  3.添加自定义的WCF【服务文件】User.svc,此时vs2010会自动生成WCF接口文件IUser.cs,我们在IUser中定义WCF方法ShowName,在User.svc.cs对该接口的方法进行实现。

代码如下:

 1 using System.ServiceModel;  2 
 3 namespace WCFService  4 {  5  [ServiceContract]  6     public interface IUser  7  {  8  [OperationContract]  9         string ShowName(string name); 10  } 11 } 12 
13 
14 namespace WCFService 15 { 16     public class User : IUser 17  { 18         public string ShowName(string name) 19  { 20             string wcfName = string.Format("WCF服务,显示姓名:{0}", name); 21             return wcfName; 22  } 23  } 24 }

  大家可以看到,在WCF中的接口与普通接口的区别只在于两个上下文,其他的和我们正常学习的接口一样。定义这个上下文要添加System.ServiceModel的引用。

[ServiceContract],来说明接口是一个WCF的接口,如果不加的话,将不能被外部调用。

[OperationContract],来说明该方法是一个WCF接口的方法,不加的话同上。 

此时我们的第一个WCF服务程序就建立好了,将User.svc“设为起始页”,然后F5运行一下试试,如下图所示,VS2010自动调用了WCF的客户端测试工具以便我们测试程序:

无废话WCF入门教程一[什么是WCF]

  我们双击上图中的 ShowName() 方法,出现如下图:

无废话WCF入门教程一[什么是WCF]

  在请求窗口中的值中输入参数“你的姓名”,然后点击“调用”,在响应窗口中会出现返回值“WCF服务,显示姓名:你的姓名”,说明测试成功,点击下面的XML也可以看到XML的数据传输。我们现在建立好了服务的应用程序和业务逻辑,即非常简单的打印姓名的方法,测试也成功了。那么我们怎么用呢?

四、场景

  我们设计的场景是在生产中经常应用的场景,把WCF程序寄宿在IIS之上。假设场景如下:A服务器和B服务器。我们把我们刚刚建立的WCF程序“部署”在B服务器上(本教程的A,B服务器都放是我自己的一台机器),我们的目标是在A服务器的应用程序来访问B服务器的WCF程序,实现服务器端的应用程序通讯。

五、将WCF程序寄宿在B服务器的IIS之上

  首先我们将WCF应用程序发布一下,然后部署在B服务器的IIS之上,如下图所示:

 

无废话WCF入门教程一[什么是WCF]

  鼠标右键浏览Uesr.svc,在游览器中出现如下图所示,说明服务部署成功。

无废话WCF入门教程一[什么是WCF]

   上图中的http://localhost/User.svc?wsdl即为我们要引用的服务地址。

六、在客户端[A服务器]创建服务的引用

  我们这里以Web应用程序为例,建立地物理地址为本机,但是大家可以想像成B服务器是远程计算机,localhost为一个其他的IP地址。

  新建解决方案,并且创建ASP.NET Web应用程序的项目。命名为:WCFClient,如下图所示:

 

无废话WCF入门教程一[什么是WCF]

  (1)新建Asp.net页面,命名为:WcfTest.aspx。

  (2)添加在第五步中部署的服务的引用。如下图所示:

wcf

  此时弹出添加服务引用的窗体,如下图所示:

无废话WCF入门教程一[什么是WCF]

  我们在地址里写上我们寄宿在IIS上的WCF服务的地址服务路径,此处为:http://localhost/User.svc?wsdl,在名称空间处填写WCFService[此名称空间要在下面的客户端中引用]然后点击“前往”–>“确定”按钮。此时我们完成了对服务的引用。我们再次查看解决方案,里面多了Service References的文件夹,通过资源管理器打开后里面多了些文件,这些文件用于客户端向服务端的调用,现在先不用管他。

 、使用WCF服务端的方法

  WcfTest.aspx的代码如下:

 1 <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="WCFTest.aspx.cs" Inherits="WCFClient.WCFTest" %>
 2 
 3 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 4 <html xmlns="http://www.w3.org/1999/xhtml">
 5 <head runat="server">
 6     <title></title>
 7 </head>
 8 <body>
 9     <form id="form1" runat="server">
10     <asp:TextBox ID="txtName" runat="server"></asp:TextBox><br />
11     <asp:Button ID="btnSubmit" runat="server" Text="测试WCF服务" OnClick="btnClick" />
12     </form>
13 </body>
14 </html>
15 
16 using System; 17 using System.Collections.Generic; 18 using System.Linq; 19 using System.Web; 20 using System.Web.UI; 21 using System.Web.UI.WebControls; 22 
23 //引用WCF服务的名称空间
24 using WCFClient.WCFService; 25 
26 namespace WCFClient 27 { 28     public partial class WCFTest : System.Web.UI.Page 29  { 30         protected void Page_Load(object sender, EventArgs e) 31  { 32 
33  } 34 
35         protected void btnClick(object sender, EventArgs e) 36  { 37             UserClient user = new UserClient(); 38             string result = user.ShowName(this.txtName.Text); 39  Response.Write(result); 40  } 41  } 42 }

  上面中的UserClient类是在添加引用的时候生成的服务端User类的客户端代理类,一般客户端代理类名称都会是**Client。我们运行一下看下效果。

无废话WCF入门教程一[什么是WCF]

  通过以上的例子,我们完成了由A服务器的应用向B服务器中WCF提供的方法的调用。这个例子比较简单,对于经常开发B/S结构应用程序的同学们来说比较好理解。

八、说明:因为网上的入门教程比较少,本教程只做入门,后面会继续讲些其他入门的东西,深入的请看园子里:Artech 大哥的文章。

九、代码下载:

  10 WCF 教程

十、版权

  转载请注明出处:无废话WCF入门教程一[什么是WCF]

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://yundeesoft.com/31380.html

(0)
老牧童老牧童
0

相关推荐

  • NAS部署PDF全能工具Stirling-PDF(五星推荐) 2024-10-06
  • Java 8系列之重构和定制收集器 2024-05-04
  • 视觉设计中五感的运用!视觉、听觉、嗅觉、味觉和触觉! 2024-04-27
  • C++ greater/less 和建堆 2024-02-12
  • PCB设计铜铂厚度、线宽和电流关系 2023-12-12
  • 漫谈操作系统现状:波澜不惊的应用环境与风起云涌的技术狂潮 2024-06-18
  • 计算机存储单位换算关系_K M G「建议收藏」 2023-09-27
  • 稀世奇缘 2023-11-30

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注

头牌

默认边栏

  • 机器学习之朴素贝叶斯分类算法[亲测有效]

    机器学习之朴素贝叶斯分类算法[亲测有效]

    2023-04-12

  • 【整理】前端图表框架[通俗易懂]

    【整理】前端图表框架[通俗易懂]

    2023-06-28

  • 100项PPT制作技术[通俗易懂]

    100项PPT制作技术[通俗易懂]

    2023-04-09

  • C语言、B语言、D语言?这些编程语言都是怎么发展演变出来的?

    C语言、B语言、D语言?这些编程语言都是怎么发展演变出来的?

    2022-12-13

  • css中关于超出显示省略号

    css中关于超出显示省略号

    2023-10-23

  • Python IDE选择(Pycharm vs VS code,谁更牛!)

    Python IDE选择(Pycharm vs VS code,谁更牛!)

    2022-12-14

  • 等保2.0测评:PostgreSQL数据库「建议收藏」

    等保2.0测评:PostgreSQL数据库「建议收藏」

    2022-12-15

  • ThinkPad T14 Gen3拆机更换升级内存和固态硬盘「建议收藏」

    ThinkPad T14 Gen3拆机更换升级内存和固态硬盘「建议收藏」

    2023-04-25

  • 2023年有效的rtsp,rtmp,hls流媒体测试地址整理汇总「建议收藏」

    2023年有效的rtsp,rtmp,hls流媒体测试地址整理汇总「建议收藏」

    2023-07-16

  • 【利器篇】前端40+精选VSCode插件,总有几个你未拥有!「终于解决」

    【利器篇】前端40+精选VSCode插件,总有几个你未拥有!「终于解决」

    2023-02-08

  • Source Insight 4.0 序列号 license文件

    Source Insight 4.0 序列号 license文件

    2022-11-23

  • GoView 开源,一个好用的 Vue3 低代码开发数据大屏系统

    GoView 开源,一个好用的 Vue3 低代码开发数据大屏系统

    2022-12-08

  • 推特忘记用户名的方法

    推特忘记用户名的方法

    2023-10-23

  • 推荐18个适合接私活的优秀开源项目

    推荐18个适合接私活的优秀开源项目

    2022-12-08

  • 应用之星,让App开发更简单「建议收藏」

    应用之星,让App开发更简单「建议收藏」

    2023-02-18

  • python环境搭建和pycharm的安装配置及汉化(零基础小白版)[通俗易懂]

    python环境搭建和pycharm的安装配置及汉化(零基础小白版)[通俗易懂]

    2023-01-05

  • 雷蛇鼠标 雷云3 驱动无法启动 Razer Syncapse 3 Failed to start「建议收藏」

    雷蛇鼠标 雷云3 驱动无法启动 Razer Syncapse 3 Failed to start「建议收藏」

    2023-07-23

  • JSQLParser学习[通俗易懂]

    JSQLParser学习[通俗易懂]

    2023-01-05

  • SpringBoot集成ActiveMQ[通俗易懂]

    SpringBoot集成ActiveMQ[通俗易懂]

    2023-01-03

  • 计算机网络知识汇总(超详细整理)「建议收藏」

    计算机网络知识汇总(超详细整理)「建议收藏」

    2023-01-05

关注微信

玻璃钢生产厂家泡沫雕塑喷涂玻璃钢玻璃钢人像雕塑平台电话多少海南玻璃钢金属雕塑图片平南玻璃钢泡沫雕塑厂家潮州玻璃钢雕塑有哪些天津景区玻璃钢雕塑哪家便宜甘南人物玻璃钢雕塑价格长春玻璃钢雕塑设计公司四川玻璃钢雕塑价格山东玻璃钢雕塑招聘玻璃钢蜜蜂雕塑呈贡玻璃钢雕塑制作设计哪里有卖泸州玻璃钢花盆花器吉林仿铜玻璃钢雕塑佛山玻璃钢蜗牛雕塑郴州玻璃钢雕塑厂家广东户外商场美陈市场价潮州玻璃钢人物浮雕雕塑壁画嘉鱼玻璃钢雕塑无极玻璃钢花盆好吗福州玻璃钢海豚雕塑定制河北曲阳玻璃钢雕塑厂家玻璃钢孔子雕塑哪里有苏州商场玻璃钢花盆北票玻璃钢仿铜人物雕塑河南常见商场美陈生产厂家通盛玻璃钢雕塑四川特色商场美陈销售企业玻璃钢球雕塑图片绍兴节日商场美陈香港通过《维护国家安全条例》两大学生合买彩票中奖一人不认账让美丽中国“从细节出发”19岁小伙救下5人后溺亡 多方发声单亲妈妈陷入热恋 14岁儿子报警汪小菲曝离婚始末遭遇山火的松茸之乡雅江山火三名扑火人员牺牲系谣言何赛飞追着代拍打萧美琴窜访捷克 外交部回应卫健委通报少年有偿捐血浆16次猝死手机成瘾是影响睡眠质量重要因素高校汽车撞人致3死16伤 司机系学生315晚会后胖东来又人满为患了小米汽车超级工厂正式揭幕中国拥有亿元资产的家庭达13.3万户周杰伦一审败诉网易男孩8年未见母亲被告知被遗忘许家印被限制高消费饲养员用铁锨驱打大熊猫被辞退男子被猫抓伤后确诊“猫抓病”特朗普无法缴纳4.54亿美元罚金倪萍分享减重40斤方法联合利华开始重组张家界的山上“长”满了韩国人?张立群任西安交通大学校长杨倩无缘巴黎奥运“重生之我在北大当嫡校长”黑马情侣提车了专访95后高颜值猪保姆考生莫言也上北大硕士复试名单了网友洛杉矶偶遇贾玲专家建议不必谈骨泥色变沉迷短剧的人就像掉进了杀猪盘奥巴马现身唐宁街 黑色着装引猜测七年后宇文玥被薅头发捞上岸事业单位女子向同事水杯投不明物质凯特王妃现身!外出购物视频曝光河南驻马店通报西平中学跳楼事件王树国卸任西安交大校长 师生送别恒大被罚41.75亿到底怎么缴男子被流浪猫绊倒 投喂者赔24万房客欠租失踪 房东直发愁西双版纳热带植物园回应蜉蝣大爆发钱人豪晒法院裁定实锤抄袭外国人感慨凌晨的中国很安全胖东来员工每周单休无小长假白宫:哈马斯三号人物被杀测试车高速逃费 小米:已补缴老人退休金被冒领16年 金额超20万

玻璃钢生产厂家 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化