基于WCF技术框架的在线考试系统设计

来源 :电脑知识与技术 | 被引量 : 0次 | 上传用户:zhiyuanboxue
下载到本地 , 更方便阅读
声明 : 本文档内容版权归属内容提供方 , 如果您对本文有版权争议 , 可与客服联系进行内容授权或下架
论文部分内容阅读
  摘要:WCF是由微软公司开發的一系列数据通信的应用程序框架,它是对Web Service的扩展,是独立与IIS的应用程序,支持HTTP、TCP等多种协议。在线考试系统是一个客户端与服务器的WCF程序系统,服务器与客户端通过SOAP协议进行交互,服务器是控制台应用程序,启动后会监听客户网址,客户端是一个WPF的窗体程序,启动后输入用户名与密码,根据用户权限功能实施操作。
  关键词:WCF框架;WPF窗体;SOAP协议
  中图分类号:TP393 文献标识码:A 文章编号:1009-3044(2018)28-0056-02
  1 系统整体架构
  考试系统服务器端采用三层框架 WCF服务模式,创建NetTestModel实体类,构造数据类型,创建NetTestDAL数据访问层,完成数据库连接与操作处理,创建NetTestBLL业务逻辑层,编写业务逻辑函数接口,创建NetTestServer类提供WCF服务,客户端调用WCF接口函数实现相关功能,系统架构如图1所示。
  2 功能模块
  根据课程在线考核要求,系统采用C/S模式,通过WCF技术架设在线考试服务器,接受客户端请求进行在线考试。考生登录系统后,系统随机生成一套考卷,在规定时间内对考卷进行作答,提交后系统自动评分(若在规定时间内考生未手动提交,系统完成自动提交)。系统主要分为后台教师和前台考生两种用户权限,教师访问需要实现的功能有:1)课程管理;2)题库管理(试题类型、题干及参考答案);3)考生管理;4)考卷生成规则管理;5)考核成绩管理。考生访问需要实现功能有:1)考核课程选择;2)随机生成考卷;3)答题与提交功能。
  3 WCF服务器程序
  建立一个WCF服务,在解决方案资源管理器中生成NetTestService.cs文件和一个INetTestService.cs文件,打开INetTestService.cs文件,我们可以定义一个INetTestService的接口,接口如下:
  [ServiceContract]
  public interface INetTestService
  { [OperationContract]
  string login(UserClass user); // 用户登录
  [OperationContract]
  TestClassaddTest(TestClasstset); //试题增加
  [OperationContract]
  DataTablegetTestDataTable(); // 获取试题
  [OperationContract]
  bool deleteTest(TestClass test); // 删除试题
  [OperationContract]
  void updateTest(TestClass test);//更新试题
  }
  接口有一个[ServiceContract]的属性,表示该接口是用于公开服务的接口,类似Web Service中的[WebMethod]属性,接口中带有[OperationContract]属性的函数表示公开的服务函数。对应地在NetTestService.cs的类中实现接口函数。
  public class NetTestService : INetTestService
  {
  public string login(UserClass user)
  {
  UserManager manager = new UserManager();
  returnmanager.login(user);
  }
  … //其他函数略
  }
  设计控制台程序,在Program.cs中设计程序如下:
  class Program
  {
  static void Main(string[] args)
  {
  try
  {
  stringurl = "http://localhost:8889/NetTestService/";
  ServiceHost host = new ServiceHost(typeof(NetTestService), new Uri(url));
  host.Open();
  Console.WriteLine(url "正在监听……");
  }
  catch (Exception exp)
  {
  Console.WriteLine(exp.Message);
  }
  Console.ReadKey();
  }
  }
  “http://localhost:8889/NetTestService/”是服务器地址,8889端口号是自定义的,host是一个ServiceHost对象,这个对象就是服务器启动用的重要对象,建立它时调用ServeiceHost的构造函数,函数的第一个参数是WCF服务的类名称,第二个参数是服务器的Uri地址对象。host调用Open方法就使得服务器开始工作了,服务器端就开始监听客户端了。
  4 客户端程序
  新建一个WPF的窗体项目,执行“添加服务引用”菜单命令,弹出“添加服务应用”对话框,输入服务器地址http://192.168.18.162:8889/NetTestService/,然后单击“转到”按钮,结果可以看到“服务”中出现了NetTestService服务,在“操作”框中出现接口函数,将其命名空间定义为“TestWCF”。客户端发现服务器的服务后会自动生成一个代理,在解决方案资源管理器中就可以看到一个名称为Service References的服务。   客户端程序的核心就是建立一個客户端去异步调用接口函数,实现用户操作功能,以用户登录功能为例,简要代码结构如下:
  public partial class MainWindow : Window
  {//建立client对象
  TestWCF.NetTestServiceClient client = new TestWCF.NetTestServiceClient();
  stringurl = "http://192.168.18.162:8889/NetTestService/";
  publicMainWindow()
  {
  InitializeComponent();
  //设置异步调用
  client.loginCompleted = client_loginCompleted;
  //设置访问的服务器地址
  client.Endpoint.Address = new System.ServiceModel.EndpointAddress(new Uri(url, UriKind.Absolute));
  }
  voidclient_loginCompleted(object sender, TestWCF.loginCompletedEventArgs e)
  {
  if (e.Error == null)
  {
  if (e.Result.Equals("logined"))
  {
  Get_Info.User = this.txtUser.Text;
  Get_Info.Pass = this.txtPass.Password;
  Option a = new Option();
  a.Show();
  this.Close();
  }
  else if (e.Result.Equals("registered"))
  {
  MessageBox.Show("注册成功!请重新登录");
  }
  else
  {
  MessageBox.Show("非法用户");
  }
  }
  else
  MessageBox.Show(e.Error.Message);
  }
  private void btLogin_Click(object sender, RoutedEventArgs e)
  {
  stringuName = txtUser.Text.Trim();
  stringuPass = txtPass.Password.Trim();
  try
  { //异步调用login函数
  client.loginAsync(new TestWCF.UserClass { uName = uName, uPass = uPass });
  }
  catch (Exception exp) { MessageBox.Show(exp.Message); }
  }
  }
  }
  程序首先通过TestWCF命名空间的TestWCF.NetTestServiceClient建立一个client对象,然后调用设置login的异步调用返回函数client_loginCompleted,设置client访问的服务器地址后,在btLogin_Click中直接调用loginAsync函数。运行服务器程序使其处于监听状态,运行客户端程序就可以实现相应功能。
  5 结束语
  考试系统使用WCF技术,功能代码在服务器端编码完成,开发人员只要把功能模块统一发布为WCF,然后绑定不同的Endpoint进行发布,无需再考虑Model,BLL,DAL等复杂的逻辑转换,就可以将B/S与C/S结构模式的业务逻辑层真正地融合在一起,从而降低客户端编码复杂度,同时提高系统功能更新与维护效率。使用WCF实现SOA,可以对事务、安全、编码等进行统一管理,协调了各服务器之间的系统操作。
  参考文献:
  [1] 马勇超,金亚萍,张胜,等.基于WCF架构的OPC客户端技术在物流系统中的应用[J].物流技术与应用,2017,22(3):126-128.
  [2] 申华.一种基于WCF技术的远程数据共享的实现[J].电脑编程技巧与维护,2017(11):67-68,82.
  [3] 唐亮,陈向阳,郑烽.基于WCF技术的分布式任务处理框架的设计[J].电子技术与软件工程,2017(1):55-56.
  [4] 纪洲鹏,赵斐斐.WCF技术在.NET多层架构开发中的应用[J].软件导刊,2016,15(1):118-120.
  【通联编辑:朱宝贵】
