WCF实验报告.docx
- 文档编号:2455422
- 上传时间:2022-10-29
- 格式:DOCX
- 页数:17
- 大小:519KB
WCF实验报告.docx
《WCF实验报告.docx》由会员分享,可在线阅读,更多相关《WCF实验报告.docx(17页珍藏版)》请在冰豆网上搜索。
WCF实验报告
成都理工大学管理科学学院
教学实验报告
班级:
__
学号:
__
姓名:
__
专业:
__
指导教师:
__
实验日期:
__
管理科学学院管理综合实验室
二○一二年十二月二十七日
实验目的
主要填写对实验的目的和要求
实验一:
建立了一个控制台程序和一个ASP.NET网站,一个实现对数据DATABASE的连接、对TABLE的查询、修改、删除的方法并将其封装的功能;另一个实现通过对该类库的方法的调用,实现数据表的前台显示,以及修改数据库表的功能。
实验二:
将实验一的两个部分分解为三个——WCF、服务器和客户端,WCF里有服务类型(引用服务契约,并编写方法)和服务契约(定义服务契约和操作契约),服务器通过SERVICEHOST实现对客户端对WCF方法的调用,而客户端则只用引用相应的服务再调用方法即可。
运用IIS托管和Windows托管对以上进行托管。
实验三:
将实验二进行异步化操作,使用回调版本异步调用和事件驱动版本异步调用。
实验内容
主要填写实验主要完成的内容
实验一:
1、熟悉VS.NET2010开发环境,SQLServer2008(2005)数据库系统;
2、在数据库系统中创建一个新的DATABASE和一个TABLE(内容自拟);
3、在VS.NET中创建一个C#类库项目,里面实现对DATABASE的连接、对TABLE的查询、修改、删除的方法;
4、建立一个数据库应用程序,通过对该类库的方法的调用,实现数据表的前台显示,以及修改数据库表;
5、用.NET配置工具建立应用程序配置文件,尝试程序集的版本控制和改变程序集的部署位置;
6、把该类库发布为一个共享程序集;
7、用ILDASM工具查看程序集的信息。
实验二:
1、修改实验一完成的数据库访问类库为WCF服务契约类库。
2、构建远程服务器端程序。
分别用TCP绑定和HTTP绑定构建业务终结点。
服务程序端口为:
HTTP绑定端口10086,TCP绑定端口10087;
3、修改实验一的数据库访问程序为客户端程序;
4、用配置文件实现服务器和客户端设定;
5、服务器程序、客户端程序分别部署在不同的机器上,实验远程数据库访问;
6、用IIS实现服务托管;
7、用Windows服务实现服务托管。
实验三:
1、客户端在添加服务引用时生成WCF操作契约的异步版本。
2、客户端用回调函数实现异步调用;
3、客户端用*Completed事件方式实现异步调用。
实验过程及分析
实验一:
新建数据库和表格
建立C#类库项目和数据库应用程序
然后添加代码如下
运行MYWEB后,效果如下
点击链接
修改劳斯莱斯年龄为45,删除奇瑞,添加路虎,结果如下
实验一成功
实验二:
新建一个WCF类库项目
定义服务契约接口类
定义服务类,从契约接口类派生,并实现接口类中定义的方法。
其余代码与实验一中C#类库文件一样
建立服务器
新建一个控制台项目引用System.ServiceModel.dll类库,引用WCF服务类库
创建ServicHost对象(服务器对象)
终结点服务运行
调用ServiceHost对象的Open()方法
建立客户端(新建ASP.NET网站项目)
引用System.ServiceModel.dll类库,引用WCF服务类库(MYWCF)
代码与实验一前台代码类似
运行服务器
向客户端添加服务引用
运行客户端
点击链接
执行修改,删除和添加后
服务器输出如下
IIS托管
VisualStudio中“新建网站—WCF服务”
删除APP_CODE目录下文件
修改SVC文件如下
在web.config中添加WCF服务发布配置。
配置内容和自托管配置文件一样(注意:
不用指定服务地址)
在IIS中创建虚拟目录,指向SVC文件所在文件夹,将其转换为应用程序
在IIS中浏览SVC文件
确认网站启动后,删除客户端旧的服务引用,重新添加(地址用SVC文件打开后的地址)
运行客户端,依然可以运行
Winodws托管
VisualStudio中“新建Windows服务”
项目中引用System.ServiceModel和编译后的WCF类库
重写OnStart和OnStop方法,在OnStart方法中用ServiceHost对象开启WCF服务
Service.cs
Program.cs中修改相应参数
添加WCF服务配置文件(添加实验二中原始服务器的配置文件)
项目中添加ServiceProcessInstaller对象并设置属性
用执行Installutil对服务进行安装
右键单击计算机,选择管理,在服务与应用程序中点开服务,找到安装的Service1,启动
删除客户端中的服务引用,添加服务引用地址使用http:
//localhost:
10086
运行客户端成功(截图略)
实验三:
1、在VS2010中我新建了一个名为“test3WCF异步调用客户端程序”作为异步调用的客户端。
服务器端同实验二的服务器。
在该客户端中添加服务引用,并在“高级选项”中勾选“生成异步操作”选项。
2、在该客户端中通过“Begin*()”和“End*()”实现回调函数版本异步调用的发起异步调用和获得异步调用结果。
3、在该客户端中通过“*Async()方法”进行事件驱动版本的异步调用。
在客户端中添加*Completed事件和*Completed事件处理程序,实现服务器完成计算的时候触发*Completed事件,客户端事件处理程序中获得结果。
4、通过消息队列实现显示异步调用的触发时间和服务器执行的时间。
5、客户端添加服务引用地址截图,服务器配置文件同实验二的服务器中的配置文件。
6、添加服务引用界面的“高级选项”按钮,勾选“生成异步操作”选项。
只运行服务器
运行客户端
第一次点击“回调版本”的服务器,设置的睡眠事件为5s。
第一次点击“回调版本”的客户端
第一次点击“事件驱动”按钮的服务器,客户端截图同上
依次分别点击了几次“回调版本”和“事件驱动”按钮之后服务器执行之后、客户端
实验总结
经过这次的实验,总的来说我学到了很多东西,接触到了所谓的WCF,也终于能用编程实现一些有用的操作。
坦白讲,在上这门课的时候我觉得很难,因为以前的C#学习的不太好,所以要学好这门课,就还要回过头去看看关于C#的书籍,不然连很多基本的代码都不知道。
在实验刚开始的时候,简直就是一头雾水,不知道该如何在VS里实现对数据库的操作,因为也不清楚需要使用哪些类,哪些方法。
好不容易可以实现查询和固定的添加删除,但这不符合老师的要求——首先要将方法封装,然后再去调用,并且实现想要删除哪一行就删除哪一行,想要添加什么信息就添加什么信息进去,这样又陷入了迷茫…
还好慢慢的,通过在网上查资料和询问那些编程比较有心得的同学,开始了真正的WCF编程。
在实验一中我学到了不少的东西,我学习到了如何对方法进行封装以及如何去调用其他名称空间的方法、如何使用SQLCONNECTION等进行数据库操作的方法、使用相关控件如gridview、botton和textbox的方法。
在实验二中学到了分布式编程的思想,知道了WCF是如何运行的,了解了IIS托管和Windows托管的方法。
在实验三中也大概明白了异步调用的基本思想。
其实这次实验是我上大学以来最辛苦的一次,下面总结了一些我认为需要注意的地方:
实验一:
1、C#类库项目一定要引用System.Data和System.Data.SqlClient才能使用与SQL相关的类和方法
2、使用SqlConnection进行数据库连接,使用DataSet进行表的查询,使用sqlcommand进行数据的添加和删除(需要定义字符串a方便实现命令的多元化)
3、注意对方法的使用和封装
4、新建了ASP.NET网站后需要添加组件,如GRIDVIEW、BOTTON和TEXTBOX,并对GRIDVIEW进行数据的绑定
5、在GRIDVIEW中可以编辑列从而添加对某一行数据的修改和删除的控件
6、在编写代码前记得引用C#类库方能对其方法进行调用
7、设置主键才能进行索引
8、数据库中的类型为Varchar,而VS中为string,所以在应用程序中调用方法进行修改的时候需要用format进行转换
实验二:
1、首先定义服务契约接口类,IService1用[ServiceContract]标记后还要将你所有要调用的方法用[OperationContract]进行标记
2、记住引用System.ServiceModel.dll类库,引用WCF服务类库
3、配置服务器的配置文件时一定要准确找到WCF中的服务类型和服务契约
4、配置文件一定要配置准确
5、将服务器运行起来之后才能对客户端添加服务引用,否则会出错(点发现会找到一个系统默认为你配置的,但不能用那个)
6、客户端中引用WCF和client.ServiceReference1,并实例化Service1Client即可
7、使用IIS托管:
●安装对相应的IIS组件
●删除WCF服务APP_CODE目录下的文件
●修改Service.svc中的服务名称,将后面的多余内容删掉
●在web.config中添加WCF服务发布配置。
配置内容和自托管配置文件一样(注意:
不用指定服务地址)
●在IIS中创建虚拟目录,指向SVC文件所在文件夹。
●在IIS目录中浏览SVC文件(如不能:
1、将IIS中所有组件都进行安装,尤其是ASP.NET相关的;2、安装framework3.5框架的组件;3、IIS中对应的应用程序池默认为2.0,改为4.0;4、重新安装ASP.NET框架;5、将虚拟目录转为应用程序;6、将对应的应用程序池的使用account换成localsystem)
●将页面的地址复制下来,将原先客户端的服务引用删除,重新引用并用这个地址(注意看IIS的网站是否启动)
●引用成功后即可运行客户端(如果出现权限问题:
打开数据库管理,添加目标用户的权限即可)
8、使用Windows托管:
●停止IIS服务
●重写OnStart和OnStop方法,在OnStart方法中用ServiceHost对象开启WCF服务
●配置文件就用实验二的服务器配置文件即可(自己配置极其容易出错)
●项目中添加ServiceProcessInstaller对象并设置属性(将serviceProcessInstaller1的account设置为localsystem)
●用“Installutil程序名”来安装服务,卸载用“Installutil/u程序名”
●启动服务如果失败,则应该是配置文件有问题,重新配置即可
●启动服务后,再将客户端原有服务引用删除,添加新的服务引用WCF服务地址为服务端配置文件中的地址
实验三:
在异步调用的时候,同时还添加了一个同步调用,使得最后得出的效果总是不对,最后通过老师说了之后再慢慢的修改了一下之后终于把这个问题修改出来了。
指导教师评语及成绩
指导教师签名:
成绩:
年月日
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- WCF 实验 报告