热门标签 | HotTags
当前位置:  开发笔记 > 运维 > 正文

C#WCF简单入门图文教程(VS2010版)

这篇文章主要介绍了WCF简单入门图文教程,版本是VS2010版,帮助大家轻松学习了解DataContract、ServiceContract等特性,感兴趣的小伙伴们可以参考一下

在这个例子中我们将使用VS2010创建一个WCF服务,其中会了解[DataContract][ServiceContract]等特性。

内置的WCFSVCHost,并使用“WCF测试客户端”来测试我们创建的服务。

注意下面的所有类、接口及方法都添加了public的访问级别。

一、建立一个WCF服务库

创建一个WCF服务库项目

在解决方案中会自动为我们生成两个类文件“IService1.cs”和“Service1.cs”。

这两个类文件是两个WCF示例文件,对我们开发没有什么用处,现在我们删掉这两个文件。

然后添加Student类

创建服务接口,声明对外发布的类和方法。

实现我们上面声明的服务接口,实现对Student的添加、删除和检索的具体功能。

写完后记得编译

二、配置服务运行

到目前为至,我们建立好了WCF服务,那我们如何让WCFSVCHost(WCF服务主机)理解我们编写的服务类,并能够运行我们编写的服务呢。这需要我们在App.Config里面注册一下我们的WCF服务。

VS为我们提供了可视化的操作界面。
在HelloWCF项目中右击“App.Config”配置文件,在弹出的右键菜单中选择“编辑WCF配置”。

如图:

在此界面中暴露两个对外的终结点(外部可以访问到的类或接口),其中下面一个是元数据终结点,用来向外提供服务信息的终结点。

而另一个(即上面的终结点),是向外公布我们编写的[ServiceContract]的类,但我们可以看到它的Contract还是我们在第一步中删掉的HelloWCF.IService1这个终结点。

不仅如此,在右侧上面的黑字的服务中还依旧是我们在第一步中删除的WcfServiceLibrary1.Service1服务。这说明虽然在第一步中我们删除了那两个自动生成的类文件,但配置文件中仍没有删除这两个类文件的配置信息。

下面我们把它们改变一下。

单击左侧的“服务”-“HelloWCF.Service1”在右侧的Name,弹出“服务类型浏览器”对话框,在此类型中我们找到此WCF服务项目编译出来的HelloWCF.dll文件,双击它就可以出现此服务中的对外公布的服务,点击选中它单击确定。

这样我们就可以把对外公司的服务改变为我们刚编写的服务了。
然后,我们展开左侧“服务”->“HelloWCF.StudentService”->“终结点”,单击第一个“空名称”,从右边的“终结点属性”中的Contract中我们可以看到,这里的Contract仍然用的是HelloWCF.IService1。

我们按照上面的做法,找到此WCF服务项目编译出来的HelloWCF.dll,双击它找到里面对应的ServiceContract点击确定就可以了。

在高级目录树中,为服务行为配置命名,名字随便取。

在服务中选中,刚才的行为配置。

配置完成,Ctrl+S 保存下。

配置后的App.Config

三、测试WCF

在VisualStudio中为我们提供了测试WCF的工具,按F5启动WCF会出现两个东西
一个是在右下角的托盘图标中会出现WCFSVCHost(WCF服务主机),它为我们在开发时候提供了一个运行WCF的服务器,用来为测试客户端提供WCF服务。

另一个是“WCF测试客户端”

“测试客户端”从WcfSVCHost中取得WCF服务的元数据,解析为左侧的“服务结构树”,从这里面我们可以看到此WCF服务为我们提供了一个服务契约“IStudentService”,此服务契约中对外提供了三个可调用的方法。

点击AddStudent()方法输入参数点击调用

点击GetAllStudents(),在Response中我们看到了返回的结果。

在本例中我们看到,WCF作为面向对象和面向服务的桥梁,提供了非常方便的工具,无论是开发,配置还是测试,为我们可以快速的上手并提供面向服务的应用。你可以把WCF类库当作普通类库去做,但他提供了更强大的面向服务的特性。

WCF的理论学习复杂程度远大于其的使用难度,而如果你是一名初学者,千万不要先陷入其复杂的理论学习中,花费很多的时间,而且看得晕头转向,最好先去实践,先去用,这样再去看WCF的深入概念和技术才会在大脑里面形成更好理解的印象和对应,你认为呢。