其他文献
一、傣族的香竹饭    香竹饭是傣族人民接待外来客人的佳品。香竹饭制作简单,用香竹断成节,将优质糯米盛入竹筒浸泡半小时左右,用芝麻叶或糯米香叶塞住竹筒口,放入火塘烘烤,等到香竹冒气,竹筒表面呈黑黄色时,用刀或棍捣,将第一层竹皮剥掉,再剥掉竹瓤,便可以品尝又软又香、别有风味的香竹饭了。    二、哈尼族的卵石烧汤    将已煮好的肉汤、菜汤上桌后,在汤碗加少许新鲜菜或佐料,投入已在火塘内烧得发红的卵
摘要:在目前日渐复杂严峻的社会治安形势和科技强警战略的大背景下,通过现代化的信息技术来帮助公安机关开展各项工作,这是目前公安信息化工作的发展趋势。然而,通过调研发现公安信息系统存在着问题,集中表现在数据资源一致性、准确性、实时性较差和信息孤岛的问题。为了解决这些问题,建立起基于数据仓库技术的公安综合信息平台,将海量信息资源进行科学有效的资源整合、信息处理以及共享关联,以此提供给各级公安机关使用,已
威化纸,俗称糯米纸,是食品加工中的一种可食用纸,具有色泽洁白透亮,入口即化等特点。用威化纸加工成的菜品一般具有滋润细嫩的质感,常将原料加工成片、丝、粒、泥等形状后包裹炸制而成。馅料以咸鲜为主,醇厚鲜美。操作时要掌握好馅料的稀稠度和细嫩度。下面介绍几款威化纸制作的佳肴。    一、威化糍粑鸡  原料:鸡脯肉300g,威化纸20张,胡萝卜30g,苹果30g,鸡蛋100g,料酒10g,盐5g,味精2g,
摘要:针对当前高级Office应用课程在教学内容与教学方法方面存在的不适合应用型人才培养的问题,提出基于“主题专讲”教学模式的教学改革思路,改变以往教学中存在的以应试教育为主的目标导向,强调以培养创新应用能力为导向的教学部署。课堂内容以贴近学生日常需求与企业需求的主题进行编排,以解决问题的思路为线索串联知识点的讲解,设置相应的主题式实践内容,并注重提供学生课下的学习资源,同时通过改革应试式课程考核