微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > 嵌入式环境下Web Service技术的实现

嵌入式环境下Web Service技术的实现

时间:03-21 来源:互联网 点击:

摘要:为了解决嵌入式系统与其他异构系统之间互联和集成的难题,提出了Web Seivice技术在低端嵌入式设备上的实现方法。以ARM Cort ex-M3微处理器为核心,基于小型实时操作系统和嵌入式TCP/IP协议栈,详细阐述了Web Service的实现过程,包括HTTP接收.XML与SOAP协议的解析,以及同具体服务实现的绑定,并针对嵌入式环境下资源受限的特点。给出了相应的优化方法。使用专用测试软件进行的压力测试表明,该实现运行稳定,具有良好的可行性。
关键词:Web Service;XML;SOAP;嵌入式系统

0 引言
近年来随着网络化概念的不断推广,嵌入式系统也摆脱了以往“信息孤岛”的封闭局面,相互之间逐渐形成了分布式的协作关系。然而嵌入式系统在网络的应用层上常常采用自定义的传输协议,加之各系统之间巨大的平台差异性,给系统间的互访以及企业级信息的集成带来了困难。Web Service技术具有良好的跨平台和松耦合特性,能够实现不同平台的分布式系统之间的无缝集成,降低了企业进行设备升级和服务重组时的投入。本文以32位微处理器ARM Cortex-M3为核心,借助于嵌入式TCP/IP协议栈和实时操作系统,在嵌入式环境下实现了Web Ser vice技术。

1 Web Service与SOAP协议
Web Service是网络化应用的一种,可以将其看成一种函数调用,只不过这个函数的实体存在于某个服务器上,而对函数的调用在客户端进行,客户端只要接入装有服务的机器所在的网络即可调用函数。为了实现这种远程调用,需要对传输的数据格式采取一些约定措施.简单对象访问协议(Simple Object Access Protocol,SOAP)很好地应对了这种需求。SOAP协议以XML形式提供了一个简单、轻量的机制,用于在分布环境中交换结构化信息。SOAP本身并没有定义任何应用程序语义,如编程模型或特定语义的实现;实际上它通过提供一个模块化的封包模型和在模块中进行数据编码的方法,定义了一个简单的表示应用程序语义的机制。
SOAP消息是由Envelope,Header和Body三部分组成的XML文档,其中Envelope是SOAP消息的根元素,必须在SOAP消息中出现;可选的Hea der元素包含有关SOAP消息的应用程序专用信息;必需的Body元素包含打算传送到消息最终端点的实际SOAP消息。最后,为了进行基于SOAP的远程调用,需要一种低级传输协议。SOAP规范允许使用HTTP,SMTP甚至原始的TCP/IP套接字,其中HTTP协议最为常用。

2 Web Service在嵌入式环境下的实现
2.1 底层软硬件结构
本文中所使用的硬件基于ST公司推出的ARMCortex-M3 32位微处理器STM32F107VC。Cortex-M3是针对价格敏感但又有高系统效能需求的嵌入式应用而设计的ARM内核,作为ARM7的后继者,大刀阔斧地改革了设计架构,显著简化了编程和调试的复杂度,处理能力也更加强大。ST M32F107VC工作频率最高为72 MHz,带有256 KB的片上FLASH和64 KB的SRAM,以及以太网MAC控制器,因此外接一片PHY芯片RTL8201,完成与以太网的物理通信。
为了达到实时任务管理,本文选用嵌入式实时操作系统FreeRTOS和轻量级TCP/IP协议栈1wIP组成底层软件开发平台。FreeRTOS作为一个免费开源的小型实时内核,主要用于建立和管理各个模块的任务;1wIP则为数据的TCP/IP封装提供了一个良好的软件基础。
2.2 SOAP消息的处理
目前已经有许多成熟的SOAP工具,例如针对C++的gSOAP、针对Java的kSOAP等,但是这些实现方案均是为PC机或者带有高级操作系统的嵌入式系统设计的,对资源的消耗较多。对于低端的嵌入式环境,需要更轻量型的处理方法。
由前文可知,SOAP可以简单的理解为HTTP+XML+远程调用规则,因此SOAP消息的处理也分为3步:HTTP协议的实现、XML解析、具体服务实现。其总体结构如图1所示。


SOAP在HTTP上的远程调用的具体实现过程大致如下:客户端通过SOAP工具生成基于XML文档的SOAP消息,在该SOAP消息里包含有客户请求的服务名称及调用服务程序所需的参数,并使用HTTPPOST方法通过网络向应用程序所在的服务端发送SOAP请求;另一方面,当服务端接到HTTP信息之后,又从中提取出SOAP消息,启动XML文档解析器进行解析,获取客户需要调用的方法名及其参数,以此来调用相应的服务程序,之后以类似的方法将运行结果打包成SOAP消息返回给客户,完成应用程序的远程调用。
2.2.1 HTTP协议的简单实现
HTTP是基于请求/响应模式的协议,客户端的通信过程一般分为4个步骤:建立连接、发送请求消息、接收响应信息、关闭连接。HTTP定义了众多请求方法(Method),如GET,POST,HEAD,DELETE等,由于SOAP主要使用POST方法来发送请求,因此HTTP的实现集中在POST方法上。SOAP协议中规定POST请求至少包含两个HTTP头,Content-Type(定义MIME类型)和Content-Length(定义消息的长度)。
例如:
POST/test HTTP/1.1
Content-Type:application/soap+xml;
Content-Length:250
如图2所示,程序利用1wIP提供的API创建一个监听连接,绑定到HTTP的80号熟知端口上,当接收到POST请求时检查必要的HTTP头,之后开始接收HTTP正文(SOAP请求),并将接收到的请求存放在预先开辟的缓冲区中,再交由XML解析器处理。为了节省资源,将SOAP消息解析和HTTP接收放在同一线程,一次只处理一个SOAP请求,因此整个解析过程只需要一个缓冲区。同时开启连接超时机制,如果客户端连接后长时间无动作,接收程序将切断连接,避免后续请求无法得到响应。

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top