以上就是WCF简单入门教程,希望对大家的学习有所帮助。


推荐阅读
  • 本文探讨了如何优化和正确配置Kafka Streams应用程序以确保准确的状态存储查询。通过调整配置参数和代码逻辑,可以有效解决数据不一致的问题。 ... [详细]
  • 解决MongoDB Compass远程连接问题
    本文记录了在使用阿里云服务器部署MongoDB后,通过MongoDB Compass进行远程连接时遇到的问题及解决方案。详细介绍了从防火墙配置到安全组设置的各个步骤,帮助读者顺利解决问题。 ... [详细]
  • 近期遇到电脑网络不稳定和游戏时频繁重启的问题,寻求专业建议。网络环境为ADSL调制解调器通过路由器共享给两台电脑使用,怀疑存在ARP攻击或硬件配置问题。希望获得详细的故障排查和解决方案。 ... [详细]
  • 网络运维工程师负责确保企业IT基础设施的稳定运行,保障业务连续性和数据安全。他们需要具备多种技能,包括搭建和维护网络环境、监控系统性能、处理突发事件等。本文将探讨网络运维工程师的职业前景及其平均薪酬水平。 ... [详细]
  • 使用Python在SAE上开发新浪微博应用的初步探索
    最近重新审视了新浪云平台(SAE)提供的服务,发现其已支持Python开发。本文将详细介绍如何利用Django框架构建一个简单的新浪微博应用,并分享开发过程中的关键步骤。 ... [详细]
  • 从零开始构建完整手机站:Vue CLI 3 实战指南(第一部分)
    本系列教程将引导您使用 Vue CLI 3 构建一个功能齐全的移动应用。我们将深入探讨项目中涉及的每一个知识点,并确保这些内容与实际工作中的需求紧密结合。 ... [详细]
  • MySQL 数据库迁移指南:从本地到远程及磁盘间迁移
    本文详细介绍了如何在不同场景下进行 MySQL 数据库的迁移,包括从一个硬盘迁移到另一个硬盘、从一台计算机迁移到另一台计算机,以及解决迁移过程中可能遇到的问题。 ... [详细]
  • PHP 5.5.0rc1 发布:深入解析 Zend OPcache
    2013年5月9日,PHP官方发布了PHP 5.5.0rc1和PHP 5.4.15正式版,这两个版本均支持64位环境。本文将详细介绍Zend OPcache的功能及其在Windows环境下的配置与测试。 ... [详细]
  • 百度服务再次遭遇技术问题,疑似DNS解析故障
    近日晚间,百度多项在线服务出现加载异常,包括移动端搜索在内的多个功能受到影响。初步迹象表明,问题可能与DNS服务器解析有关。 ... [详细]
  • 本文详细介绍了《问道》手游在2020年12月31日进行的服务器维护情况,以及此次更新中新增的跨年狂欢活动和寒假活动等内容。同时,文章还涵盖了其他重要的系统优化与修复信息。 ... [详细]
  • 本文介绍如何在Linux服务器之间使用SCP命令进行文件传输。SCP(Secure Copy Protocol)是一种基于SSH的安全文件传输协议,支持从远程机器复制文件到本地服务器或反之。示例包括从192.168.45.147复制tomcat目录到本地/home路径。 ... [详细]
  • 通过与阿里云的合作,牛客网成功解决了跨国视频面试中的网络卡顿问题,为求职者和面试官提供了更加流畅的沟通体验。 ... [详细]
  • 台式电脑的电力消耗:待机一天耗电多少?
    探讨台式电脑的电力消耗问题,特别是待机状态下的能耗。本文将详细介绍影响电脑功耗的因素,并提供计算和优化电源配置的方法。 ... [详细]
  • 本文详细介绍了 MySQL 中 LAST_INSERT_ID() 函数的使用方法及其工作原理,包括如何获取最后一个插入记录的自增 ID、多行插入时的行为以及在不同客户端环境下的表现。 ... [详细]
  • 深入探讨CPU虚拟化与KVM内存管理
    本文详细介绍了现代服务器架构中的CPU虚拟化技术,包括SMP、NUMA和MPP三种多处理器结构,并深入探讨了KVM的内存虚拟化机制。通过对比不同架构的特点和应用场景,帮助读者理解如何选择最适合的架构以优化性能。 ... [详细]
author-avatar
博士吃货
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有