基于android的网络服务架构设计

xcjciom

贡献于2016-11-23

字数:0 关键词: Android 手机开发

 第38卷第3期 李维勇:基于 Android的网络服务架构设计 ·技术与应用·  基于 Android的网络服务架构设计 李维勇 (南京信息职业技术学院计算机与软件学院,南京,210046)   摘 要:根据建立在安卓操作系统(Android)平台的移动互联网开发的趋势和特点,提出一种架 构在模型 -视图 -控 制 器(Model-View-Controller,MVC)模式下的网络服务体系的设计,结 合 An- droid自身特性构建基于活动、异步任务和适配器(Activities、AsyncTask和 Adapter)的网络服务流 程处理机制,以案例说明该服务架构设计的流程和关键技术处理。 关键词:安卓操作系统;网络服务;模型 -视图 -控制器;架构设计 中图分类号:TP311 收稿日期:2012-02-20 0 引 言 随着移动通信技 术 和 Web应 用 技 术 的 不 断 发 展与创新,移动互联网业务逐渐成为继宽带技术之 后互联网发展的又一个推动力,为互 联网 的发展提 供一个新的平 台,并以移动应用特有的随身性、可 鉴权、身份识别 等 优 势,为传统的互联网类业务提 供了新的发展空间和可持续发展的新商业模式[1]。 同时,移动互联网业务的发展为移动通信带来了无 尽的应 用 空 间,促进了移动网络宽带化的深入发 展。Web Service是 基 于 网 络 的、分 布 式 的 模 块 化 组件,它执行特定的任务,遵守具体 的 技术规范,这 些规范使 Web Service能与其他兼容的组件进行互 操作。Web Service技术的特点是松散耦合的、可 复用的软件模块,自包含的、自描述 的、模块 化 的 应 用程序,通 过 Web发 布、定 位 和 调 用,是 互 联 网 应 用需求和技术发展的双重物。将 Web Service技 术 应用于手机终端,使手机应用程序开发人员方便地 封装服务器端提供的各项服务[2]。 同 时,3G 技 术 为手机与Internet的互联提供了理想的技术平台。 因此,开发基于网络服务的手机应用系统有着广泛 的社会需求和广阔的应用前景。 文章以中国移动通信集团江苏有限公司增值服 务中心的“掌 上 人 才”的开发过程为实例,介绍基于 Android平台的应用软件的网络服务架构设计的基 本思想和开发过程。 1 网络服务架构设计 网络服务的整体架构以典型的 MVC 模式[3]架 构,如图1所示。 图1 网络服务架构 (1)View 层 在 Android中以一个 Activity的实现来构建手 机用户界面,即 View 层。每个 Activity都是一个有 生命 周 期 的 对 象,是 android.app.Activity 类 的 扩 展。尽管这些 Activity一起组成了一个内聚的用户 界面,但 其 中 每 个 Activity都 与 其 他 Activity 保 持 独立。应用项目的一个用户界面跳向另一个用户界 面是通过在一个 Activity中引用start Activity()或 start Activity For Result()方法来启动另 一 个 Ac- tivity实现的。 (2)Controller层 在 Android 中 以 一 个 实 现 自 AsyncTask 的 NetService作为应用项目的控制器。AsyncTask允 许以异步的方式对用户界面进行操作。它先阻塞工 作线程,再在 UI线程中呈现结果,在 此过程中 不 需 ·17·  ·技术与应用· 信 息 化 研 究 2012年6月  要对线程和 Handler进 行 人 工 干 预[4]。因 此,用 户 只需 向 控 制 层 提 交 Web Service不 同 应 用 的 URL 即可,不 用 关 心 Controller的 具 体 实 现,Controller 将网络访问结果(经过xml解析器 XmlParser解析) 返回给 UI界面。 (3)Model层 在 Android中以一个实现自 Base Adapter具体 的适配器来封装应用程序的数据结构和事务逻辑, 集中体现应用程序的状态。通 过 适 配 器 中 的 get- View()方法返回数据项的显示视图[5]。通 过 Lay- outInflater加载每 个 数 据 项 的 布 局,然 后 将 数 据 集 合中的每个数据项的子数据元素与数据项布局中的 每个控件进行绑定。 2 关键技术实现 Web Service的架构有很多,REST 和 SOAP都 是很成熟的架构 技 术,本文没有就服务端的架构进 行具体的探 讨,主 要 讨 论 以 Android为 客 户 端 的 网 络服务架构。 根据网络服务架构的整体设计,实 现 了 如 图 2 所示的网络服务事件序列图: 图2 网络服务事件序列图 下面对其中的关键技术设计和实现进行解析。 2.1 网络接入点设计 在移动网络 服务 设 计 中,对 网 络 接 入 点 的 判 断 是非常重要的。概括起来,有3种网络类型:(1)联 通移动 wap;(2)电信 wap;(3)其他的net类型。 在 Android中,Connectivity Manager类负责管 理和网络连接相关的操作;Network Info类 用 于 获 取联 网 状 态。 下 面 的 代 码 负 责 移 动 net 网 络 的 处理: NetworkInfo networkInfo= MainActivity.manager   .getActiveNetworkInfo(); if(networkInfo.getTypeName().equalsIgnoreCase(" MOBILE" )){if(networkInfo.getExtraInfo().toLower- Case() .indexOf(" wap" )!=-1){//wap isProxy=true;}} 如果是 wap方式,加入如下代理设置: InetSocketAddress address; address=new InetSocketAddress(" 10.0.0.172" , 80); java.net.Proxy proxy=new java.net.Proxy( java.net.Proxy.Type.HTTP,address); conn=(HttpURLConnection)new URL(httpURL) .openConnection(proxy); 在应用程序的主 Activity的onCreate()方法中 加入checkNet()方法判断网络接入点,即可完 成 网 络接入点的设计。 2.2 多线程设计 Android应用程序运行在 UI线程中,如果应用 程序在与用户交互的同时需要执行诸如访问网络或 查询数据库等任务,将会阻塞整个 UI线程。一旦线 程被阻塞,所有事件都不能被分发,用户就会被提示 “应用程序没有响应”(ANR)对话框。 掌上人才应用程序以一个 AsyncTask 实例 Net- Service来处理多线程,AsyncTask 的特点是任务在主 线程之外运行,而回调方法是在主线程中执行,这就 有效避免了使用 Handler带来的麻烦。核心代码是实 现doInBackground(String… params)方法来处理网络 服务请求,下面的代码是网络连接与数据解析过程: if(conn.getResponseCode()= HttpURLConnection.HTTP_OK) {Reader responseReader=null; responseReader=new InputStreamReader(conn.getInputStream(), " utf-8"); if(responseReader!= null){ new XmlParser(responseReader, params[1]); isSuccess=true; responseReader.close(); return null;}} 2.3 xml解析 Android提供了 良 好 的 xml解 析,本 例 主 要 实 现 XmlHelper(继 承 DefaultHandler)和 XmlParser 两个 类 处 理 xml解 析:XmlParser 中 编 写 setUp- Parser()方法通过SAXParserFactory生成解析对象 ·27·  第38卷第3期 李维勇:基于 Android的网络服务架构设计 ·技术与应用·  SAXParser。 XmlHelper是 通 用 xml解 析 方 法,通 过 重 写 startDocument()方 法 解 析 Web Service返 回 的 数 据,生成 Field[]列表。然后通过类似于parsedData =(ExportData)XmlHelper.entityOb;的 方 法 将 所 有的结果都以 ExportData接口对象返回[6]。 2.4 适配数据 适配数据的核心是将解析的xml数 据 显 示 在 UI界面上,这主要通过重写适配器的getView()方 法来实现,例如如下的代码用于以列表的形式显示 Web Service返回的数据: public View getView(final int position, View convertView, ViewGroup par){ convertView=mInflater.inflate( R.layout.baselist_item,null);  title=((TextView) convertView.findViewById( R.id.baselist_item)); title.setText(nodes.get(position).getUnit name());return convertView;} 除了上面介绍的关键技术外,还 有 负 责 将 网 络 数据传递给 调 用 类 接 口 DataCenter、解 析 结 果 的 对 外接 口 ExportData等。另 外 还 要 考 虑 Android 开 发的其他常见 处 理,如国 际 化、设备 自 适 应、程 序 重 启等,这里不再赘述。 3 结束语 基于 Activities、AsyncTask 和 BaseAdapter的 Android平台移动互联网服务架构,实现了通过 Ht- tp方式与 Web Service数据交换的方式。该设计解 决了基于网络的软件重用和数据共享问题,实 现 了 数据的统一管理和安全共享,缩短了开发周期,增强 了整个应用程序的可维护性,为 移动互联 网 应 用 提 供了解决方案。通过掌上人才项目的开发证明这种 工作模式的可行性,并具有良好的应用前景。 参 考 文 献 [1]庾志成.移动互联网的发展现状和发展趋势[J].移 动 通 信,2008(9):22-24. [2]Srirama S N.Mobile web service provisioning[J].Tele- communications,2006(2):120. [3]赵涛,李先国,胡 晓 东.MVC 设 计 模 式 在 Web应 用 系 统 框架中的扩展[J].安徽大学学报,2005,29(4):29-32. [4]Google.Processes and threads[EB/OL].[2012-03-08]. http://developer.android.com/guide/topics/fundamen- tals/processes-and-threads.html. [5]Jiang F,Ku S.How to display the data from database by list view on android[C]//Intelligent systems and applica- tions(ISA):IEEE,2010:1-4. [6]Ableson F.Using XML and JSON with android [EB/ OL].[2010-08-24].http://www.ibm.com/developer- works/library/x-andbene1/index.html.   李维 勇(1976-),男,系 统 分 析 师、讲 师,主 要 研 究方向为软件技术与移动应用开发。 Design of Web Service Based on Android Li Weiyong (Institute of Computing & Software,Nanjing College of Information Technology,Nanjing 210046,China) Abstract:According to the trend and characristic,the design of web service system in the mode of MVC has been invented.combined with the feature of android,the web service process handling mechanism based on Activities,Async task and a Adapter has been built and illustrated by the real cases. Key words:Android;Web service;model-view-controller;architecture design ·37·

下载文档,方便阅读与编辑

文档的实际排版效果,会与网站的显示效果略有不同!!

需要 10 金币 [ 分享文档获得金币 ] 0 人已下载

下载文档

相关文档