温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
  • 忘记密码?
登录注册×
获取短信验证码
其他方式登录
点击 登录注册 即表示同意 《亿速云用户服务条款》
  • 服务器
  • 数据库
  • 开发技术
  • 网络安全
  • 互联网科技
登 录 注册有礼
最新更新 网站标签 地图导航
产品
  • 首页 > 
  • 教程 > 
  • 开发技术 > 
  • 编程语言 > 
  • WCF入门(一) WCF的基础知识

WCF入门(一) WCF的基础知识

发布时间:2020-06-24 22:09:46 来源:网络 阅读:1089 作者:oversky 栏目: 编程语言

  WCF入门将和大家一起探讨以下内容:

   ①WCF的基础知识,快速创建一个WCF应用程序。

   ②WCF契约

   ③WCF服务部署的实现

   ④WCF的通信模式

   ⑤WCF的调用模式

   

   这一节,我们了解WCF的基础知识。

   

   WCF就是一种面向SOA的技术,是用来构建面向服务的应用程序框架,是微软开发的一组数据通信应用程序开发接口,可以在不同的组件、应用程序、系统之间进行通信。服务和被调用之间是一种松散的关系。服务是被动的,当对服务的请求传入时,服务才会被调用。

   这里有必要说下SOA(Service-Oriented-Architecture)面向服务的架构,主要是为了解决在Internet环境下通过连接完成特定任务的独立功能实体实现业务集成的需求的一种软件系统架构。可以将SOA理解成为一个组件模型,它将应用程序间不同的服务通过服务间定义好的接口和契约将它们组合起来。WCF可以实现多平台、多协议、安全可靠、高效率的系统间的通信,只要这些系统都支持SOAP就能实现互操作。可以说WCF提供了统一的、建立安全、可靠、面向服务的高效开发平台,同时WCF还向后兼容WebService。

   WCF可以看做是.net平台下一组服务的集合,WCF集成了ASMX(Active Server Mehtod)、WSE(Web Services Enhancements)、Remoting、Enterprise Service、MSMQ所有的功能并进行了良好的封装,减轻了开发人员的开发难度和学习成本。开发人员不用在担心安全、跨平台、服务集成、消息传输的多个难题。    

   学习WCF需要具备编程基础,尤其是对接口的理解,其实不仅是WCF,可以说接口是面向对象思想的核心。面向对象的实质可以看做是对现实的抽象,接口正式抽象的体现,CLR对此有深刻的反应,如果熟悉IL代码的人都是interface在编译成IL代码是会被编译成interface [访问修饰符] abstract 这就是为什么在接口不能添加abstract修饰的原因,扯远了。

   我在文中提到了SOAP,SOAP(Sample Ojbect Access Protocol)简单对象访问协议,是交换数据的一种协议规范,是一种轻量的、简单的、基XML的协议,它被设计成在WEB上交换结构化的和固化的信息。说的了XML我想多说几句,XML在.NET平台中应用可以说无处不在如元数据的表示、系统的配置、持久化、数据交换等等,XML具有可阅读性强、定义灵活、储存便捷的特点,但是在现在很多系统中尤其是移动终端开发的数据交换却不喜欢用它,鄙人也是这样,因为XML和另一种具有同种功能的轻量级数据交换格式相比体积庞大的多,有兴趣的可以研究下。

   另外稳重我会还提到了WebService,这个是提供Web服务调用最为人所熟知的技术,能使得运行在不同机器上的不同应用无须借助附加的、专门的第三方软件或硬件, 就可相互交换数据或集成。不限制语言、 平台或内部协议, 都可以相互交换数据只要是支持SOAP就行,但是在安全性方面不是太好,当然这也只是针对安全性需求而言的,对应提供公共服务信息的服务比如天气、新闻等等WebService是再适合不过了。

   最后,要介绍下WCF的通信的模式以WCF应用层的组成,WCF是来实现现实应用中通信的要求,当然它也必须支持三种通信模式,即:

   单工:就是通信只能想一个方向进行的通信模式,比如说广播、卫星等,WCF我们称之为单工模式

   半双工:就是通信可以在两个方向都进行,但是在同一时刻一方只能接收或者发送消息,比如对讲机,当在WCF这个名称有些不一样,我们称它为请求响应模式

   全双工:也即是我们所说的两个方向都能进行传输,并且两个方向都能同时进行传输。在WCF我们称之为异步模式

   WCF有客户端和 服务器,组成,当然则个服务器和客户端是相对的,这个在我们后面的学习中会有所体会。



   了解了WCF有关的基础知识,我们还是来建议一个WCF的应用程序吧。

   使用VS创建一个WCF的应用型如此的简单,让我们对WCF是否感觉到并没什么难度,说实话,入门不难但是要开发出适合企业级应用远非如此,在我所经历的项目中应用WCF满足不了器性能要求,我们最终不得不使用Apache的ActiveMQ来实现我们电文传输,如果有时间我愿意分享这些经验。

   

   第一步,新建一个WCF项目“WcfProgress”

   WCF入门(一) WCF的基础知识WCF入门(一) WCF的基础知识

   添加“WCF应用程序”并取名“WcfProgress”

   WCF入门(一) WCF的基础知识    

   这是我们会看到几个文件IService1.cs,这个名字以及接口可以使用重构修改成你想要的名称,这文件就是我们说说的服务契约,其实接口本身就是一种契约。在契约中添加我们我喜欢实现的方法、属性、数据成员等就指定好了一个契约。我在这里将接口和实现类重新命名了。

   双击接口文件我们可以看到以下内容    

           // 注意: 使用“重构”菜单上的“重命名”命令,可以同时更改代码和配置文件中的接口名“IGetSystemInfo”。

           [ServiceContract]

           publicinterfaceIGetSystemInfo

           {

       

               [OperationContract]

              string GetData(int value);

       

               [OperationContract]

              CompositeType GetDataUsingDataContract(CompositeType composite);

       

               // TODO: 在此添加您的服务操作

           }

       

       

           // 使用下面示例中说明的数据约定将复合类型添加到服务操作。

           [DataContract]

           public class CompositeType

           {

               bool bool Value = true;

               string stringValue = "Hello ";

           

               [DataMember]

               public bool BoolValue

               {

                   get { return boolValue; }

                   set { boolValue = value; }

               }

       

               [DataMember]

               public string StringValue

               {

                   get { return stringValue; }

                   set { stringValue = value; }

               }

           }


   这里需要说明的是,[ServiceContract][OperationContract] [DataContract][DataMember]这些属性标签之所以可以正常使用,得益于System.ServiceModel处理类,所以用手动创建WCF应用类库的时候我们一定不要我拿过来添加对其的应用。ServiceContract:叫做服务契约,表示这个接口是一个服务契约,IDE和编译真是通过他来生成响应服务的。OperationContract说白了就是调用远程方法。DataContract这是对其中中数据的定义。DataMember这是对其契中数据结构中属性的定义。

   

   我在其中添加了一个GetSystemTime的操作契约,那么响应的应该在实现类中添加对操作契约的具体实现。

   [ServiceContract]

   public interface IGetSystemInfo

   {

       [OperationContract]

       string GetData(int value);

       [OperationContract]

       CompositeType GetDataUsingDataContract(CompositeType composite);

     

       [OperationContract]

       string GetSystemTime();

   }


   

   public class GetSystemInfo : IGetSystemInfo

   {

       public string GetData(int value)

       {

           return string.Format("You entered: {0}", value);

       }

           public CompositeType GetDataUsingDataContract(CompositeType composite)

       {

           if (composite == null)

           {

               throw new ArgumentNullException("composite");

           }

               if (composite.BoolValue)

           {

               composite.StringValue += "Suffix";

           }

           return composite;

       }

       public string GetSystemTime()

       {

           return System.DateTime.Now.ToString("yyyy-M-d dddd");

       }

   }


   第二步,我们的服务端程序基本就完成了,接下来我们建立一个客服端来调用它吧。这里我们为了后面演示异步就用Winform程序了。建立一个WcfClient项目。

   

   WCF入门(一) WCF的基础知识

   

   第三步,在客户端添加对服务的引用。    

   WCF入门(一) WCF的基础知识

   WCF入门(一) WCF的基础知识

   注意如果要生成异步操作的话可以点“高级”进入“服务引用设置”勾选“生成异步操作”。

   WCF入门(一) WCF的基础知识

   好了然后在FrmClient的call Server按钮事件中填写如下代码:

   

