1、基于 Web API 的固井工程设计系统研究 钟磊 徐英卓 西安石油大学计算机学院 摘 要: 随着网络技术的更新换代, Web 服务器提供了新的网络服务方式:网络应用程序接口 (Web API) 。Web API 包含了广泛的功能, 该接口实现了存储服务、消息服务、计算服务等功能, 这些功能可以进一步开发出强大功能的 Web 应用。本文主要介绍基于 Web API 的固井工程设计系统的原理和工作过程, 并详细介绍了 Web API 的概念及工作方式。关键词: Web API; 固井工程设计系统; 服务; B/S 模式; 作者简介:钟磊 (1990-) , 男, 硕士研究生, 主要研究方向:软件
2、工程;作者简介:徐英卓 (1964-) , 女, 硕士, 教授, 主要研究方向:智能信息处理与可视化。收稿日期:2017-10-11基金:国家自然科学基金 (51574194) Research on the design system of cementing engineering based on Web APIZHONG Lei XU Yingzhuo Computing College, Xian Shiyou University; Abstract: With the development of network technology, the Web server provid
3、es a new approach to Web services : Web API. The Web API includes a wide range of services capabilities such as storage, message, and computing, which could further develop powerful Web applications. This paper mainly introduces the principle and working process of the design system of cementing eng
4、ineering based on Web API, and proposes the concept and working mode of Web API in detail.Keyword: Web API; solid well engineering design system; service; the architecture of B/S; Received: 2017-10-110 引言目前, 正在使用的固井工程系统是纯面向对象或者过程的, 这样的软件在结构上是低内聚、高耦合的。如果后期有新的需求出现, 这将会给开发者带来极大的不便。由此, 新技术的出现, 往往会引发软件世界
5、的重大革新变化。为了解决传统固井软件的应用问题, 以及增进在当代的软件架构中新思维服务系统优化的作用影响, 对传统的固井软件进行服务升级, 并设计研发出一整套面向服务架构 (SOA) 的固井工程设计系统即已尤显其迫切与必要。本文重点论述的固井工程设计系统的核心是基于微软的 ASP.NET Web API 来展开研究并获得实现的。其中, Web API 是时下位居前沿的流行移动后台服务层, 利用 ODATA协议可以传输 JSON、XML 等格式的数据, 支持跨语言/跨平台, 克服了基于SOAP 的 WCF 局限性, 可避免给开发人员带来复杂繁琐的配置操作。同时, ASP.NET Web API
6、是用于构建可以从任何客户机访问 (包括浏览器和移动设备) 的 HTTP 服务的框架, 并且也是一种基于.NET Framework 解析生成 RESTful 应用程序的理想平台。1 固井工程设计系统开发流程基于 Web API 的固井工程设计系统的技术内容核心是 Web 服务的研究、设计与开发, 以 B/S 架构为基础, 整个系统的开发流程遵循经典的系统开发设计过程, 即需求分析、系统设计、系统开发与部署、系统维护四个开发阶段, 具体如图1 所示。图 1 面向 Web API 的固井工程设计系统设计流程 Fig.1Design process of cementing engineering
7、design system for Web API 下载原图研究中, 针对基于 Web API 的固井工程设计系统需求分析阶段, 除了要达到常规需求分析基础指定目的之外, 还要立足于 Web API 的现状提供拓展分析, 包括内容如下:什么是 Web API, 这种服务有哪些类型?服务接口怎么封装、注册及访问?等等。本系统主体设计包括数据库设计、软件架构设计、Web API 设计、前端界面设计这四个部分的内容。其中, 数据库设计中选择使用的工具是 Microsoft SQL server2012, 基于实际固井数据, 并且遵循传统的设计原则和方法。软件架构设计则主要采用了经典的三层架构。Web
8、 API 设计上重点基于 RESTful 风格:采用 URI 标识资源、使用统一的接口、使用标准的 HTTP 方法、支持多种资源的表示方式、无状态性。而前端界面设计却融入采用了 html 和 Java Script 等前端语言组织实现业务逻辑, 保证系统的简洁性及实用性, 紧密结合业务逻辑, 因而更加贴近大众用户的使用习惯。系统开发与部署包括两个部分:Web API 的开发与部署和固井工程设计系统的开发与部署。Web API 开发与部署使用的开发工具是 Visual Studio 2015, 并且.NET framework 4.5 为 Web API 的研发构建提供了很大的方便。同时, 单独
9、部署 Web API 可以利于修改或者补充 Web API, 保证其独立性, 从而便于共享和复用。固井工程设计系统的开发和部署整体上则将围绕各种用户界面的程序化展示, 就是利用 HTML 和 Java Script 等前端开发语言以及相关框架设计前端母版页, 通过前端业务逻辑完成页面的调用及跳转。固井工程设计系统单独部署, 可以有效地实现软件复用。2 需求分析基于 Web API 的固井工程设计系统对不同地域、不同区块、不同油井产生的不同固井数据进行了详细的归纳分析, 结合实际固井作业的需求, 该系统的定制功能可表述如下:1) 服务端功能。具备权限控制, 系统管理员具有最高系统控制权限, 此外
10、, 系统管理员还将具有对固井相关数据库的增、删、改、查, 并且能够接收用户端的动作请求, 开展理想模型的计算, 并将结果反馈给客服端。2) 前端功能。主要对应着用户的登录、修改、注销等功能, 在此基础上还进一步包括固井数据的界面展示, 并向服务端发送服务请求。3 固井工程设计系统总体设计3.1 数据库设计概述基于 Web API 的固井工程设计系统使用 Microsoft SQL Server 2012 作为本系统数据库的设计及开发工具, 本系统在研究中将配置涉及两个相关数据库, 分别是:套管数据库和固井设计数据库。对其可做如下概述。1) 套管数据库按套管的外径分别建库, 主要包括套管基本情况
11、表、材料表及附件消耗表等。由于套管数据在设计中将会发挥非常重要的作用, 为了防止对数据的误操作, 一般情况下不允许随意修改套管数据。2) 固井设计数据库包含基本设计数据和井斜数据两部分。其中, 基本设计数据主要包括用于设计套管强度的以及设计注水泥所需的大部分数据;井斜数据部分主要是对测深、井斜角及方位角等数据进行操作。综上可知, 该数据库需要创建的基本表有流体组成表、配方表、井身质量表及地漏实验表等。3.2 软件架构概述固井工程设计系统在开发上采用了三层分布式框架, 也就是用分层的方法对固井工程设计系统进行业务处理, 因而充分体现了面向服务的架构理念。下面即研究给出了固井工程设计系统的软件分层
12、架构如图 2 所示。图 2 固井工程设计系统软件架构分层图 Fig.2A layered diagram of software architecture for cementing engineering design system 下载原图由图 2 可见, 该系统架构中各层的功能含义内容如下:1) 实体对象映射层。在常规三层架构的基础上, 本系统的设计在底层数据库与传统的数据访问层之间添加了实体对象映射层, 同时应用了面向对象的编程思想, 获得了对象和实体数据库的逻辑匹配, 为数据访问层提供了软件的操作基础。2) 数据访问层。首先接收来自数据访问层的请求;然后, 利用 NHibernate
13、 架构, 直接调用 NHibernate 库中方法实现对固井工程设计系统的相关数据库表的增、删、改、查, 并向上一层的业务逻辑层反馈数据。3) 服务层。与数据访问层类似, 接收服务提供层请求信息, 进行分析, 交付给下面的数据访问层, 完成数据的调用, 并接受数据访问层的反馈, 同时根据上一层的实际需求, 引入对数据的验证、计算处理, 最后给上一层发送反馈信息。在该层主要由 Web API 发布类、服务实现类等组成, 模式方案则如图 3 所示。图 3 服务层基本组成 Fig.3 Basic composition of the service layer 下载原图4) Web 展现层。采用脚本
14、框架、插件类等提供的技术方法, 完善友好界面, 并通过 HTTP 或者 HTTPs 提供的方法调用需求服务, 将服务展现给用户, 主要体现为 Web 应用程序。5) model 层。该层主要任务是被实体对象映射层、数据访问层及服务层引用, 完成抽象数据库实体数据, 并通过转换的对象操控执行固井系统的相关逻辑计算。6) 通用层。主要是集成给出帮助类, 比如说 NHibernate 的帮助类、log4net等。3.3 系统功能设计从系统本质出发, 系统功能设计核心在于设计服务, 即 Web API 的开发。为了解决传统固井软件中展现的信息孤岛问题, 采用服务理念来研究和实现固井工程设计系统, 对固
15、井工程设计系统进行功能分析、模块划分和低耦合的服务封装, 并以此为基础, 有针对性地建立了基于 Web API 的固井工程设计系统, 本系统主要解决如下方面的设计需求:1) 套管数据库管理。完成套管各项数据的输入、修改、查询、标注等工作, 为套管强度设计制订可靠的数值依据。2) 套管强度设计。根据用户提供的库存套管数据或给定的套管数据, 以及设计安全系数和有关的地层、井眼流体等参数, 进行套管强度的选型计算和安全系数校核。设计方法采用等安全系数法, 对定向井需增加弯曲应力校核。设计结果按附表规定的格式打印输出。3) 注水泥设计。根据用户给定的井眼、套管、地层、流体等参数, 以及注水泥施工质量要
16、求等, 推进实现注水泥有关内容的设计, 设计结果按附表规定的格式打印输出。4) 注水泥模拟。注水泥模拟是根据注水泥设计的结果在计算机上开展注水泥施工作业的动态实时模拟, 以便获得注水泥施工各时刻施工参数的动态变化情况。模拟的参数包括:真空段长度、井口压力、井底压力、注入流量、返出流量、井眼内任意给定点的压力。要求得到在注水泥施工任意时刻关于上述模拟参数的数值, 模拟结果将用直观的曲线形式获得最终表示。4 固井工程设计系统的工作原理各种终端的浏览器 (包括不同操作系统) 向提供 Web 服务的服务器发送 HTTP 请求, Web API 利用 OData 协议将各种异质的数据转换为标准数据, 再
17、对 HTTP 请求进行一系列的相关处理, 例如 URI 路由和 Action 解析、路由选择和控制器选择等。采用实体对象映射模型 (ORM) 封装从固井工程设计系统的数据库获得的需求数据, 并返回结果集 (结果集以 JSON、XML 形式表达) , 接着返回给请求源。图 4 工件原理 Fig.4 Working principle 下载原图5 结束语本文是基于 Web API 这种面向服务架构的新思想, 结合时下固井作业的实际背景流程, 借助计算机相关网络协议及软件开发技术, 展开固井工程设计系统的软件架构及各种新型相关的软件开发技术的研究, 主要目的旨在利用 Web API、HTTP 协议及
18、.NET 开发技术等实效手段, 致力于远程帮助钻井工程技术人员能够科学、合理、高效、优化进行固井工程设计以及进一步实现固井有关数据和设计资料的科学化管理, 从而避免和减少在设计中由于人为因素造成的失误与偏差, 使固井设计的全过程符合标准化和规范化的工程要求。参考文献1曹步清, 刘建勋, 唐明董, 等.基于用户使用历史与信誉评价的 Web API 推荐J.计算机工程, 2015, 41 (6) :43-48, 55. 2陈振邦, 王戟, 董威, 等.面向服务软件体系结构的接口模型J.软件学报, 2006, 17 (6) :1459-1469. 3饶元, 冯博琴.新网络体系结构 Web Servi
19、ces 研究综述J.计算机科学, 2004, 31 (5) :1-4. 4赵叶红.API 开放平台高性能技术探索与实践J.中国金融电脑, 2016 (2) :47-52. 5徐诗垚.基于亚马逊网络服务的优惠商品搜索发布系统D.长春:吉林大学, 2012. 6王红崧, 周海晏.基于百度地图 API 的旅游地理信息系统开发J.现代计算机 (专业版) , 2012 (23) :60-63. 7向玉云, 高爽, 陈云红, 等.百度、高德及 Google 地图 API 比较研究J.软件导刊, 2017, 16 (9) :19-21, 25. 8邹庆轩, 李建, 周永宏.基于 B/S 体系结构的油田固井信息系统设计开发J.现代电子技术, 2006 (7) :85-87. 9宣小平, 但正刚, 张文毅.ASP 数据库系统开发实例导航M.北京:人民邮电出版社, 2003.