本 科 毕 业 设 计(论文)
题 目 多通道设备控制与采集程序——通道,视图,设置模块 系 别 计算机科学与技术 专 业 计算机
学生姓名 班 级 学 号 指导老师
教学服务中心制表 年 月
摘要
摘 要
针对嵌入式设备的控制与数据采集过程,用户很难直接对设备进行操控并且操作过程十分繁杂,所以我设计的目的是在计算机上以图形化界面模拟仪表面板,控制设备的工作过程。不仅能够减轻用户工作负担,更能够提高工作效率,使得用户对于嵌入式设备的操控变得更加的简单,直观。
论文参考了大量的文献探讨了系统的设计思想、开发的关键技术,并具体介绍了包括视图菜单、设置菜单、文件菜单、多通道的设置与操控等多个功能模块的实现。
系统的开发基于MVC架构思想和设计方法,使用visual studio 2005 中的C#来进行开发工作。主要是在计算机上做出控制设备的程序的采集过程中,采用序列化/反序列化技术存取采集的数据,将控制信息构建成控制模型。为用户提供直观的、方便的、个性化的控制界面。
关键词:控制,数据采集,MVC,.NET技术
I
第1章 绪论
II
ABSTRACT
ABSTRACT
To embedding devices control and data acquisition process, users are difficult to control it. And the control process is complex. We designed a computer simulation of a graphical interface instrumentation panels, controlled embedding equipment. Users can not only reduce the burden of work, but also to improve the work efficiency, allowing users to control embedded devices become more simple and intuitive.
A large number of papers refer to the literature in the design systems. This paper introduced key technologies, including menu, set menu, the File menu, multi-channel setup and control function.
System architecture was adopted MVC and.NET ideas and technology. We developed with visual studio 2005 and C#. Mainly in the computer process control equipment to make the collection process, the use of serialization / deserialization of data acquisition technology to access to control information into a control model to build. To provide users with intuitive, convenient and personalized control interface.
Keywords: Control, Data Acquisition,Mvc,.Net technique
III
第1章 绪论
IV
目录
目录
第1章 绪 论 ............................................................. 1 1.1嵌入式系统的现状与发展趋势 ....................................... 1 1.2 开发背景 ......................................................... 2 1.3嵌入式设备用户控制端开发的目的 ................................... 2 1.4嵌入式设备控制与采集程序开发的意义 ............................... 3 1.5 本文研究的内容和目标 ............................................. 3 第2章 技术介绍 .......................................................... 5 2.1.NET简介 ......................................................... 5 2.2 MVC架构 ........................................................ 5 2.3 MVC设计思想 .................................................... 6 第3章 需求分析 .......................................................... 9 3.1可行性分析 ........................................................ 9 3.2需求分析 .......................................................... 9 3.3用例图及用例 ..................................................... 12 第4章 概要设计 ......................................................... 15 4.1项目设计 ......................................................... 15 4.1.1目标设计 ..................................................... 15 4.1.2设计思想 ..................................................... 15 4.2总体设计 ......................................................... 16 4.2.1处理流程 ..................................................... 16 4.2.2模块设计 ..................................................... 17 4.3接口设计 ......................................................... 17 4.4数据结构设计 ..................................................... 17 4.4.1逻辑设计(数据结构的名称) .................................. 17 4.4.2系统的逻辑划分 ............................................... 18 第5章 系统功能的实现与设计 ............................................ 19 5.1 主界面设计 ...................................................... 19 5.2主界面设计 ....................................................... 19 5.3通道的设计 ....................................................... 22 5.4视图菜单设计 ..................................................... 24 5.5设置菜单的设计 ................................................... 26 5.5.1时间范围模块 ................................................. 26
V
第1章 绪论
5.5.2同步设置模块 ................................................. 29 5.5.3输出设置模块 ................................................. 31 5.5.4硬件配置模块 ................................................. 34 结 论 ................................................................. 36 致 谢 .................................................................. 38 参考文献 ............................................................... 40 附录 .................................................................... 42
VI
第1章 绪论
第1章 绪 论
随着工业化的实现,信息化的到来,我们开始进入知识经济的新时代。创新是这个时代的源动力。文化的创新、观念的创新、科技的创新、的创新改变着我们的今天,并将改造我们的明天。新旧文化、新旧思想的撞击、竞争,不同学科、不同技术的交叉、渗透,必将迸发出新的精神火花,产生新的发现、发明和物质力量。嵌入式技术就是在这样的规律和环境中诞生和发展的。科技创新带给社会与人类的利益远远超过它的危险。机器人的发展史已经证明了这一点。嵌入式的应用领域不断扩大,从工业走向农业、服务业;从产业走进医院、家庭;从陆地潜入水下、飞往空间。
1.1嵌入式系统的现状与发展趋势
随着信息化,智能化,网络化的发展,嵌入式系统技术也将获得广阔的发展空间。美国著名未来学家尼葛洛庞帝99年1月访华时预言,4~5年后嵌入式智能(电脑) 工具将是PC和因特网之后最伟大的发明。我国著名嵌入式系统专家沈绪榜院士98年11月在武汉全国第11次微机学术交流会上发表的《计算机的发展与技术》一文中,对未来10年以嵌入式芯片为基础的计算机工业进行了科学的阐述和展望。1999年世界电子产品产值已超过12000亿美元,2000年达到13000亿美元,预计2005年,销售额将达18000亿美元。
进入20世纪90年代,嵌入式技术全面展开,目前已成为通信和消费类产品的共同发展方向。在通信领域,数字技术正在全面取代模拟技术。在广播电视领域,美国已开始由模拟电视向数字电视转变,欧洲的DVB(数字电视广播)技术已在全球大多数国家推广。数字音频广播(DAB)也已进入商品化试播阶段。而软件、集成电路和新型元器件在产业发展中的作用日益重要。所有上述产品中,都离不开嵌入式系统技术。象前途无可计量的维纳斯计划生产机顶盒,核心技术就是采用32位以上芯片级的嵌入式技术。在个人领域中,嵌入式产品将主要是个人商用,作为个人移动的数据处理和通讯软件。由于嵌入式设备具有自然的人机交互界面,GUI屏幕为中心的多媒体界面给人很大的亲和力。手写文字输入、语音拨号上网、收发电子邮件以及彩色图形、图像已取得初步成效。
硬件方面,不仅有各大公司的微处理器芯片,还有用于学习和研发的各种配套开发包。目前低层系统和硬件平台经过若干年的研究,已经相对比较成熟,实现各种功能的芯片应有尽有。而且巨大的市场需求给我们提供了学习研发的资金和技术力量。
从软件方面讲,也有相当部分的成熟软件系统。国外商品化的嵌入式实时操作系
1
第1章 绪论
统,已进入我国市场的有WindRiver、Microsoft、QNX和Nuclear等产品。我国自主开发的嵌入式系统软件产品如科银(CoreTek)公司的嵌入式软件开发平台DeltaSystem,中科院推出的Hopen嵌入式操作系统(虽然还不够完善)。同时由于是研究热点,所以我们可以在网上找到各种各样的免费资源,从各大厂商的开发文档,到各种驱动,程序源代码,甚至很多厂商还提供微处理器的样片。这对于我们从事这方面的研发,无疑是个资源宝库。对于软件设计来说,不管是上手还是进一步开发,都相对来说比较容易。这就使得很多生手能够比较快的进入研究状态,利于发挥大家的积极创造性。
今天嵌入式系统带来的工业年产值已超过了1万亿美元,1997年来自美国嵌入式系统大会(Embedded System Conference)的报告指出,未来5年仅基于嵌入式计算机系统的全数字电视产品,就将在美国产生一个每年1500亿美元的新市场。美国汽车大王福特公司的高级经理也曾宣称,“福特出售的‘计算能力’已超过了IBM”,由此可以想见嵌入式计算机工业的规模和广度。1998年11月在美国加州举行的嵌入式系统大会上,基于RTOS的Embedded Internet成为一个技术新热点。在国内,“维纳斯计划”和“女锅计划”一度闹得沸沸扬扬,机顶盒、信息加电这两年更成了IT热点,而实际上这些都是嵌入式系统在特定环境下的一个特定应用。据调查,目前国际上已有两百多种嵌入式操作系统,而各种各样的开发工具、应用于嵌入式开发的仪器设备更是不可胜数。在国内,虽然嵌入式应用、开发很广,但该领域却几乎还是空白,只有三两家公司和极少数人员在从事这方面工作。由此可见,嵌入式系统技术发展的空间真是无比广大。
1.2 开发背景
为了能够减轻嵌入式设备操作用户的工作负担,提高工作效率,使其对于嵌入式设备的操控变得更加的简单,直观。因此我选择开发多通道设备控制与采集程序,本系统实现视图菜单、设置菜单、文件菜单、多通道的设置与操控等多个功能模块。
1.3嵌入式设备用户控制端开发的目的
嵌入式设备用户控制端开发的主要目的有:
①利用目前的计算机技术的发展,来节省工作时间,提高工作效率; ②能够化繁为简,让用户能从繁杂的机器操控中脱离出来,而是利用计算机上简单直白的图形化界面就能完成对嵌入式设备的控制与数据采集。利用计算机不仅能够提高工作效率,同时也减轻了用户的工作负担。
2
第1章 绪论
1.4嵌入式设备控制与采集程序开发的意义
嵌入式设备能与用户亲密接触,最重要的因素就是它能提供非常友好的用户界面。图像界面,灵活的控制方式,使得人们感觉嵌入式设备就象是一个熟悉的老朋友。这方面的要求使得嵌入式软件设计者要在图形界面,多媒体技术上痛下苦功。手写文字输入、语音拨号上网、收发电子邮件以及彩色图形、图像都会使使用者获得自由的感受。目前一些先进的PDA在显示屏幕上已实现汉字写入、短消息语音发布,但一般的嵌入式设备距离这个要求还有很长的路要走。
1.5 本文研究的内容和目标
我这次开发的嵌入式设备的控制与数据采集过程,利用序列化和反序列化技术,将控制信息构建成为面向对象模型。
通过使用C#.NET技术利用MVC三层构架思想创建一个模型,并在模型中利
用序列化/反序列化技术完成文件的打开,保存。系统设置中的时间范围、同步设置、输出设置和硬件设置的功能。
在使用这些功能时提供可以给予比较完美的支持,反应准确迅速。可以准确的实现反序列化的打开及序列化的保存。设置时通过各个不同的设置可以控制界面通道的功能正常准确实现,并保证数据的完整和正确。该程序系统主要是用来大型设备的多通道数据的采集和保存。
本系统的构建将突出以下特点:
①交互性:方便数据采集与设备的控制; ②简洁性:以简单直白的图形化界面来进行操控; ③灵活性:用户可以进行多项设置来进行操控;
④实用性:使用户脱离了设备而使用计算机程序来进行控制。
3
第1章 绪论
4
第2章 技术介绍
第2章 技术介绍
2.1.NET简介
微软己经将.NET发展成了新一代的平台标准。当前,Microsotf .NET平台己经成为业界公认的开发平台。.NET开发平台简化了在高度分布式Internet环境中的应用系统开发,能够更容易地创建 Web应用程序。同时,也为创建稳定、可靠而又安全的 Windows桌面应用程序,提供了更多的支持。.NET Framework旨在实现下列目标:
(1)提供一个一致的面向对象的编程环境,而无论对象代码是在本地存储和执行,还是在本地执行但在Internet上分布,或者是在远程执行的。
(2)提供一个将软件部署和版本控制冲突最小化的代码执行环境。
(3)提供一个保证代码(包括由未知的或不完全受信任的第三方创建的代码)安全执行的代码执行环境。
(4)提供一个可消除脚本环境或解释环境的性能问题的代码执行环境。 (5)使开发人员的经验在面对类型大不相同的应用程序(如基于Windows的应用程序和基于Web的应用程序)时保持一致。
(6)按照工业标准生成所有通信,以确保基于.NET Framework的代码可与任何其他代码集成。
.NET开发平台主要组成部分:一是架构,即 CLR以及它所提供的一组基础类库;二是在开发技术方面,.NET提供了全新的数据库访问技术ADO.NET,以及网络应用开发技术ASP.NET和Windows编程技术WebForms[2];最后在开发语言方面,.NET提供了Visual Basic,VisualC++、C#和Javascirpt等多种语言支持。
2.2 MVC架构
MVC模式是\"Model-View-Controller\"的缩写,中文翻译为\"模式-视图-控制器\"。MVC应用程序总是由这三个部分组成。Event(事件)导致Controller改变Model或View,或者同时改变两者。只要Controller改变了Models的数据或者属性,所有依赖的View都会自动更新。类似的,只要Controller改变了View,View会从潜在的Model中获取数据来刷新自己。MVC模式最早是smalltalk语言研究团提出的,应用于用户交互应用程序中。smalltalk语言和java语言有很多相似性,都是面向对象语言,很自然的SUN在petstore(宠物店)事例应用程序中就推荐MVC模式作为开发Web应用的架构模式。MVC模式是一种架构模式,其实需要其他模式协作完成。在J2EE模式目录中,
5
第2章 技术介绍
通常采用service to worker模式实现,而service to worker模式可由集中控制器模式,派遣器模式和Page Helper模式组成。而Struts只实现了MVC的View和Controller两个部分,Model部分需要开发者自己来实现,Struts提供了抽象类Action使开发者能将Model应用于Struts框架中。
MVC模式是一个复杂的架构模式,其实现也显得非常复杂。但是,我们已经终结出了很多可靠的设计模式,多种设计模式结合在一起,使MVC模式的实现变得相对简单易行。Views可以看作一棵树,显然可以用Composite Pattern来实现。Views和Models之间的关系可以用Observer Pattern体现。Controller控制Views的显示,可以用Strategy Pattern实现。Model通常是一个调停者,可采用Mediator Pattern来实现。
现在让我们来了解一下MVC三个部分在J2EE架构中处于什么位置,这样有助于我们理解MVC模式的实现。MVC与J2EE架构的对应关系是:View处于Web Tier或者说是Client Tier,通常是JSP/Servlet,即页面显示部分。Controller也处于Web Tier,通常用Servlet来实现,即页面显示的逻辑部分实现。Model处于Middle Tier,通常用服务端的javaBean或者EJB实现,即业务逻辑部分的实现。
2.3 MVC设计思想
MVC英文即Model-View-Controller,即把一个应用的输入、处理、输出流程按照Model、View、Controller的方式进行分离,这样一个应用被分成三个层——模型层、视图层、控制层。
视图(View)代表用户交互界面,对于Web应用来说,可以概括为HTML界面,但有可能为XHTML、XML和Applet。随着应用的复杂性和规模性,界面的处理也变得具有挑战性。一个应用可能有很多不同的视图,MVC设计模式对于视图的处理仅限于视图上数据的采集和处理,以及用户的请求,而不包括在视图上的业务流程的处理。业务流程的处理交予模型(Model)处理。比如一个订单的视图只接受来自模型的数据并显示给用户,以及将用户界面的输入数据和请求传递给控制和模型。
模型(Model):就是业务流程/状态的处理以及业务规则的制定。业务流程的处理过程对其它层来说是黑箱操作,模型接受视图请求的数据,并返回最终的处理结果。业务模型的设计可以说是MVC最主要的核心。目前流行的EJB模型就是一个典型的应用例子,它从应用技术实现的角度对模型做了进一步的划分,以便充分利用现有的组件,但它不能作为应用设计模型的框架。它仅仅告诉你按这种模型设计就可以利用某些技术组件,从而减少了技术上的困难。对一个开发者来说,就可以专注于业务模型的设计。MVC设计模式告诉我们,把应用的模型按一定的规则抽
6
第2章 技术介绍
取出来,抽取的层次很重要,这也是判断开发人员是否优秀的设计依据。抽象与具体不能隔得太远,也不能太近。MVC并没有提供模型的设计方法,而只告诉你应该组织管理这些模型,以便于模型的重构和提高重用性。我们可以用对象编程来做比喻,MVC定义了一个顶级类,告诉它的子类你只能做这些,但没法你能做这些。这点对编程的开发人员非常重要。
业务模型还有一个很重要的模型那就是数据模型。数据模型主要指实体对象的数据 保存(持续化)。比如将一张订单保存到数据库,从数据库获取订单。我们可以将这个模型单独列出,所有有关数据库的操作只在该模型中。
控制(Controller)可以理解为从用户接收请求, 将模型与视图匹配在一起,共同完成用户的请求。划分控制层的作用也很明显,它清楚地告诉你,它就是一个分发器,选择什么样的模型,选择什么样的视图,可以完成什么样的用户请求。控制层并不做任何的数据处理。例如,用户点击一个连接,控制层接受请求后, 并不处理业务信息,它只把用户的信息传递给模型,告诉模型做什么,选择符合要求的视图返回给用户。因此,一个模型可能对应多个视图,一个视图可能对应多个模型。
模型、视图与控制器的分离,使得一个模型可以具有多个显示视图。如果用户通过某个视图的控制器改变了模型的数据,所有其它依赖于这些数据的视图都应反映到这些变化。因此,无论何时发生了何种数据变化,控制器都会将变化通知所有的视图,导致显示的更新。这实际上是一种模型的变化-传播机制。模型、视图、控制器三者之间的关系和各自的主要功能。
7
第2章 技术介绍
8
第3章 需求分析
第3章 需求分析
3.1可行性分析
随着工业化的实现,信息化的到来,我们开始进入知识经济的新时代。创新是这个时代的源动力。文化的创新、观念的创新、科技的创新、的创新改变着我们的今天,并将改造我们的明天。新旧文化、新旧思想的撞击、竞争,不同学科、不同技术的交叉、渗透,必将迸发出新的精神火花,产生新的发现、发明和物质力量。嵌入式技术就是在这样的规律和环境中诞生和发展的。科技创新带给社会与人类的利益远远超过它的危险。机器人的发展史已经证明了这一点。嵌入式的应用领域不断扩大,从工业走向农业、服务业;从产业走进医院、家庭;从陆地潜入水下、飞往空间......。
随着现在的科学技术发展速度越来越快,要求也越来越高,大量的嵌入式设备被人们应用到各个地区的各个工厂或者大中小型设备上。然而对于嵌入式设备来说,人们要是想直接通过硬件设施或者直接从设备本身上来对其进行直接的控制或者是数据采集,将会是一件相当复杂和费时费事的繁琐的操作,并且根据设备的安装地点和其他种种因素来讲,也不是很容易实现的。所以针对这种现状,我们便开发了这套多通道设备控制与采集程序--(基于观察者模式的控制视图实现)。可以让您不需要再接触到设备,而坐在办公室里通过计算机程序,就能轻松方便的对嵌入式设备进行操控和数据采集等等一系列操作。
本系统要利用MVC模式进行开发,所以技术难点主要有两个。其一是如何利用MVC手段去耦合M-V即模型与视图,其二是如何防止外部设备的变化引起视图比较大的变化。由于MVC架构的模型是自包含的,并且与控制器和视图相分离,所以很容易改变应用程序的数据层和业务规则。一旦正确的实现了模型,不管数据来自数据库或是LDAP服务器,视图将会正确的显示它们。由于运用MVC的应用程序的三个部件是相互,改变其中一个不会影响其它两个,所以依据这种设计思想能构造良好的松耦合的构件。这就可以解决上述两个难点。所以利用MVC架构的思想来完成该系统的开发是可行的。
3.2需求分析
本课题主要研究嵌入式设备的控制与数据采集过程,在计算机上以图形化界面模拟仪表面板,控制设备的工作过程对数据进行序列化/反序列化存取。利用MVC架构思想,使用visual studio 2005 中的C#来进行开发工作。
9
第3章 需求分析
主要任务是在计算机上做出控制设备的程序的采集过程中, 采用序列化/反序列化技术存取采集的数据,将控制信息构建成控制模型。嵌入式设备的控制与数据采集程序--(基于观察者模式的控制视图实现),利用了序列化和反序列化技术,将控制信息构建成为面向对象模型。通过使用C#.NET技术利用MVC三层构架思想创建一个模型,并在模型中利用序列化/反序列化技术完成文件的打开,保存。系统设置中的时间范围、同步设置、输出设置和硬件设置的功能。
在使用这些功能时提供可以给予比较完美的支持,反应准确迅速。可以准确的实现反序列化的打开及序列化的保存。设置时通过各个不同的设置可以控制界面通道的功能正常准确实现,并保证数据的完整和正确。该程序系统主要是用来大型设备的多通道数据的采集和保存。
对于我主要所负责的视图菜单和设置菜单这两个模块来说,设置视图菜单可以方便使用者从用户的视角去查看所需的数据。视图菜单中有时间,半波和全波三个选项。
(1)时间
时间的参数有Start和 Length,其中Start表示某通道上波的起始时间(以 微秒为单位),Length表示波长。 (2)全波和半波
全波和半波是以时间来衡量工作刻度的两种方式,以全波方式为主。
设置菜单中有时间范围,同步设置,输出设置开启重复测试和硬件五个选项。其中每部分设置的内容又可细分如下:
(1)时间范围设置:
主延时范围(时刻0的起始处):0—359角度;主延时范围是指程序测量的角度。 持续时间(设备工作的总时间):100—10000周波;持续时间是指程序工作的总时间。周波指一个周期的波长。
(2)同步设置(时钟来源):
同步设置主要是解决程序测量时,数据的同步源问题,通过频率来计时; 同步源选择:内同步(通过机器内部获得,是指程序跟机器连接之后程序在数据源选择时选择所连机器内部自己的工作周期),外同步(通过外接设备,是指跟外接设置的相连,并且测量时程序所用周期为外接设备所提供的工作周期):
系统默认同步源为内同步;
跟踪模式:NONE(是指信号丢失后,程序不停止工作,照常工作) , FULL(只是原信号丢失后,程序停止工作),默认为NONE; 跟踪模式是指程序在测量时是信号丢失后是否跟踪测量信号并选择是否正常工作。
内同步周期(通过运行频率计算):固定初始值为1000(毫秒)内同步周期是指机器内部运行一个周期的时间。
10
第3章 需求分析
时间误差:在0-20%左右认为数据正确。误差指程序测量的数据所允许的正常变化范围。
(3)输出设置:
触发源选择(设备开始工作的选择):指通过某种开关的开启来选择程序开始工作。
硬件选择(通过机器自己的开关给定);硬件选择是指机器自己给定的固定按钮或开关设定为程序开启运行的触发源。
软件选择(通过我们的系统软件给定);软件选择是指我们所做的软件程序自己给定的代码接口来设定的程序开启运行的触发源。
系统默认是硬件选择;
程控ARM:ARM必须(重启可以使用); ARM不必须(重启禁止使用); 程控默认为ARM必须;
程控ARM是指程序控制中的重启键选择,按动该键后程序将自动重新启动运行。 (4)开启重复测试(系统往复运行测试):重复测试是指测试系统往复运行的次数或时间间隔。
软件测试:测试间隔(1—1000秒);指程序测量一次的时间间隔。 硬件测试:测试次数(1—1000);程序测量一次,机器所运行的次数。 默认为未选择,当选择之后重复测试默认为软件测试; (5)硬件设置:硬件是指系统所连接的机器设备的接口。 设置:
请选择端口:COM1,COM2… 设置默认为COM1; 设备当前状态: 通讯状态;
设备状态;指系统程序现在连接的机器设备的接口。
11
第3章 需求分析
3.3用例图及用例
图3-1系统用例图
用例分析:
表3-1 选择视图用例:
用例名称 前置条件 功能描述 操作序列 选择视图 操作员选择视图菜单 操作员可通过对时间、全波或半波的设置来改变波形 1. 点选时间或全波或半波; 2. 打开通道使能端; 3. 对时间的Start、Length或全波、半波的Loop、Angle、Num进行设置; 4. 程序自动创建波形并可随用户对以上参数的不同设置,波形自动发生改变 补充说明 用例名称 功能描述 无 设置时间范围 可对测量角度和周波进行设置 12
表3-2 设置时间范围:
第3章 需求分析
操作序列 1. 点击设置菜单,选定“时间范围”项; 2. 对其中测量角度、持续时间进行设置; 3. 程序根据操作员设置的角度和持续时间来进行测量 显示 补充说明 用例名称 功能描述 操作序列 出现“时间范围”窗口,并显示测量角度和周波选项 无 同步设置 解决程序测量时,数据的同步源问题,通过频率来计时 1. 点击设置菜单,选定“同步设置”项; 2. 对同步源模式、跟踪模式、时钟误差进行设置; 3. 程序根据操作员对系统的设置,调整数据源的同步源问题并通过频率进行计时 表3-3同步设置用例:
显示 补充说明 用例名称 功能描述 操作序列 出现“同步设置”窗口,并显示同步源模式、跟踪模式、内同步周期和时钟误差选项 无 输出设置 可对触发源和程控Arm进行设置,并可选择是否开启重复测试 1.点击设置菜单,选定“输出设置”项; 2.对触发源选择、程控Arm进行设置; 3.程序根据用户设定决定软件或硬件触发,并决定重启程序是否进行 4.点击开启重复测试; 5.设置软件测试或硬件测试并设定测试间隔或重复次数; 6.根据操作员设置开始进行测试 表3-4 输出设置用例:
显示 补充说明 用例名称 功能描述 操作序列 出现“输出设置”窗口,并显示“触发源选择”和“程控Arm”选项,另包括了开启重复测试选项 无 硬件设置 可对硬件端口进行选择设置 1.点击设置菜单,选定“硬件设置”项; 2.选择端口; 3.根据操作员所选择的端口,程序显示当前设备的状态,包括设表3-5硬件设置用例:
13
第3章 需求分析
备状态和通讯状态 显示 出现“硬件设置”窗口,并显示“请选择”端口和设备当前的状态 补充说明 无
14
第4章 概要设计
第4章 概要设计
4.1项目设计
本系统研究针对嵌入式设备的控制与数据采集过程,其目标是在计算机上以图形化界面模拟仪表面板,控制设备的工作过程。不仅能够减轻用户工作负担,更能够提高工作效率,使得用户对于嵌入式设备的操控变得更加的简单,直观。
4.1.1目标设计
多通道设备控制与采集程序主要为用户提供图形化界面,控制设备的平台,我主要负责的是视图和设置的功能部分,其功能如下:
(1) 视图部分
a. 方便操作员从用户的视角去查看所需的数据; b. 操作员控制使能端口的数目;
c. 操作员可通过时间的起始时间和波长来控制波形; d. 操作员可通过全波或半波的方式来衡量工作刻度。 (2) 设置部分
a. 操作员可控制测量角度和持续时间来进行测量;
b. 操作员可通过改变同步设置解决测量时的同步源问题(通过频率计时); 以此来控制输出;
d. 操作员可选择连接机器设备的接口,以此来对设备进行控制或测试。
c. 操作员可对触发源和程控Arm进行设置,并可选择是否开启重复测试,
4.1.2设计思想
本系统要利用MVC模式进行开发,所以技术难点主要有两个。其一是如何利用MVC手段去耦合M-V即模型与视图,其二是如何防止外部设备的变化引起视图比较大的变化。由于MVC架构的模型是自包含的,并且与控制器和视图相分离,所以很容易改变应用程序的数据层和业务规则。一旦正确的实现了模型,不管数据来自数据库或是LDAP服务器,视图将会正确的显示它们。由于运用MVC的应用程序的三个部件是相互,改变其中一个不会影响其它两个,所以依据这种设计思想能构造良好的松耦合的构件。这就可以解决上述两个难点。所以利用MVC架构的思想来完成该系统的开发是可行的。
15
第4章 概要设计
4.2总体设计
4.2.1处理流程
设置时间范围设置设定角度, 周波,同步源同步设置根据设置开始测量触发源选择输出设置程控Arm输出开启重复测不开启重复试测试测试硬件选择端口硬件设置显示设备当前状态和通讯状态图4-1:设置菜单
16
第4章 概要设计
4.2.2模块设计
视图:主要分为时间;全波;半波这几大模块。
设置:主要分为时间范围;同步设置;输出设置;重复测试;硬件设置这几大模块。
4.3接口设计
外部接口设计: ⑴用户操作界面;
⑵硬件接口:RS232;RS485 ⑶软件接口;
4.4数据结构设计
4.4.1逻辑设计(数据结构的名称)
视图菜单:
选择视图菜单:SelectViewItem; 工具条上的度量:toolStripButtonGauge. 设置菜单:
同步设置:menuItemSetupSyn; 选择同步源:SetSynMode; 设置时钟误差:SetTimerError; 设置内同步周期值:SetInnerSynCycle; 设置跟踪模式:SetTraceMode; 设置触发源:SetTrigger; 设置:Arm:SetArm; 输出:menuItemSetupOutput; 步长:menuItemSetupStep; 重复:menuItemSetupRep; 序列器:menuItemSetupSeq; 硬件菜单:menuItemSetupHW. 类(所用到的类的名称)
17
第4章 概要设计
视图菜单:FromMain; 设置菜单:
⑴时间范围:SequencerDialog;
⑵同步设置:SynchronizationSetupDialoge; ⑶输出设置:RepeatDialog; ⑷输出配置:OutputDialog; ⑸硬件配置:HardwareSetupDialog.
4.4.2系统的逻辑划分
图4-1视图功能模块划分
图4-2设置功能模块划分
图4-3控制功能模块划分
18
第5章 系统功能的实现与设计
第5章 系统功能的实现与设计
5.1 主界面设计
本系统根据MVC三层架构进行设计的。主要用于大型嵌入式设备的控制和数据采集,能够让用户在计算机上以图形化的界面来对设备进行直接操控,相当的简单和容易,是对于目前操控嵌入式设备的一种相当方便的手段。
设计一个友好、美观、有特色的用户界面对一个系统来说是很重要的,特别是主界面要给用户一个良好的第一印象,就显得更加重要,在设计中,充分考虑到美观和实用,设计了一个较理想的界面。
5.2主页面设计
主页面FromMain.cs,在主界面主要包括文件,编辑,视图,设置,控制和帮助六个菜单和若干通道。通过视图,设置,菜单来对设备进行控制的设置,通过主界面的通道的波形来进行数据采集,在此页面中,可以进行多项设置来完成对设备的操控,界面简单直观,因此用户使用起来十分方便如图所示,主页面主要完成以下功能。
(1) 根据操作员的设置,设置个各个工具栏;
(2) 可同时打开和禁用多个通道,也可根据操作员设置来调整波形; (3) 也可根据用户设置的波形来显示数据,同样可对于多个通道使用。
19
第5章 系统功能的实现与设计
图5-1:主界面FormMain.cs
其中主程序控制通道个数以及运行的主要代码如下: namespace SequencerController {
//软件运行的状态
public enum WorkingState { Unconnect, Connect, Send, Error }; public partial class FormMain : Form {
Stream myFile;
ComPortEnum gbComPort = ComPortEnum.COM1; //通道个数
private const int ChannelNum = 32; private ChannelView[] channelViewArray; private DeviceSettings myDeviceSettings; private ChannelSettings copyChannel;
private WorkingState workState = WorkingState.Unconnect; public uint firstTimeCycle = 0;
20
第5章 系统功能的实现与设计
//延时设置
public const int SleepTime = 5; public uint repeatCount = 0;
//状态栏用于显示重复测试的当前重复次数 public uint tempNum = 1;
private void FormMain_FormClosing(object sender, FormClosingEventArgs
e)
{
{
}
21 if (myDeviceSettings.Dirty) DialogResult dr = MessageBox.Show(\"设置已改变,是否要保存
设置?\提示\ MessageBoxButtons.YesNoCancel, MessageBoxIcon.Question);
switch (dr) {
case DialogResult.Yes:
SaveFileDialog saveDlg = new SaveFileDialog(); saveDlg.FileName = myDeviceSettings.FileName; saveDlg.Filter = \"波形描述文件(*.qsf)|*.qsf|所有文件
(*.*)|*.*\";
saveDlg.FilterIndex = 0;
if (saveDlg.ShowDialog() == DialogResult.OK) DeviceSettings.Save(myDeviceSettings,
saveDlg.FileName);
else
e.Cancel = true; break;
case DialogResult.Cancel: e.Cancel = true; break; } }
第5章 系统功能的实现与设计
5.3通道的设计
通道设计我采用了自定义控件,即可以自己来控制控件所要完成的功能,通过自定义控件,程序可以对显示出的方波波形进行手动调整,可以自由控制波形,如图所示:
图5-2:通道ChannelView.cs
其中根据用户实际情况,我共设计了共32条通道,可满足用户多个控制,在其中任意一个或者若干通道上画出不同的波形(改变视图中时间的参数Start和Length的数值),在设置中进行时间设置和同步设置,使其在使能端的参数(Loop, Num, Angel)显示出变化,并在文本框显示出来。
开始点击打开使能端Y询问是否创建波设置时间,全波或半波是否超出范围NNY根据设置创建波形报错结束
图5-3: 通道控制基本流程图
通道功能的部分代码如下:
用户 Loop,Angle,Num,Start,Length输入监测与监控:
Loop 输入值的监测与提示;
private void nudLoops_KeyUp(object sender, KeyEventArgs e) {
22
第5章 系统功能的实现与设计
if (myDevice.Gauge == GaugeEnum.HalfCycle && (nudLoops.Text ==
\"1\" || nudLoops.Text == \"0\"))
{
nudLoops.Text = \"2\"; if (nudLoops.Text == \"\") {
nudLoops.Text = \"2\"; }
23
} }
if (nudLoops.Text == \"0\") {
nudLoops.Text = \"1\"; }
if (nudLoops.Text == \"\") {
nudLoops.Text = \"1\"; } try {
if (Decimal.Parse(nudLoops.Text) > nudLoops.Maximum) {
MessageBox.Show(\"数据超出范围!\提示\"); if (Decimal.Parse(nudLoops.Text) < nudLoops.Minimum ||
nudLoops.Text == \"\")
{
MessageBox.Show(\"数据超出范围!\提示\"); } } catch {
nudLoops.Value = 1; }
this.nudCycle_ValueChanged(sender, e);
第5章 系统功能的实现与设计
}
5.4视图菜单设计
视图菜单的设计思想如下:
视图菜单中有时间,半波和全波三个选项。 (1)时间
时间的参数有Start和 Length,其中Start表示某通道上波的起始时间(以 微秒为单位),Length表示波长。
(2)全波和半波
全波和半波是以时间来衡量工作刻度的两种方式,以全波方式为主。 视图菜单部分代码如下:
private void SelectViewItem(string itemName) {
switch (itemName.Substring(0, 2)) {
case \"时间\":
//如果没有连接设备取得设备频率,则不允许切换到时间视
图
//if (workState == WorkingState.Unconnect) //{
// MessageBox.Show(\"必须连接设备后才能切换到时
间视图!\警告\ MessageBoxButtons.OK, MessageBoxIcon.Warning);
// break; //}
//TODO: debug if (firstTimeCycle == 0) {
myDeviceSettings.DeviceCycle = 20000; } else {
myDeviceSettings.DeviceCycle = firstTimeCycle;
24
第5章 系统功能的实现与设计
}
//////////////////////////////////// toolStripButtonTime.Checked = true; toolStripButtonFull.Checked = false; toolStripButtonHalf.Checked = false; menuItemViewTime.Checked = true; menuItemViewFull.Checked = false; t 25
menuItemViewHalf.Checked = false;
myDeviceSettings.Gauge = GaugeEnum.Time; labelLength.Visible = true; labelStart.Visible = true; labelNum.Visible = false; labelLoop.Visible = false; labelAngle.Visible = false; break; case \"半波\":
toolStripButtonTime.Checked = false; toolStripButtonFull.Checked = false; toolStripButtonHalf.Checked = true; menuItemViewTime.Checked = false; menuItemViewFull.Checked = false; menuItemViewHalf.Checked = true;
myDeviceSettings.Gauge = GaugeEnum.HalfCycle; labelLength.Visible = false; labelStart.Visible = false; labelNum.Visible = true; labelLoop.Visible = true; labelAngle.Visible = true; break; case \"全波\":
oolStripButtonTime.Checked = false; toolStripButtonFull.Checked = true; toolStripButtonHalf.Checked = false; menuItemViewTime.Checked = false;
第5章 系统功能的实现与设计
menuItemViewFull.Checked = true; menuItemViewHalf.Checked = false;
myDeviceSettings.Gauge = GaugeEnum.FullCycle; labelLength.Visible = false; labelStart.Visible = false; labelNum.Visible = true; labelLoop.Visible = true; labelAngle.Visible = true; break; }
//TODO: Update myDeviceSettings's Scale property for (int i = 0; i < ChannelNum; i++) {
channelViewArray[i].UpdateDevice(myDeviceSettings); channelViewArray[i].CancelEvent();
channelViewArray[i].UpdateView();//myDeviceSettings.Channels[i], myDeviceSettings.Gauge, myDeviceSettings);
}
}//工具条上度量
5.5设置菜单的设计
在设置菜单当中,有时间范围,同步设置,输出设置开启重复测试和硬件五个选项。用户可以根据这些选项来对设备进行控制或者数据采集。
5.5.1时间范围模块
主延时范围(时刻0的起始处):0—359角度;主延时范围是指程序测量的角度。 持续时间(设备工作的总时间):100—10000周波;持续时间是指程序工作的总时间。周波指一个周期的波长。时间范围模块如图所示:
26
第5章 系统功能的实现与设计
图5-4:时间范围SequenceDialog.cs
开始设置主延时范围,持续时间N是否超出范围Y报错根据设置创建新波形结束 图5-5: 时间范围设置基本流程图
其程序代码如下:
public partial class SequenceDialog : Form {
private DeviceSettings myDeviceSettings; public SequenceDialog(DeviceSettings ds) {
InitializeComponent(); myDeviceSettings = ds;
numCycleDuration.Value = myDeviceSettings.Duration; numCycleMainDelay.Value = myDeviceSettings.MainDelay; buttonOK.DialogResult = DialogResult.OK; }
27
第5章 系统功能的实现与设计
private void buttonOK_Click(object sender, EventArgs e) {
bool bgood = true; string tempID; string tempstr;
if (numCycleDuration.Value < 10) {
MessageBox.Show(\"数据超出范围!- 100000\提示\"); numCycleDuration.Value = 10;
buttonOK.DialogResult = DialogResult.OK; }
for (int i = 0; i < 32; i++) {
if (myDeviceSettings.Channels[i].Used == true) {
if ((float)numCycleDuration.Value <
myDeviceSettings.Channels[i].Loop + myDeviceSettings.Channels[i].Num)
{
bgood = false; tempID = i.ToString(); break; } } }
tempstr = \"您设定持续时间数据过小,与已设置的通道数据有冲突!\"; if (bgood == false) {
MessageBox.Show(tempstr, \"提示\"); } else {
myDeviceSettings.Duration = (uint)numCycleDuration.Value; myDeviceSettings.MainDelay = (uint)numCycleMainDelay.Value;
28
第5章 系统功能的实现与设计
} }
5.5.2同步设置模块
同步设置主要是解决程序测量时,数据的同步源问题,通过频率来计时; 同步源选择:内同步(通过机器内部获得,是指程序跟机器连接之后程序在数据源选择时选择所连机器内部自己的工作周期),外同步(通过外接设备,是指跟外接设置的相连,并且测量时程序所用周期为外接设备所提供的工作周期):
系统默认同步源为内同步;
跟踪模式:NONE(是指信号丢失后,程序不停止工作,照常工作) , FULL(只是原信号丢失后,程序停止工作),默认为NONE; 跟踪模式是指程序在测量时是信号丢失后是否跟踪测量信号并选择是否正常工作。
内同步周期(通过运行频率计算):固定初始值为1000(毫秒)内同步周期是指机器内部运行一个周期的时间。
时间误差:在0-20%左右认为数据正确。误差指程序测量的数据所允许的正常变化范围。如图所示:
图5-6:同步设置SynchronizationSetupDialoge.cs
29
第5章 系统功能的实现与设计
开始选择同步源跟踪模式选择时间误差Y是否在0-20%之间N正确出错结束 图5-7:同步设置基本流程图
其主要程序代码如下: namespace SequencerController {
public partial class SynchronizationSetupDialoge : Form {
DeviceSettings myDeviceSettings;
public SynchronizationSetupDialoge(DeviceSettings deviceSettings) {
InitializeComponent();
this.myDeviceSettings = deviceSettings; }
private void buttonOK_Click(object sender, EventArgs e) {
myDeviceSettings.TraceMode =
(TraceModeEnum)comboTraceMode.SelectedIndex;
myDeviceSettings.SynMode =
30
第5章 系统功能的实现与设计
(SynModeEnum)comboSynMode.SelectedIndex;
myDeviceSettings.InnerSynchCycle = myDeviceSettings.DeviceCycle /
2;
myDeviceSettings.TimerError = trcTimerError.Value; }
private void SynchronizationSetupDialoge_Load(object sender, EventArgs e) {
comboSynMode.SelectedIndex = (int)myDeviceSettings.SynMode; comboTraceMode.SelectedIndex = (int)myDeviceSettings.TraceMode; tbInnerSynCycle.Text = myDeviceSettings.DeviceCycle.ToString(); this.numericUpDown1.Value = myDeviceSettings.DeviceCycle; trcTimerError.Value = myDeviceSettings.TimerError;
lblTimerError.Text = \"时钟误差:\" + (trcTimerError.Value *
5).ToString() + \"%\";
}
private void trcTimerError_ValueChanged(object sender, EventArgs e) {
lblTimerError.Text = \"时钟误差:\" + (trcTimerError.Value *
5).ToString() + \"%\";
} }
5.5.3输出设置模块
触发源选择(设备开始工作的选择):指通过某种开关的开启来选择程序开始工作。
硬件选择(通过机器自己的开关给定);硬件选择是指机器自己给定的固定按钮或开关设定为程序开启运行的触发源。
软件选择(通过我们的系统软件给定);软件选择是指我们所做的软件程序自己给定的代码接口来设定的程序开启运行的触发源。 系统默认是硬件选择;
程控ARM:ARM必须(重启可以使用); ARM不必须(重启禁止使用); 程控默认为ARM必须;
31
第5章 系统功能的实现与设计
程控ARM是指程序控制中的重启键选择,按动该键后程序将自动重新启动运行。
开启重复测试(系统往复运行测试):重复测试是指测试系统往复运行的次数或时间间隔。
软件测试:测试间隔(1—1000秒);指程序测量一次的时间间隔。 硬件测试:测试次数(1—1000);程序测量一次,机器所运行的次数。
默认为未选择,当选择之后重复测试默认为软件测试。输出设置模块如图所示:
图5-8:输出设置OutputDialog.cs和开启重测试RepeatDialog.cs窗口
32
第5章 系统功能的实现与设计
开始触发源选择程控Arm选择Y是否开启重复测试N选择硬件或软件测试程序运行N是否超出范围Y程序运行报错结束 图5-9:输出设置和重复测试模块基本流程图
其功能完成代码如下: namespace SequencerController {
public partial class OutputDialog : Form {
DeviceSettings myDeviceSettings;
public OutputDialog(DeviceSettings deviceSettings) {
InitializeComponent();
this.myDeviceSettings = deviceSettings; }
private void OutputDialog_Load(object sender, EventArgs e) {
cmbTrigger.SelectedIndex = myDeviceSettings.TriggerMode; cmbArm.SelectedIndex = myDeviceSettings.Arm; }
33
第5章 系统功能的实现与设计
private void buttonOK_Click(object sender, EventArgs e) {
myDeviceSettings.TriggerMode = cmbTrigger.SelectedIndex; myDeviceSettings.Arm = cmbArm.SelectedIndex; }
private void label2_Click(object sender, EventArgs e) { } }
5.5.4硬件配置模块
硬件设置:硬件是指系统所连接的机器设备的接口。 设置:请选择端口:COM1,COM2„ 设置默认为COM1; 设备当前状态: 通讯状态;
设备状态;指系统程序现在连接的机器设备的接口。
如图所示界面:
图5-10:硬件设置HardwareSetupDialog.cs
其主程序代码如下:
public partial class HardwareSetupDialog : Form
34
第5章 系统功能的实现与设计
{
private DeviceSettings myDeviceSettings;
public HardwareSetupDialog(DeviceSettings deviceSettings) {
InitializeComponent();
this.myDeviceSettings = deviceSettings; }
private void HardwareSetupDialog_Load(object sender, EventArgs e) {
comboComPort.SelectedIndex = (int)myDeviceSettings.ComPort; comboWorkMode.SelectedIndex = (int)myDeviceSettings.WorkMode; commState.Text = \"DisConnect\";
deviceState.Text = myDeviceSettings.ComPort.ToString(); }
private void buttonOK_Click(object sender, EventArgs e) {
myDeviceSettings.ComPort =
(ComPortEnum)comboComPort.SelectedIndex;
myDeviceSettings.GbComPort =
(ComPortEnum)comboComPort.SelectedIndex;
myDeviceSettings.WorkMode =
(WorkModeEnum)comboWorkMode.SelectedIndex;
}
private void groupBox1_Enter(object sender, EventArgs e) { }
private void comboComPort_SelectedIndexChanged(object sender, EventArgs
e)
{ } } }
35
结论
结 论
论文从了解国内外动态的需求出发,查阅了大量有关网上教学的文献资料,并学习了.NET技术、MVC架构、MVC的设计思想以及具体设计,在此基础上,构筑了多通道控制与数据采集程序。在本次毕业设计之前,由于自己的知识面还比较狭窄,缺乏专业的系统的训练,对自己的实际编程技能缺乏自信,毕设过程中在老师的精心指导下,通过自己坚持不懈的努力,弥补了自己的缺陷,为自己的大学生活交上了一份完美的答卷。我掌握不仅仅是专业知识专业技能,跟重要的是我领悟了分析实际问题、解决问题的思想、方法,从而使自己具有具体问题具体分析、以不变应万变,灵活运用专业知识的能力,这些是我一生中的宝贵财富。在论文期问,主要完成了以下工作:
(1)针对目前现状,结合目前社会实际状况,从实用的角度出发,根据功能需求
分析,对多通道控制与数据采集程序的功能结构进行抽象、分解,形成系统的功能设计、数据结构设计。
(2)完成了对多通道控制与数据采集程序的设计,结合MVC架构思想以及设计思
路,参考了大量的相关材料,分析了多个目前该类程序,对于多个可能和必须用到的模块进行了详细的设计和实现。
(3)技术的应用。在设计中,采用了一些新的技术和新的算法,方便了本设计的
完成。但是本程序不足的地方仍然存在,将在以后不断改进,逐步完善。
36
结论
37
致谢
致 谢
本文是在我的导师的悉心指导下完成的。本文从选题、程序设计到定稿的整个过程中,不断给予我深思熟虑的指导和建议,他对本文的顺利完成起到了非常重要的作用。一直以来,李何老师付出了大量的心血和宝贵的时间来教育和指导我。他严谨求实的治学态度、勤奋朴实的工作作风以及广博的专业知识,无一不使我受益终生。在此谨向尊师表示崇高的敬意和诚挚的感谢!
感谢我们同学,他们在课题研究以及日常生活中给予我热心的帮助,在此我向他们表示衷心的感谢!
感谢在我四年大学学习期间,在学习上、生活上给过我关心和帮助的所有老师和同学!感谢计算机科学技术学院各位领导,给我们提供了良好的学习环境。
衷心感谢我的妈妈,正是她多年来无私的支持和不断的鼓励使我能够完成学业,她永远是我不断向前奋斗的动力。
最后,对在百忙之中审阅论文的各位老师和专家们表示衷心的感谢!
38
致谢
39
参考文献
参考文献
[1]C#基础与实例教程 郝春强著 中国电力出版社 2005;
[2]张忠,周卫. MVC体系结构模式中的设计模式[J]南通航运职业技术学院学报, 2004; [3]杨晓晖,刘玉玲,田俊峰. 基于MVC设计模式的实验仿真系统[A]计算机技术与应用进展——全国第17届计算机科学与技术应用(CACIS)学术会议论文集; [4]实用软件工程方法 微软公司著;
[5]吕伟臣 霍言 吕宝臣著 VisualC#2005入门与提高 清华大学出版社; [6]吴建 郑潮 汪杰著 UML基础与Rose建模案例第2版 人民邮电出版社; [7]软件工程之全程建模实现 清润著 电子工业出版社 2004.5; [8] C#基础与实例教程 郝春强著 中国电力出版社 2005;
[9] C#企业级开发案例精解 皱建峰,周山峰,项细威著 人民邮电出版社 2006.1; [10] 张海藩.软件工程导论(第四版)[M].北京:清华大学出版社,2003:26-120.
40
参考文献
41
附录
附录
原文:
Hosting and Deployment of an ASP.NET MVC Application in IIS6 and IIS7
When building any application, the chances are that the application will have to be deployed. This article by Maarten Balliauw describes how you can deploy and host an ASP.NET MVC application in an Internet Information Server (IIS6 and IIS7) platform.
Platforms that can be used
Theoretically, any web server capable of running ASP.NET web applications should be capable of running an ASP.NET MVC web application
Supported platforms are Windows running any version of Internet Information Services (IIS), from version 5.1 on.
Some people managed to get ASP.NET MVC web applications running on Mono, an open source implementation of the .NET framework, but this is not officially supported. More on this can be found on: http://www.tobinharris.com/2008/4/3/asp-net-mvc-on-mono-osx. Building an ASP.NET MVC web application also means building URL routes. URL routing is a key part of the ASP.NET MVC framework and is, therefore, required to run on the IIS server. Depending on the version of IIS being used, additional configuration may be required in order to be able to take advantage of URL routing.
Any ASP.NET MVC web application will be able to run on the following versions of IIS: IIS version Windows version Remarks IIS 7.0 (integrated mode) IIS 7.0 (classic mode) IIS 6.0 Windows Server 2008 Windows Vista (except Home Basic) Windows Server 2008 Windows Vista (except Home Basic) Windows Server 2003 No special configuration required Special configuration required to use URL routing Special configuration required to use URL routing IIS 5.1 Windows XP Professional Special configuration required to use URL routing IIS 5.0 Windows 2000 Special configuration required to use URL routing
Differences between IIS 7.0 integrated and classic mode
IIS 7.0 has been developed to be a flexible and scalable platform for hosting dynamic web applications including Microsoft ASP and ASP.NET.
42
附录
When looking at ASP.NET, IIS 6.0 was built using ISAPI modules, requiring low-level C++ API calls and a lot of processing overhead when transferring an HTTP request to ASP.NET. For example, authentication was performed twice: once in IIS and once in ASP.NET. IIS 7.0. This introduced a whole new integrated model, which allowed ASP.NET applications to plug into the web server directly and actually become a part of the web server executable. With classic mode, an HTTP request would be executed as follows:
As you can see, things such as authentication are performed twice, only for ASP.NET requests. Protecting an image from being displayed using ASP.NET authentication would be impossible in the classic mode! Using integrated mode, any HTTP request can be processed using ASP.NET modules and handlers such as authentication, making ASP.NET a full member of the IIS request processing pipeline.
IIS 7.0 provides support both for this new integrated mode and for the classic IIS 6.0 mode. The first option allows you to configure IIS 7.0 from within your web.config (which is preconfigured for the ASP.NET MVC framework); the latter requires some server-side
43
附录
configuration. To check whether an application is running in integrated or classic mode, follow these steps:
1. Launch the Internet Information Services Manager. 2. In the Connections tree view, select an application.
3. In the Actions window, click on the Basic Settings link to open the Edit Application
dialog box.
4. Verify the selected Application pool. If DefaultAppPool is selected, your
application runs in an integrated mode and natively supports the ASP.NET MVC framework. If Classic .NET AppPool is selected, your application runs in the classic mode, and more configuration is required.
Hosting an ASP.NET MVC web application
If you or your web hosting provider have access to your web server's settings, a wildcard script map can be created in order to have full routing support. A wildcard script map enables you to map each incoming request into the ASP.NET framework. Be aware that this option passes every request into the ASP.NET framework (even images and CSS files!) and may have performance implications.
If you do not have access to the web server's settings, you can modify the route tableto use file extensions. Instead of looking look like this:
/Products/All
URLs would look like this:
/Products.aspx/All
This way, no configuration of the web server is required. It is, however, necessary to make some modifications to the application's route table.
You do not have to configure anything if your IIS 7.0 server is operating in integrated mode
IIS 7.0 has been developed to be a flexible and scalable platform for hosting dynamic web applications including Microsoft ASP and ASP.NET.
When looking at ASP.NET, IIS 6.0 was built using ISAPI modules, requiring low-level C++ API calls and a lot of processing overhead when transferring an HTTP request to ASP.NET. For example, authentication was performed twice: once in IIS and once in ASP.NET. IIS
44
附录
7.0. This introduced a whole new integrated model, which allowed ASP.NET applications to plug into the web server directly and actually become a part of the web server executable. With classic mode, an HTTP request would be executed as follows
As you can see, things such as authentication are performed twice, only for ASP.NET requests. Protecting an image from being displayed using ASP.NET authentication would be impossible in the classic mode! Using integrated mode, any HTTP request can be processed using ASP.NET modules and handlers such as authentication, making ASP.NET a full member of the IIS request processing pipeline
IIS 7.0 provides support both for this new integrated mode and for the classic IIS 6.0 mode. The first option allows you to configure IIS 7.0 from within your web.config (which is preconfigured for the ASP.NET MVC framework); the latter requires some server-side configuration. To check whether an application is running in integrated or classic mode, follow these steps:
1. Launch the Internet Information Services Manager.
45
附录
2. In the Connections tree view, select an application.
3. In the Actions window, click on the Basic Settings link to open the Edit Application
dialog box.
4. Verify the selected Application pool. If DefaultAppPool is selected, your
application runs in an integrated mode and natively supports the ASP.NET MVC framework. If Classic .NET AppPool is selected, your application runs in the classic mode, and more configuration is require
Hosting an ASP.NET MVC web application
If you or your web hosting provider have access to your web server's settings, a wildcard script map can be created in order to have full routing support. A wildcard script map enables you to map each incoming request into the ASP.NET framework. Be aware that this option passes every request into the ASP.NET framework (even images and CSS files!) and may have performance implications.
If you do not have access to the web server's settings, you can modify the route tableto use file extensions. Instead of looking look like this:
/Products/All
URLs would look like this:
/Products.aspx/All
This way, no configuration of the web server is required. It is, however, necessary to make some modifications to the application's route table.
You do not have to configure anything if your IIS 7.0 server is operating in integrated mode.
Creating a wildcard script map in IIS 7.0
Here is how you can enable a wildcard script map in Internet Information Services 7.0:
1. Launch the Internet Information Services Manager. 2. In the Connections tree-view, select an application.
3. In the bottom toolbar, make sure that the Features view is selected. 4. Double-click on the Handler Mappings shortcut.
5. In the Actions window, click on the Add Wildcard Script Map button.
46
附录
6. Enter the path to the aspnet_isapi.dll file, which is usually located
in: %windir%Microsoft.NETFrameworkv2.0.50727aspnet_isapi.dll. 7. Enter the name ASP.NET MVC. 8. Click on the OK button.
After doing this, any request for this specific web site will be executed by the ASP.NET engine.
Creating a wildcard script map in IIS 6.0
Here is how you can enable a wildcard script map in Internet Information Services 6.0:
1. Launch the Internet Information Services IIS Manager. 2. Right-click on a web site and select Properties. 3. Select the Home Directory tab.
4. Near Application settings, click on the Configuration button. 5. Select the Mappings tab.
6. Near Wildcard application maps, click on the Insert button. 7. Enter the path to the aspnet_isapi.dll file, which is usually located
in %windir%Microsoft.NETFrameworkv2.0.50727aspnet_isapi.dll 8. Uncheck the Verify that file exists checkbox. 9. Click on the OK button.
After following these steps, any request for this specific web site will be executed by the ASP.NET engine.
47
附录
Modifying the route table to use file extensions
If you do not have access to your web server's settings and, therefore, cannot configure a wildcard script map, it is possible to modify the route table to use file extensions. Instead of looking like this:
/Products/All
URLs would look like this:
/Products.aspx/All
In the older versions of IIS, only certain requests are mapped to the ASP.NET framework. For example, only .aspx, .asmx, .ascx, and so on, are mapped to the ASP.NET framework. Extensions such as .htm, .jpg, .gif, and so on, are served directly by IIS without any ASP.NET processing being necessary. Because the .aspx extension is always mapped to the ASP.NET framework, it is an ideal candidate to trigger the routing engine.
48
附录
In the Global.asax file of the web application, modify the default route to look like this:
using System.Web.Mvc; using System.Web.Routing; namespace ModifiedRouteExample {
public class MvcApplication : System.Web.HttpApplication {
public static void RegisterRoutes(RouteCollection routes) {
routes.IgnoreRoute(\"{resource}.axd/{*pathInfo}\"); routes.MapRoute(
\"Default\ // Route name
\"{controller}.aspx/{action}/{id}\ // URL with parameters
new { controller = \"Home\ // Parameter defaults ); }
protected void Application_Start() {
RegisterRoutes(RouteTable.Routes); 49
附录
} } }
The key difference between the standard route table and this modified route table is the .aspx extension:
routes.MapRoute( \"Default\
\"{controller}.aspx/{action}/{id}\
new { controller = \"Home\);
All of the URLs in your application should now work with a pattern such as
{controller}.aspx/{action}. If you are using hard-coded hyperlinks, make sure that you modify these links. Hyperlinks that are generated using the ActionLink() method of the HtmlHelper class should be updated automatically
翻译:
主机和部署一个ASP.NET MVC设计中的应用IIS6和IIS7
当建筑物的任何申请,有机会的,该申请将被部署。 本条马腾Balliauw将告诉您,如何部署和主持一个ASP.NET MVC模式应用在Internet信息服务( IIS6和IIS7 )平台。
平台,可用于
从理论上讲,任何Web服务器能够运行ASP.NET Web应用程序应该能够运行一个ASP.NET MVC模式的Web应用程序。
支持的平台是Windows运行任何版本的 Internet 信息服务( IIS ) ,从5.1版上。
有些人设法搞到ASP.NET MVC模式的Web应用程序运行在单声道,一个开放源码的执行的。 NET Framework ,但是这不是正式的支持。 更多关于这个可以找到: http://www.tobinharris.com/2008/4/3/asp-net-mvc-on-mono-osx 。
建立一个ASP.NET Web应用程序的MVC也意味着建设网址路线。 网址路由是一个关键组成部分的ASP.NET的MVC框架,因此,需要运行IIS服务器上。 根据不同的版本的IIS正在使用,其他配置可能需要的,以便能够充分利用网址路由。 任何ASP.NET的MVC Web应用程序将可以运行在以下版本的IIS : IIS版本 Windows版 备注 的IIS 7.0 (集 Windows Server 没有特殊的配置成模式) 2008的 要求 Windows Vista的(除家庭基本) 的IIS 7.0 (经 Windows Server 特殊配置要求使典模式) 2008的 用URL路由 Windows Vista的(除家庭基本) IIS 6.0中 Windows Server 特殊配置要求使2003中 用URL路由 50
附录
Windows XP专业特殊配置要求使版 用URL路由 IIS 5.0中 Windows 2000中 特殊配置要求使用URL路由 分歧的IIS 7.0集成和经典模式 IIS的7.0已经开发出来,是一个灵活和可扩展平台主办动态网络应用程序包括微软的ASP和ASP.NET 。 当看到ASP.NET中, IIS 6.0中使用了内置的ISAPI模块,需要低级别的C + + API调用和大量的处理开销转让HTTP请求到ASP.NET 。 例如,身份验证进行两次:一次在IIS和ASP.NET中的一次。 的IIS 7.0 。 这提出了一项全新的综合模式,使ASP.NET应用程序连接到Web服务器直接和实际成为一个组成部分的Web服务器可执行文件。
与经典的模式,一个HTTP请求将执行如下:
IIS 5.1中
正如你所看到的,如认证执行两次,只为ASP.NET请求。 保护图像的显示使用ASP.NET验证是不可能的经典模式!采用综合模式,任何HTTP请求可以使用ASP.NET处理模块和处理程序,如认证,使ASP.NET的正式成员的IIS请求处理管道。
51
附录
的IIS 7.0提供了支持这种新的一体化模式和IIS 6.0中的典型模式。 第一个选项,您可以配置IIS 7.0在您的Web.config中(这是预先为ASP.NET的MVC框架) ;后者需要一些服务器端的配置。 检查是否正在运行的应用程序中集成或经典模式,请执行下列步骤:
1 。 启动Internet信息服务管理器。
2 。 在连接树状视图中,选择一个应用程序。
3 。行动窗口中,单击基本设置链接,打开编辑对话框中的应用。
4 。确认选定的应用程序池。 如果DefaultAppPool被选中,您的应用程序运行在一个综合的模式和支援的ASP.NET的MVC框架。 如果精英赛的。 NET AppPool被选中,您的应用程序运行中的典型模式,更多的配置是必需的。
主办一个ASP.NET Web应用程序的MVC
如果您或您的网站托管服务提供商访问您的Web服务器的设置,通配符脚本映射可以创造,以便有充分的路由支持。 通配符脚本映射,您可以映射到每个传入请求的ASP.NET框架。 注意,此选项传递到每个请求的ASP.NET框架(甚至图像和CSS文件! ) ,并可能有性能问题。
如果您没有访问Web服务器的设置,您可以修改路线tableto使用的文件扩展名。 而不是寻找看起来就像这样:
52
附录
/产品/所有 网址这个样子: / Products.aspx /所有
这样一来,任何配置的Web服务器是必需的。 然而,有必要作一些修改应用程序的路由表。
您不必配置任何东西 , 如果您的IIS 7.0服务器运行的综合模式。 创建一个通配符脚本映射在IIS 7.0
这里是你如何使通配符脚本映射在Internet Information Services 7.0 : 1 。启动Internet信息服务管理器。
2 。在连接树视图中,选择一个应用程序。
3 。底部工具栏,请确保该功能查看已被选中。 4 。双击处理器映射捷径。
5 。行动窗口中,单击添加通配符脚本映射按钮。
6 。输入的路径Aspnet_isapi.dll文件,这是通常位于: % windir % Microsoft.NETFrameworkv2.0.50727aspnet_isapi.dll 。 7 。输入名称ASP.NET MVC模式。 8 。单击OK按钮。
在此过程中,任何具体的要求,本网站将执行ASP.NET引擎。
创建一个通配符脚本映射在IIS 6.0
这里是你如何使通配符脚本映射在Internet Information Services 6.0 : 1 。 启动Internet信息服务IIS管理器。 2 。 右键单击Web站点上,并选择属性。 3 。 选择主目录选项卡。
4 。 近应用程序设置,单击配置按钮。 5 。 选择映射选项卡。
53
附录
6 。 近通配符应用地图,点击插入按钮。
7 。 输入的路径Aspnet_isapi.dll文件,这是通常位于% windir % Microsoft.NETFrameworkv2.0.50727aspnet_isapi.dll 8 。 取消确认文件是否存在复选框。 9 。 单击OK按钮。
执行以下步骤后,任何请求这一特定网站将由ASP.NET的引擎。
修改路由表中使用的文件扩展名
如果您没有访问您的Web服务器的设置,因此,无法配置通配符脚本映射,有可能修改路由表中使用的文件扩展名。 而不是寻找这样的: /产品/所有 网址这个样子:
/ Products.aspx /所有 在旧版本的IIS ,只有特定的请求映射到ASP.NET的框架。 例如,只有。 NET中, 。 asmx , 。 ascx等,映射到ASP.NET的框架。 扩展等。热媒 , 。 JPG格式 ,的。 gif等,是直接由IIS服务没有任何ASP.NET处理的必要。 因为。如需延长总是映射到ASP.NET的框架,它是一个理想人选触发路由引擎。
54
附录
Global.asax文件中的Web应用程序,修改默认的路线如下所示: 使用System.Web.Mvc ;
使用System.Web.Routing ;
名字空间ModifiedRouteExample (
公共类MvcApplication : System.Web.HttpApplication (
公共静态无效RegisterRoutes ( RouteCollection路线) (
routes.IgnoreRoute ( “ (资源) 。射线衍射/ ( * pathInfo ) ” ) ; routes.MapRoute ( “默认” , / /线路名称
“ (控制器) 。如需/ (行动) / (编号) ” , / /的URL参数
新(控制器= “主页” ,行动= “指数” ,编号= “ ” ) / /参数默认 ) ; )
保护无效Application_Start ( ) (
RegisterRoutes ( RouteTable.Routes ) ; )
55
附录
) )
关键的区别标准路由表和修改路由表是。如需延长: routes.MapRoute ( “默认” ,
“ (控制器) 。如需/ (行动) / (编号) ” ,
新(控制器= “主页” ,行动= “指数” ,编号= “ ” ) ) ;
All of the URLs in your application should now work with a pattern such as {controller}.aspx/{action}.所有网址在您的应用程序现在应该同一种模式,如(控制器) 。如需/ (行动) 。 If you are using hard-coded hyperlinks, make sure that you modify these links.如果您使用的是硬编码的超文本链接,请务必修改这些链接。 Hyperlinks that are generated using the ActionLink() method of the HtmlHelper class should be updated automatically.超文本链接所产生的使用ActionLink ( )方法HtmlHelper类应自动更新
56
附录
58
因篇幅问题不能全部显示,请点此查看更多更全内容
Copyright © 2019- huatuo9.cn 版权所有 赣ICP备2023008801号-1
违法及侵权请联系:TEL:199 18 7713 E-MAIL:2724546146@qq.com
本站由北京市万商天勤律师事务所王兴未律师提供法律服务