private void btn_CallGetSysTime_Click(object sender, EventArgs e)

       {

           GetSystemServer.GetSystemInfoClient client = newGetSystemInfoClient();

           MessageBox.Show(client.GetSystemTime());

       }


   现在我们把启动服务,并允许窗体,查看结果。

   首先,后台启动后会打开浏览器并显示服务调用页面的信息,如下图所示:

   

WCF入门(一) WCF的基础知识

客户端则显示如下,至此一个简单的WCF程序就完成了。

WCF入门(一) WCF的基础知识






向AI问一下细节
推荐阅读:
  1. C#面向服务编程技术WCF从入门到实战演练
  2. WCF简单教程(1) 入门

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

wcf (一)
  • 上一篇新闻:
    oracle job的迁移
  • 下一篇新闻:
    阿里宣布开源Weex ,亿级应用匠心打造跨平台移动开发工具

猜你喜欢

  • mybatis separator 如何与动态SQL配合
  • mybatis separator 支持所有数据库吗
  • mybatis separator 有哪些隐藏特性
  • mybatis separator 在批量操作中的表现
  • mybatis separator 可以自定义吗
  • mybatis separator 怎样配置最高效
  • mybatis sqlrunner 有哪些核心功能
  • mybatis sqlrunner 如何简化开发
  • mybatis sqlrunner 支持事务管理吗
  • mybatis sqlrunner 与XML映射比较
最新资讯
  • C#复选框在表单验证中的应用
  • MongoDB在C#中的大对象存储技巧
  • MongoDB在C#中的智能索引建议
  • C#中MongoDB的地理空间查询进阶
  • MongoDB在C#中的异常处理最佳实践
  • MongoDB的C#性能调优策略
  • MongoDB的C#监控API使用
  • MongoDB在C#中的数据一致性保证
  • PHP操作MySQL时如何防止SQL注入
  • MySQL数据库全文索引优化策略
相关推荐
  • WCF如何配置
  • Silverlight WCF是什么
  • WCF数据怎么理解
  • WCF控件怎么用
  • 如何学习WCF
  • 怎么解决WCF端口问题
  • WCF基础有哪些
  • WCF基础知识有哪些
  • WCF是什么
  • WCF如何创建简单应用程序

相关标签

c++ post java 教程 js 实例 jquery ajax config 服务 rest 创建 byte 设计模式 http 计算器 asp.net session 问题集 failed
AI

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

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