物联网技术与应用电子教案课件

上传人:txadgkn****dgknqu... 文档编号:241495361 上传时间:2024-06-29 格式:PPT 页数:129 大小:929.28KB
返回 下载 相关 举报
物联网技术与应用电子教案课件_第1页
第1页 / 共129页
物联网技术与应用电子教案课件_第2页
第2页 / 共129页
物联网技术与应用电子教案课件_第3页
第3页 / 共129页
点击查看更多>>
资源描述
第第5章章物物联网中网中间件件物联网中间件基本概念物联网中间件基本概念5.1物联网中间件关键技术物联网中间件关键技术5.2物联网中间件编程实例物联网中间件编程实例5.3Page 1.第5章物联网中间件物联网中间件基本概念5.1物联网中间件5.1物物联网中网中间件基本概念件基本概念5.1.1 物联网中间件的定义和分类物联网中间件的定义和分类 5.1.2 物联网中间件的基本组成和特点物联网中间件的基本组成和特点 5.1.3 物联网中间件举例物联网中间件举例Page 2.5.1物联网中间件基本概念5.1.1物联网中间件的5.1.1 物联网中间件的定义和分类物联网中间件的定义和分类1.中间件定义:中间件定义:l 独立的系统软件或服务程序。独立的系统软件或服务程序。l 应用于客户机、服务器的操作系统,管理计算应用于客户机、服务器的操作系统,管理计算机资源和网络通信。机资源和网络通信。l 连接两个独立应用程序或独立系统的软件,使连接两个独立应用程序或独立系统的软件,使相连接的系统即使具有不同的接口,利用中间件相连接的系统即使具有不同的接口,利用中间件仍然能相互交换信息。仍然能相互交换信息。l 执行的关键途径是信息传递。执行的关键途径是信息传递。Page 3.5.1.1物联网中间件的定义和分类1.中间件定义:P2中间件示意图中间件示意图Page 4.2中间件示意图Page4.3中间件发展史中间件发展史 最早具有中间件技术思想及功能的软最早具有中间件技术思想及功能的软件是件是IBM的的CICS,而,而CICS不是分布式环不是分布式环境的产物,因此人们一般把境的产物,因此人们一般把Tuxedo作为第作为第一个严格意义上的中间件产品。一个严格意义上的中间件产品。Page 5.3中间件发展史最早具有中间件技3中间件发展史中间件发展史Tuxedo是是1984年在当时属于年在当时属于AT&T的贝的贝尔实验室开发完成的,由于分布式处理当尔实验室开发完成的,由于分布式处理当时并没有在商业应用上获得像今天一样的时并没有在商业应用上获得像今天一样的成功,成功,Tuxedo在很长一段时期里只是实验在很长一段时期里只是实验室产品,后来被室产品,后来被Novell收购,在经过收购,在经过Novell并不成功的商业推广之后,并不成功的商业推广之后,1995年被现在年被现在的的BEA公司收购。公司收购。Page 6.3中间件发展史Tuxedo是1984年在当时属于AT&3中间件发展史中间件发展史BEA公司公司1995年收购年收购Tuxedo才成为一个才成为一个真正的中间件厂商。真正的中间件厂商。IBM的中间件的中间件MQSeries也是也是20世纪世纪90年代的产品,其他年代的产品,其他许多中间件产品也都是最近几年才成熟起许多中间件产品也都是最近几年才成熟起来。来。Page 7.3中间件发展史BEA公司1995年收购Tuxedo才成4中间件主要特点中间件主要特点l满足大量应用的需要满足大量应用的需要l运行于多种硬件和运行于多种硬件和OS平台平台l支持分布计算,提供跨网络、硬件和支持分布计算,提供跨网络、硬件和OS平台的透明的平台的透明的应用或服务的交互应用或服务的交互l支持标准的协议支持标准的协议l支持标准的接口支持标准的接口Page 8.4中间件主要特点满足大量应用的需要Page8.5什么是物联网中间件什么是物联网中间件在物联网中采用中间件技术,以在物联网中采用中间件技术,以实现多个系统和多种技术之间的资实现多个系统和多种技术之间的资源共享,最终组成一个资源丰富、源共享,最终组成一个资源丰富、功能强大的服务系统。功能强大的服务系统。Page 9.5什么是物联网中间件在物联网中采用中间件技术,以实现多6物联网中间件的分类物联网中间件的分类基于目的和实现机制的不同,业内将中间件分基于目的和实现机制的不同,业内将中间件分为以下几类:为以下几类:远程过程调用中间件(远程过程调用中间件(Remote Procedure Call)面向消息的中间件(面向消息的中间件(Message-Oriented Middleware)对象请求代理中间件(对象请求代理中间件(Object Request Brokers)Page 10.6物联网中间件的分类基于目的和实现机制的不同,业内将中 几类中间件可向上提供不同形式的通几类中间件可向上提供不同形式的通信服务,在这些基本的通信平台之上,信服务,在这些基本的通信平台之上,可构筑各种框架,为应用程序提供不同可构筑各种框架,为应用程序提供不同领域内的服务,如事务处理监控器、分领域内的服务,如事务处理监控器、分布数据访问、对象事务管理器等。布数据访问、对象事务管理器等。Page 11.几类中间件可向上提供不同形式的通信服务,在这些基7物联网中间件发展的三个阶段物联网中间件发展的三个阶段l 应用程序中间件阶段(应用程序中间件阶段(Application Middleware)l 架构中间件阶段(架构中间件阶段(Infrastructure Middleware)l 解决方案中间件阶段(解决方案中间件阶段(Solution Middleware)。)。Page 12.7物联网中间件发展的三个阶段应用程序中间件阶段(A 目前,物联网中间件最主要的代表是目前,物联网中间件最主要的代表是RFID中间件,其他的还有嵌入式中间件、中间件,其他的还有嵌入式中间件、数字电视中间件、通用中间件、数字电视中间件、通用中间件、M2M物联物联网中间件等。下面,重点介绍一下网中间件等。下面,重点介绍一下RFID中中间件。间件。Page 13.目前,物联网中间件最主要的代表是RF RFID中间件扮演中间件扮演RFID标签和应用程序标签和应用程序之间的中介角色,从应用程序端使用中间之间的中介角色,从应用程序端使用中间件所提供一组通用的应用程序接口(件所提供一组通用的应用程序接口(API),),即能连到即能连到RFID读写器,读取读写器,读取RFID标签数据。标签数据。Page 14.RFID中间件扮演RFID标签和应用程序之间的中介角色这样一来,即使存储这样一来,即使存储RFID标签数据的数标签数据的数据库软件或后端应用程序增加或改由其他据库软件或后端应用程序增加或改由其他软件取代,或者读写软件取代,或者读写RFID读写器种类增加读写器种类增加等情况发生时,应用端不需修改也能处理,等情况发生时,应用端不需修改也能处理,省去多对多连接的维护复杂性问题。省去多对多连接的维护复杂性问题。Page 15.这样一来,即使存储RFID标签数据的数据库软件或后端应用8RFID中间件的三大类发展阶段中间件的三大类发展阶段(1)应用程序中间件发展阶段)应用程序中间件发展阶段(2)基础架构中间件发展阶段)基础架构中间件发展阶段(3)解决方案中间件()解决方案中间件(Solution Middleware)发展阶段。)发展阶段。Page 16.8RFID中间件的三大类发展阶段(1)应用程序中间件发展阶5.1.2 物联网中间件的基本组成和物联网中间件的基本组成和特点特点 基本组成:基本组成:l实现全球物品的统一编码,给物品打上电实现全球物品的统一编码,给物品打上电子标签。子标签。l要实现每个小的应用环境或系统的标准化要实现每个小的应用环境或系统的标准化以及它们之间的通信,必须设置一个通用以及它们之间的通信,必须设置一个通用的平台和接口,也就是中间件。的平台和接口,也就是中间件。Page 17.5.1.2物联网中间件的基本组成和特点基本组成:P以以RFID为例,下图描述了中间件在系统中为例,下图描述了中间件在系统中的位置和作用。的位置和作用。Page 18.以RFID为例,下图描述了中间件在系统中的位置和作用。Pag物联网特点:物联网特点:(1)独立于架构。)独立于架构。(2)数据流。)数据流。(3)处理流。)处理流。(4)标准化。)标准化。Page 19.物联网特点:Page19.(1)ASPIRE特征:轻量级、可重新编程、智能、适合当特征:轻量级、可重新编程、智能、适合当前标准、可升级、安全性高、完整。前标准、可升级、安全性高、完整。ASPIRE的解决办法是完全开源和免版权费的解决办法是完全开源和免版权费用,这大大降低了总的开发成本。用,这大大降低了总的开发成本。5.1.3 物联网中间件举例物联网中间件举例Page 20.(1)ASPIRE5.1.3物联网中间件举例Page(2)Hydra定位于操作系统和应用之间的中间件层。定位于操作系统和应用之间的中间件层。中间件包含了众多软件组成部分,它们被设中间件包含了众多软件组成部分,它们被设计用于处理各种任务,以完成一个有效利用计用于处理各种任务,以完成一个有效利用成本的智能物联网应用开发过程。成本的智能物联网应用开发过程。可以在新的和已经存在的分布式设备网络上可以在新的和已经存在的分布式设备网络上协作。协作。5.1.3 物联网中间件举例物联网中间件举例Page 21.(2)Hydra5.1.3物联网中间件举例Pa(2)Hydra它是基于语义模式驱动的架构。它是基于语义模式驱动的架构。Hydra中间件利于实现环境感知行为和解决中间件利于实现环境感知行为和解决在资源受限设备中处理数据的持久性问题。在资源受限设备中处理数据的持久性问题。Hydra安全框架部署了一个规则框架。安全框架部署了一个规则框架。虚拟化结构。虚拟化结构。5.1.3 物联网中间件举例物联网中间件举例Page 22.(2)Hydra5.1.3物联网中间件举例Pa5.2物物联网中网中间件关件关键技技术5.2.1 web服务服务 5.2.2 嵌入式中间件技术嵌入式中间件技术 5.2.3 万维物联网万维物联网 5.2.4 上下文感知技术上下文感知技术Page 23.5.2物联网中间件关键技术5.2.1web服务PalWeb服务(服务(Web Services)就是一种可以通)就是一种可以通过过Web描述、发布、定位和调用的模块化应描述、发布、定位和调用的模块化应用。用。lWeb服务可以执行多种功能,从简单的请求服务可以执行多种功能,从简单的请求到复杂的业务过程。到复杂的业务过程。l一旦一旦Web服务被部署,其他的应用程序或是服务被部署,其他的应用程序或是Web服务就能够发现并且调用这个部署的服服务就能够发现并且调用这个部署的服务。务。5.2.1 web服务服务 Page 24.Web服务(WebServices)就是一种可以通过Web Web服务(服务(Web Services)向外界提供一个)向外界提供一个能够通过能够通过Web进行调用的进行调用的API(Application Programming Interface,应用程序编程接口),应用程序编程接口),能够用编程的方法通过能够用编程的方法通过Web来调用这个应用程来调用这个应用程序。我们把调用这个序。我们把调用这个Web Services的应用程序的应用程序叫做客户。叫做客户。Page 25.Web服务(WebServices)向外界提供一个 Web Services举例:举例:创建一个创建一个Web Services,功能是返回当前的,功能是返回当前的天气情况。天气情况。Page 26.WebServices举例:创建一个Web Web Services定义:定义:建立可互操作的分布式应用程序的平台。建立可互操作的分布式应用程序的平台。Web Services平台是一套标准,它定义了应用平台是一套标准,它定义了应用程序如何在程序如何在Web上实现互操作性。上实现互操作性。Web Services为实现物联网的应用与服务提供了一为实现物联网的应用与服务提供了一个基本的框架。个基本的框架。Page 27.WebServices定义:Page27.Web Services通过简单对象访问协议通过简单对象访问协议(Simple Object Access Protocol,SOAP)来)来调用。调用。SOAP是一种轻量级的消息协议,它允许用是一种轻量级的消息协议,它允许用任何语言编写的任何类型的对象在任何平台之任何语言编写的任何类型的对象在任何平台之上相互通信。上相互通信。Page 28.WebServices通过简单对象访问协议(Si SOA(Service-Oriented Architecture,面向,面向服务的体系结构)是一个组件模型,它将应用服务的体系结构)是一个组件模型,它将应用程序的不同功能单元通过这些服务之间定义的程序的不同功能单元通过这些服务之间定义的接口和协议联系起来。接口和协议联系起来。Page 29.SOA(Service-OrientedArch接口是采用中立的方式进行定义的,它应该接口是采用中立的方式进行定义的,它应该独立于实现服务的硬件平台、操作系统和编程独立于实现服务的硬件平台、操作系统和编程语言。这使得构建在各种这样的系统中的服务语言。这使得构建在各种这样的系统中的服务可以用一种统一和通用的方式进行交互。这种可以用一种统一和通用的方式进行交互。这种具有中立的接口定义的特征称为服务之间的松具有中立的接口定义的特征称为服务之间的松耦合。耦合。Page 30.接口是采用中立的方式进行定义的,它应该独立于实现服务的硬松耦合系统的优势主要有两点:松耦合系统的优势主要有两点:一点是它具有很高的灵活性一点是它具有很高的灵活性另一点是当组成整个应用程序的每个服务的另一点是当组成整个应用程序的每个服务的内部结构和实现逐渐地发生改变时,它能够内部结构和实现逐渐地发生改变时,它能够继续存在继续存在Page 31.松耦合系统的优势主要有两点:Page31.嵌入式系统是以应用为中心,以计算机嵌入式系统是以应用为中心,以计算机技术为基础,并且软硬件可裁剪,适用于技术为基础,并且软硬件可裁剪,适用于应用系统对功能、可靠性、成本、体积、应用系统对功能、可靠性、成本、体积、功耗有严格要求的专用计算机系统。功耗有严格要求的专用计算机系统。5.2.2 嵌入式中间技术服务嵌入式中间技术服务 Page 32.嵌入式系统是以应用为中心,以计算机技术为基础,并且 嵌入式中间件是在嵌入式应用程序和操嵌入式中间件是在嵌入式应用程序和操作系统、硬件平台之间嵌入的一个中间层,作系统、硬件平台之间嵌入的一个中间层,通常定义成一组较为完整的、标准的应用通常定义成一组较为完整的、标准的应用程序程序接口接口。Page 33.嵌入式中间件是在嵌入式应用程序和操作系统、硬件平台1嵌入式嵌入式Web嵌入式嵌入式Web服务主要具有以下优点。服务主要具有以下优点。(1)统一的客户界面)统一的客户界面(2)平台独立性)平台独立性(3)高可扩展性)高可扩展性(4)并行性与分布性)并行性与分布性Page 34.1嵌入式Web嵌入式Web服务主要具有以下优点。Page1嵌入式嵌入式WebWeb服务器服务器对对Web服务器而言,在物理设备上是指服务器而言,在物理设备上是指存放那些供客户访问的信息资源的计算机或存放那些供客户访问的信息资源的计算机或嵌入式系统;在软件上是指能够按照客户的嵌入式系统;在软件上是指能够按照客户的请求将信息资源传送给客户的应用程序。请求将信息资源传送给客户的应用程序。Page 35.1嵌入式WebWeb 服务器Page35.1嵌入式嵌入式WebWeb客户端客户端对对Web客户端而言,在物理设备上是指客户客户端而言,在物理设备上是指客户所使用的本地计算机或者嵌入式设备;在软所使用的本地计算机或者嵌入式设备;在软件上是指能够接受件上是指能够接受Web服务器上的信息资源服务器上的信息资源并展现给客户的应用程序。并展现给客户的应用程序。Page 36.1嵌入式WebWeb 客户端Page36.嵌入式嵌入式Web服务器技术的核心是服务器技术的核心是HTTP协协议引擎。嵌入式议引擎。嵌入式Web服务器通过服务器通过CGI接口和接口和数据动态显示技术,可以在数据动态显示技术,可以在HTML文件或表文件或表格中插入运行代码,供格中插入运行代码,供RAM读取读取/写入数据。写入数据。Page 37.嵌入式Web服务器技术的核心是HTTP协议引擎。嵌典型的嵌入式典型的嵌入式Web服务器系统模型服务器系统模型Page 38.典型的嵌入式Web服务器系统模型Page38.CGI是通用网关接口(是通用网关接口(CommonGatewayInterface)的缩写。它是)的缩写。它是Web服服务器主机与外部扩展应用程序交互的一种标务器主机与外部扩展应用程序交互的一种标准接口。准接口。它提供了将参数传递给程序并将结果返它提供了将参数传递给程序并将结果返回给浏览器的一种机制。回给浏览器的一种机制。Page 39.CGI是通用网关接口(CommonGatewayCGI工作流程示意图工作流程示意图Page 40.CGI工作流程示意图Page40.CGI程序可以通过以下两种调程序可以通过以下两种调用方式来获取客户请求的内容:用方式来获取客户请求的内容:一是通过一是通过URL直接调用直接调用二通过交互式表单(二通过交互式表单(Form)来调用。来调用。Page 41.CGI程序可以通过以下两种调用方式来获取客户请求的内容:P1JAVA VM除了利用除了利用Web实现中间件外,实现中间件外,JavaVM(Java虚拟机)以其良好的跨平台特虚拟机)以其良好的跨平台特性成为了物联网中间件的重要平台。性成为了物联网中间件的重要平台。Page 42.1JAVAVM除了利用Web实现中间件外,JavaVJava编译执行流程图编译执行流程图Page 43.Java编译执行流程图Page43.每个每个JavaVM都有两种机制,一个是都有两种机制,一个是装载具有合适名称的类(类或是接口),装载具有合适名称的类(类或是接口),叫做类装载子系统;另一个是负责执行包叫做类装载子系统;另一个是负责执行包含在已装载的类或接口中的指令,叫做运含在已装载的类或接口中的指令,叫做运行引擎。行引擎。Page 44.每个JavaVM都有两种机制,一个是装载具有合适名称的类每个每个JavaVM又包括方法区、又包括方法区、Java堆、堆、Java栈、程序计数器和本地方法栈这栈、程序计数器和本地方法栈这5个部个部分,这几个部分和类装载机制与运行引擎分,这几个部分和类装载机制与运行引擎机制一起组成机制一起组成JavaVM的体系结构。的体系结构。Page 45.每个JavaVM又包括方法区、Java堆、Java栈、程Java VM体系结构图体系结构图Page 46.JavaVM体系结构图Page46.近几年来随着物联网的兴起,越来越多近几年来随着物联网的兴起,越来越多的研究正在考虑将的研究正在考虑将Web技术与物联网技术相技术与物联网技术相结合。结合。基于这样的思想就产生了万维物联网基于这样的思想就产生了万维物联网(Web of Things)的概念。)的概念。5.2.3 万维物联网万维物联网 Page 47.近几年来随着物联网的兴起,越来越多的研究正在考虑将Web of Things具有以下特性:具有以下特性:(1)使用)使用HTTP作为应用协议,作为应用协议,HTTP不仅不仅是用来连接传感器和网络的传输协议。是用来连接传感器和网络的传输协议。(2)通过)通过REST接口(或接口(或REST API)将智能)将智能设备的同步功能开放出来。设备的同步功能开放出来。Page 48.WebofThings具有以下特性:Page48.(3)智能设备的异步功能开放采用广为接受)智能设备的异步功能开放采用广为接受的的Web聚合标准。聚合标准。(4)前端利用)前端利用Web的呈现方式,提供直观、的呈现方式,提供直观、友好的用户体验。友好的用户体验。(5)开放平台。)开放平台。Page 49.(3)智能设备的异步功能开放采用广为接受的Web聚合标准。P通过通过Web of Things,可以为物联网应用带来了,可以为物联网应用带来了众多便利,以下列举其几点优势:众多便利,以下列举其几点优势:减少智能设备安装、整合、执行和维护开销;减少智能设备安装、整合、执行和维护开销;加快智能设备安装和移除速度;加快智能设备安装和移除速度;对智能设备可进行移动和临时安装;对智能设备可进行移动和临时安装;任何时刻、任何地点都可以提供实时信息服务;任何时刻、任何地点都可以提供实时信息服务;增强可视化、可预见、可预报和维护日程的能力;增强可视化、可预见、可预报和维护日程的能力;确保各类应用有效和高效率执行。确保各类应用有效和高效率执行。Page 50.通过WebofThings,可以为物联网应用带来了众Web of Things的基本框架由以下的基本框架由以下3部分组成:部分组成:(1)网络节点集成接口()网络节点集成接口(Integration Interface of Network Node)(2)基于)基于REST风格终端节点(风格终端节点(Terminal Nodes Based on REST Style)对智能设备可进行移动和临)对智能设备可进行移动和临时安装;时安装;(3)网络)网络Mashup功能(功能(Web Mashup Function)增)增强可视化、可预见、可预报和维护日程的能力;强可视化、可预见、可预报和维护日程的能力;Page 51.WebofThings的基本框架由以下3部分组成:Pag基于基于REST风格的风格的Web of Things架构架构Page 52.基于REST风格的WebofThings架构Page5 上下文感知技术是用来描述一种信息空上下文感知技术是用来描述一种信息空间和物理空间相融合的重要支撑技术,它间和物理空间相融合的重要支撑技术,它能够使用户可用的计算环境和软件资源动能够使用户可用的计算环境和软件资源动态地适应相关的历史状态信息,从而根据态地适应相关的历史状态信息,从而根据环境的变化自动地采取符合用户需要或者环境的变化自动地采取符合用户需要或者设定的行动。设定的行动。5.2.4 上下文感知技术上下文感知技术 Page 53.上下文感知技术是用来描述一种信息空间和物理空间相融 上下文感知系统首先必须知道整个物理上下文感知系统首先必须知道整个物理环境、计算环境、用户状态等方面的静态环境、计算环境、用户状态等方面的静态和动态信息,即上下文(和动态信息,即上下文(context)。)。上下文能力的获取依赖于上下文感知技上下文能力的获取依赖于上下文感知技术,主要包括上下文的采集、建模、推理术,主要包括上下文的采集、建模、推理及融合等。上下文感知技术是实现服务自及融合等。上下文感知技术是实现服务自发性和无缝移动性的关键。发性和无缝移动性的关键。Page 54.上下文感知系统首先必须知道整个物理环境、计算环境、(1)上下文采集)上下文采集 上下文的应用领域不同,上下文的采集上下文的应用领域不同,上下文的采集方法也有所不同。通常情况下,有方法也有所不同。通常情况下,有3种方法:种方法:传感类上下文、派生出的上下文(根据信传感类上下文、派生出的上下文(根据信息记录和用户设定)、明确提供的上下文。息记录和用户设定)、明确提供的上下文。采集技术属于物联网感知层的技术。采集技术属于物联网感知层的技术。Page 55.(1)上下文采集Page55.(2)上下文建模)上下文建模 要正确地利用上下文信息,必须对获得要正确地利用上下文信息,必须对获得的上下文信息进行建模。上下文信息模型的上下文信息进行建模。上下文信息模型反映了设计者对上下文的理解,决定了使反映了设计者对上下文的理解,决定了使用什么方法把物理世界里面的一些无意义用什么方法把物理世界里面的一些无意义和无规律的数据转化成计算世界里的逻辑和无规律的数据转化成计算世界里的逻辑结构语言,为实现上下文的正确运行打下结构语言,为实现上下文的正确运行打下基础。基础。Page 56.(2)上下文建模Page56.(3)上下文推理)上下文推理 系统中的所有上下文信息构成上下文知系统中的所有上下文信息构成上下文知识库,基于这些知识库,可以进行上下文识库,基于这些知识库,可以进行上下文的推理。的推理。实现推理一般有两种方式,一是将逻辑实现推理一般有两种方式,一是将逻辑规则用程序编码实现,二是采用基于规则规则用程序编码实现,二是采用基于规则的推理系统。的推理系统。Page 57.(3)上下文推理Page57.(4)上下文融合)上下文融合在上下文感知计算中,要获得连续的上在上下文感知计算中,要获得连续的上下文的解决方法,必须联合相关的上下文下文的解决方法,必须联合相关的上下文服务从而聚集上下文信息,称为上下文融服务从而聚集上下文信息,称为上下文融合。合。这种上下文的融合类似于目前已被广泛这种上下文的融合类似于目前已被广泛应用的传感器融合,其关键在于处理不同应用的传感器融合,其关键在于处理不同上下文服务边界之间的无缝融合。上下文服务边界之间的无缝融合。Page 58.(4)上下文融合Page58.5.3物物联网中网中间件件编程程实例例5.3.1利利用用Ruby on Rails开开发发基基于于 REST风格的中间件风格的中间件5.3.2 用用J2EE开发开发Web Service中间件中间件Page 59.5.3物联网中间件编程实例5.3.1利用RubyonR5.3.1利用利用Ruby on Rails开发基于开发基于 REST风格的中间件风格的中间件 Ruby on Rails,简称简称RoR或或Rails,是是一个使用一个使用Ruby语言写的开源网络应用框架,语言写的开源网络应用框架,能能使开发变得更加容易使开发变得更加容易,目前我们用其,目前我们用其致致力于力于Web应用的开发、部署和维护。应用的开发、部署和维护。Page 60.5.3.1利用RubyonRails开发基于 像其他像其他Web框架一样,框架一样,Rails采用采用MVC的开发框架。但相比的开发框架。但相比于于其他框架,其他框架,Rails更加简单易用更加简单易用。这是因为:。这是因为:1、Ruby语言的特性:自然、简介、快速,语言的特性:自然、简介、快速,有丰富的类库,并且全面地支持面向对象有丰富的类库,并且全面地支持面向对象的程序设计。的程序设计。Page 61.Page61.2、Rails的基本设计原则的基本设计原则:“不要重复你不要重复你自己自己”(Dont Repeat Yourself,简称,简称DRY)以及)以及“惯例重于配置惯例重于配置”。Page 62.2、Rails的基本设计原则:“不要重复你自己”(Don Rails是一种敏捷的框架,它强调与客是一种敏捷的框架,它强调与客户的交互,随时准备户的交互,随时准备“响应变化响应变化”。Rails提倡测试驱动开发,所有的提倡测试驱动开发,所有的Rails应用内嵌对于测试的支持。应用内嵌对于测试的支持。Page 63.Rails是一种敏捷的框架,它强调与客户的交1Ruby on Rails开发环境搭建开发环境搭建 Ruby on Rails可以运行在各种操作可以运行在各种操作系统下,其平台是独立的。总的来说,要系统下,其平台是独立的。总的来说,要安装运行一个安装运行一个Rails应用需要下列组件。应用需要下列组件。Page 64.1RubyonRails开发环境搭建(1)Ruby解释器:我们在此使用解释器:我们在此使用Ruby-1.8.6。这个版本的解析器可以很好的满足。这个版本的解析器可以很好的满足Rails以及后续一些以及后续一些Ruby Gems的要求。的要求。Page 65.(1)Ruby解释器:我们在此使用Ruby-1.8.6。这(2)RubyGems:它是一个标准的:它是一个标准的Ruby程序包管理器,可以很方便的在线安装各程序包管理器,可以很方便的在线安装各种种Ruby程序包,包括程序包,包括Rails等。等。Page 66.(2)RubyGems:它是一个标准的Ruby程序包管理器 (3)Ruby on Rails框架:为简单起见,框架:为简单起见,我们采用我们采用gem自动进行安装,在撰写本书自动进行安装,在撰写本书时时Rails的最新版本为的最新版本为2.3.8。Page 67.(3)RubyonRails框架:为简单起见,我们 (4)数据库:)数据库:Rails的最新版本默认是采的最新版本默认是采用用SQLite 3的数据库,在此为了通用性考的数据库,在此为了通用性考虑,我们采用最常用的虑,我们采用最常用的MySQL数据库。数据库。Page 68.(4)数据库:Rails的最新版本默认是采用SQLit(5)一些必要的库:采用)一些必要的库:采用MySQL数据库数据库只需要安装只需要安装mysql gem包即可。如果使用包即可。如果使用Rails默认的数据库则需安装默认的数据库则需安装sqlite3-ruby gem包。包。Page 69.(5)一些必要的库:采用MySQL数据库只需要安装mysq 下面我们主要介绍在下面我们主要介绍在Windows下安装下安装部署部署Rails的具体过程。由于很多程序针对的具体过程。由于很多程序针对Windows平台都有很方便的一键式安装,平台都有很方便的一键式安装,所以在所以在Windows下安装下安装Rails还是很轻松的。还是很轻松的。Page 70.下面我们主要介绍在Windows下安装部署R (1)安装)安装Ruby解释器。可以从解释器。可以从Ruby官网官网(http:/www.ruby-lang.org/en/downloads/)上)上下载下载Ruby-1.8.6 One-Click的安装包的安装包。为了检验是否安装成功,可以从为了检验是否安装成功,可以从Windows的开始菜单点击的开始菜单点击“运行运行”,输入,输入“cmd”,启动,启动Windows 命令提示符,然后输入命令提示符,然后输入“ruby v”(回车),如能正确显示(回车),如能正确显示Ruby程序程序的版本号则证明安装成功。的版本号则证明安装成功。Page 71.(1)安装Ruby解释器。可以从Ruby官网(http (2)安装)安装RubyGems。可以从。可以从RubyForge(http:/rubyforge.org/)或是)或是RubyGems的官网(的官网(http:/rubygems.org/)上下)上下载最新的安装包。下载完成后将该压缩包进行解载最新的安装包。下载完成后将该压缩包进行解压,我们假设解压后根目录为压,我们假设解压后根目录为$dir目录;然后目录;然后启动命令提示符,并切换到启动命令提示符,并切换到$dir中,然后输入中,然后输入ruby setup.rb运行运行RubyGems的安装程序。为了的安装程序。为了验证是否安装成功,可以从验证是否安装成功,可以从Windows命令提示符命令提示符中输入中输入“gem v”(回车);如能正确显示(回车);如能正确显示RubyGems的版本号则安装成功。的版本号则安装成功。Page 72.(2)安装RubyGems。可以从RubyForge(3)安装)安装Ruby on Rails。在命令提示符。在命令提示符中输入中输入“gem install rails”(回车),然(回车),然后将会在线安装后将会在线安装Rails的程序以及的程序以及Rails的的一些依赖包。安装完成后可以通过一些依赖包。安装完成后可以通过“rails v”命令查看命令查看Rails的版本号来的版本号来验证是否安装成功。验证是否安装成功。Page 73.(3)安装RubyonRails。在命令提示符中输入“g(4)MySQL数据库。在数据库。在MySQL官网上官网上下载最新的下载最新的MySQL-5.1版本的安装程序,版本的安装程序,然后进行安装即可。具体安装过程也可然后进行安装即可。具体安装过程也可参考官方的安装说明参考官方的安装说明(http:/ 74.(4)MySQL数据库。在MySQL官网上下载最新的MySQ(5)安装)安装mysql gem包。在命令提示符中输包。在命令提示符中输入入“gem install mysql”进行在线安装。进行在线安装。Page 75.(5)安装mysqlgem包。在命令提示符中输入“gem 至至此此Rails的的安安装装过过程程就就已已经经全全部部完完成成。在在Linux下下的的安安装装也也大大同同小小异异,主主要要是是安安装装Ruby和和mysql时时略略有有不不同同,其其他他安安装装步步骤骤都都和和Windows下下安安装装相相同同。Page 76.至此Rails的安装过程就已经全部完成。在Linux下2Ruby on Rails编程实例编程实例 下面的章节将简单介绍一个关于温下面的章节将简单介绍一个关于温度的度的Rails物联网中间件实例。物联网中间件实例。Rails是一个是一个网络应用框架,它可以很方便地处理各种网络应用框架,它可以很方便地处理各种应用请求,客户端和应用请求,客户端和Rails服务器之间采用服务器之间采用统一的统一的REST接口,它们通过接口,它们通过HTTP协议来协议来向服务器端发送请求。向服务器端发送请求。Page 77.2RubyonRails编程实例下 本示例的系统整体架构图如图本示例的系统整体架构图如图5-8所所示。在该示例中温度传感器也认为是示。在该示例中温度传感器也认为是Rails服务器的一个客户端,它会实时地向服务服务器的一个客户端,它会实时地向服务器端发送数据,服务器会把这些数据处理器端发送数据,服务器会把这些数据处理后保存到数据库中以供浏览器或其他客户后保存到数据库中以供浏览器或其他客户端调用。服务器的另一种客户端是浏览器端调用。服务器的另一种客户端是浏览器或是手机或是手机Widget应用,这些客户可以向服应用,这些客户可以向服务器端发送请求来获取自己所关心的数据。务器端发送请求来获取自己所关心的数据。Page 78.本示例的系统整体架构图如图5-8所示。在该示例中 本示例中采用本示例中采用REST的方式来进行服务器端的方式来进行服务器端的设计,我们将温度(的设计,我们将温度(temperature)看做一种资)看做一种资源,每个资源有相应的源,每个资源有相应的id、温度值、更新时间、设、温度值、更新时间、设备名称等信息。本示例中对于温度资源的操作只备名称等信息。本示例中对于温度资源的操作只包括包括Put和和Get两种操作,这两种操作分别通过两种操作,这两种操作分别通过HTTP的的Post和和Get请求来完成。具体为温度传感请求来完成。具体为温度传感器通过器通过Post请求向服务器上传温度数据,而浏览器请求向服务器上传温度数据,而浏览器通过通过Get请求来从服务器获得温度数据的记录。请求来从服务器获得温度数据的记录。Page 79.本示例中采用REST的方式来进行服务器端的 对于对于REST中的其他资源操作如中的其他资源操作如Update、Destroy等操作在本示例中可以不需要,所以进等操作在本示例中可以不需要,所以进行了省略。行了省略。Ruby on Rails是支持所有的是支持所有的REST操操作的,可以通过作的,可以通过scaffold来进行实现。假定对于来进行实现。假定对于这种资源的这种资源的Put操作对应操作对应HTTP的的Post请求,请求请求,请求的的URL为为root_dir/temperature/post_temperature;获取资源的;获取资源的Get操作对应操作对应HTTP的的Get请求,请求的请求,请求的URL为为root_dir/temperature/index。Page 80.对于REST中的其他资源操作如Upd 在此示例中采用在此示例中采用mysql数据库,其实由数据库,其实由于于Rails对于不同数据库接口有很好的封装和对于不同数据库接口有很好的封装和适配,采用不同的数据库不会对代码产生太适配,采用不同的数据库不会对代码产生太大影响。针对该示例,数据库中只建立一张大影响。针对该示例,数据库中只建立一张表来进行数据的存储。表的结构如表表来进行数据的存储。表的结构如表5-1所示所示,其中,其中id字段用于标识每条记录,字段用于标识每条记录,value字段字段记录温度值,记录温度值,time字段记录上传的时间,字段记录上传的时间,device_id字段记录上传数据的设备标识。字段记录上传数据的设备标识。Page 81.在此示例中采用mysql数据库,其实由于Ra图图图图5-85-8温度传感中间件系统架构示意图温度传感中间件系统架构示意图温度传感中间件系统架构示意图温度传感中间件系统架构示意图表表表表5-15-1温度温度温度温度表结构表结构表结构表结构idvaluetimedevice_idPage 82.图5-8温度传感中间件系统架构示意图表5-1温度表结构idv(1 1)建立工程。)建立工程。建立一个名称为建立一个名称为smart_sensor的工程,首先的工程,首先在命令提示符中进入待建工程的目录,在此使用在命令提示符中进入待建工程的目录,在此使用F:example目录,然后输入目录,然后输入rails-database=mysql smart_sensor,如图,如图5-9所示。所示。图图图图5-95-9建立建立建立建立smart_sensorsmart_sensor工程工程工程工程本示例的实现步骤包括以下几步本示例的实现步骤包括以下几步:Page 83.图5-9建立smart_sensor工程本示例的实现步骤包括 此时修改此时修改smart_sensorconfigdatabase.yml文件,在这个文件中会有文件,在这个文件中会有3个数据库配置选项,分个数据库配置选项,分别为别为development、test、production,在此只修改,在此只修改development选项即可,修改成如下格式。选项即可,修改成如下格式。development:adapter:mysqlencoding:utf8reconnect:falsedatabase:smart_sensor_developmentpool:5username:rootpassword:mysqlhost:localhost(2 2)建立数据)建立数据)建立数据)建立数据库库。Page 84.此时修改smart_sensorc 需要修改的主要是需要修改的主要是username和和password,修改成修改成mysql数据库的用户名和密码即可。然后在数据库的用户名和密码即可。然后在命令行根目录命令行根目录smart_sensor下执行下执行rake db:create来来建立数据库,数据库名称默认为建立数据库,数据库名称默认为smart_sensor_development,如图,如图5-10所示。下面所示。下面的命令如没有特别说明均是在的命令如没有特别说明均是在smart_sensor根目录根目录下执行的。下执行的。图图图图5-105-10建立数据库建立数据库建立数据库建立数据库Page 85.需要修改的主要是username和p 下面需要建立基本的数据表,在下面需要建立基本的数据表,在Rails中数中数据表是由一个据表是由一个Model来管理的,可以用来管理的,可以用Rails的命令的命令来建立基本的来建立基本的Model。在根目录下输入。在根目录下输入ruby script generate model temperature,如图,如图5-11所示。所示。图图图图5-115-11建立基本的建立基本的建立基本的建立基本的ModelModel(3 3)建立基本的)建立基本的)建立基本的)建立基本的ModelModel类类。Page 86.下面需要建立基本的数据表,在Rail 此时在此时在dbmigrate目录下会生成一个目录下会生成一个xxx_create_temperatures.rb的文件,打开该的文件,打开该文件并修改成如下结果。这里主要是设置数文件并修改成如下结果。这里主要是设置数据表的各个字段的类型以及其他细节。据表的各个字段的类型以及其他细节。Page 87.此时在dbmigrate目录下会生classCreateTemperatures4,:scale=1t.datetime:timet.integer:device_idt.timestampsendenddefself.downdrop_table:temperaturesendend然后执行然后执行rakedb:migrate命令将命令将temperatures表的结构写入数据库。表的结构写入数据库。Page 88.classCreateTemperaturesAct 控制器的功能主要是对外部的请求进行处理控制器的功能主要是对外部的请求进行处理并返回相应的结果。此处可以通过并返回相应的结果。此处可以通过Rails的基本命的基本命令来建立基本的控制器。在根目录下输入命令令来建立基本的控制器。在根目录下输入命令ruby scriptgenerate controller temperature index,如图,如图5-12所示。所示。图图图图5-125-12生成基本的控制器生成基本的控制器生成基本的控制器生成基本的控制器(4 4)建立)建立)建立)建立temperaturetemperature控制器。控制器。控制器。控制器。Page 89.控制器的功能主要是对外部的请求进行处 classTemperatureControllertemperaturesendend然后修改然后修改appcontrollerstemperature_controller.rb文件文件以真正实现该示例需要的方法。在此我们将实现以真正实现该示例需要的方法。在此我们将实现index方法以输出所有的方法以输出所有的temperature数据,并且数据,并且增加一个添加数据的方法以把传感器发来的数据存增加一个添加数据的方法以把传感器发来的数据存入数据库,具体修改如下。入数据库,具体修改如下。Page 90.classTemperatureCo#processthepostrequestandstorethedatainthedatabasedefpost_temperaturebegin#constructaninstanceofTemperaturea_temperature=Temperature.new(:value=params:value,:time=params:time,:device_id=params:device_id)#storea_temperatureinthedatabasea_temperature.saverescue#returnFailiffailsstorethedatarender:text=Failreturnend#returnOKifallsuccessrender:text=OKreturnendendPage 91.#processthepostrequest 这里增加了两个方法,这里增加了两个方法,index和和post_temperature。其中。其中index方法用于输出方法用于输出当前存入数据库的所有温度的记录,当前存入数据库的所有温度的记录,post_temperature方法是用来处理传感器发方法是用来处理传感器发来的提交数据的请求,并把这些温度数据存来的提交数据的请求,并把这些温度数据存入数据库,执行成功则返回入数据库,执行成功则返回“OK”,否则返,否则返回回“Fail”。Page 92.这里增加了两个方法,index和p 在此因为在此因为index方法会返回一个方法会返回一个html文件,文件,来控制返回结果的显示。在来控制返回结果的显示。在Rails中会在中会在views目录目录下对返回的页面文件进行集中的管理。在此需要修下对返回的页面文件进行集中的管理。在此需要修改改appviewstemperatureindex.html.erb文件,修改结果如下。文件,修改结果如下。(5 5)修改)修改)修改)修改viewview页页面。面。面。面。Page 93.在此因为index方法会返回一个htListingtemperaturesPage 94.Pag 为了让为了让Rails当收到某个请求时知道该调用当收到某个请求时知道该调用哪个控制器下的哪个方法来进行处理,在此需要修哪个控制器下的哪个方法来进行处理,在此需要修改改Rails的路由以符合该示例的要求。在的路由以符合该示例的要求。在Rails中修中修改路由也十分简单,只需要修改改路由也十分简单,只需要修改configroutes.rb文文件即可。在该文件的最后已经有两条默认的路由格件即可。在该文件的最后已经有两条默认的路由格式,需要修改这些路由规则以符合我们的需要,具式,需要修改这些路由规则以符合我们的需要,具体如下。体如下。map.connecttemperature/post_temperature,:controller=temperature,:action=post_temperature,:conditions=:method=:postmap.connect:controller/:actionmap.connect:controller/:action.:format(6 6)修改路由。)修改路由。)修改路由。)修改路由。Page 95.为了让Rails当收到某个请求时知道 当收到发往当收到发往 temperature/post_temperature这这个路径的个路径的Post请求时调用请求时调用temperature控制器的控制器的post_temperature方法来进行处理。方法来进行处理。当收到当收到:controller/:action格式的路由时,则将格式的路由时,则将第一个参数作为第一个参数作为controller,第二个作为,第二个作为action。例。例如发送如发送temperature/index,此时则会采用,此时则会采用temperature控制器的控制器的index方法来进行处理。方法来进行处理。这里解里解释一下一下这3条路由分条路由分别的含的含义。Page 96.当收到发往temperature/post_te 前面与(前面与(2)相同,另外增加了)相同,另外增加了:format参数用参数用来控制返回的格式,例如发送来控制返回的格式,例如发送temperature/index.html则采用则采用temperature控制器控制器的的index方法,采用方法,采用html格式的返回结果。如果发格式的返回结果。如果发送送temperature/index.xml则以则以xml格式返回结果。格式返回结果。路由的匹配规则是从上向下依次进行匹配,如果遇路由的匹配规则是从上向下依次进行匹配,如果遇到匹配的规则,则采用该规则,并且停止向下匹配。到匹配的规则,则采用该规则,并且停止向下匹配。Page 97.前面与(2)相同,另外增加了:format参数用来 在此我们采用外部客户主动在此我们采用外部客户主动POST数据的方数据的方式来向式来向Server发送请求。发送请求。Rails中为了避免恶意的中为了避免恶意的POST数据,采用了认证授权的机制来防止这种攻数据,采用了认证授权的机制来防止这种攻击,类似我们现在采用的击,类似我们现在采用的POST的方式进行上传数的方式进行上传数据,则会引发据,则会引发Rails ActionController:InvalidAuthenticityToken异常,并且不会对我们的异常,并且不会对我们的POST操作进行处理。我们在此需要禁用该认证机制,方操作进行处理。我们在此需要禁用该认证机制,方法也很简单,只要修改法也很简单,只要修改appcontrollersapplication_controller.rb文件即可,文件即可,修改结果如下。修改结果如下。(7 7)修改控制器的认证过滤器)修改控
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 办公文档 > 教学培训


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!