首页 > 其他 > 详细

Service Interface(服务接口)

时间:2015-07-24 02:11:41      阅读:206      评论:0      收藏:0      [点我收藏+]

上下文

您正在设计企业应用程序,并且需要能够通过网络使用其部分功能。此功能需要能够被各类系统使用,因此互操作性是设计的重要方面。除互操作性之外,可能还需要支持不同的通信协议,并适应多变的操作要求。

问题

如何确保部分应用程序功能可为其他应用程序使用,同时确保分隔接口机制与应用逻辑?

影响因素

设计应用程序时,必须考虑下列影响因素:

  • 尽量将应用程序业务逻辑的负责元素与通信协议、数据转换和服务合约履行的负责元素分隔开来。这样即可推进问题分隔的总体设计目标。
  • 应用程序使用者可能希望响应根据特定使用方案进行优化。例如,有些使用者可能希望响应根据直接用户显示进行优化,而其他使用者可能希望响应根据软件处理进行优化。
  • 应用程序使用者可能希望使用不同技术与应用程序进行通信。例如,公司外部使用者可能希望通过 Internet 利用 SOAP 访问应用程序,而公司内部使用者则可能希望通过 .NET Remoting 处理访问应用程序。
  • 应用程序本身对不同使用者可能有不同的运行要求。例如,应用程序可能有这样的安全性要求,即授权公司内部使用者可以执行更新和删除操作,而公司外部使用者只 能得到授权执行只读操作。或者又如,不同的使用者可能需要来自应用程序的不同事务支持。对于一些客户端,特定事务的发生上下文并不重要,而其他客户端则可能需要精确控制事务上下文。然后根据需要,此上下文的句柄可能传递至应用程序的其他元素。
  • 如果业务逻辑更改与使用者和应用程序进行交互的所用机制是分隔的,则应用程序及时响应业务环境更改的能力将极大提高。例如,假设自定义构建组件中实现了一组特定业务逻辑,这组逻辑然后实现为打包解决方案的包装器,在理想情况下,这种情况不应影响应用程序使用者。

解决方案

将应用程序设计为软件服务集合,每个服务都有一个服务接口,应用程序使用者可以通过这些接口与该服务进行交互。

软件服务是不连续的应用逻辑单元,这些逻辑单元应当公开适合由其他应用程序访问的、基于消息的接口。[Microsoft02-2] 每个软件服务都有一个可供使用者使用的关联接口。此接口负责在服务使用者和服务提供者之间定义并实现合约。此合约及其关联实现称为服务接口。

图 1 显示了使用服务接口所供服务的服务网关。这两个元素间的协作由合约管理。

bubuko.com,布布扣

图 1:服务元素

Service Interface

如图 1 所示,Service Interface 提供了入口点,使用者可以使用此入口点访问应用程序所提供的功能。Service Interface 通常为网络可寻址,因此使用者可以通过特定类型通信网络对其进行访问。网络地址可以是众所周知的位置,也可以从服务目录(如 UDDI)获取。

设计服务接口的一个重要方面是将和其他系统通信所需的实现与应用程序业务逻辑分隔开来。服务接口提供了更粗粒度的接口,同时保留了应用程序逻辑的语义和细粒度。服务接口还提供了屏障,允许更改应用程序逻辑而不影响接口使用者。

服务接口用于实现使用者和提供者之间的合约。此合约使得它们即使在不同的系统上也能够交换信息。服务接口负责实现在执行这种通信时所需的所有细节。这些细节包括但不限于以下内容:

  • 网络协议。服务接口应该封装使用者和服务通信时所使用的网络协议的所有方面。例如,假设某服务通过 TCP/IP 网络上的 HTTP 向使用者提供。您可以将该服务接口实现为 ASP.NET 组件,并将其发布到一个众所周知的 URL。ASP.NET 组件接收 HTTP 请求、提取服务处理请求时所需的信息、调用服务实现、对服务响应打包,然后将响应作为 HTTP 响应发送给使用者。从服务角度来看,唯一了解 HTTP 的组件是服务接口。服务实现有自己的、与服务接口通信的合约,并且不应当依赖于使用者用来与服务接口通信的技术细节。
  • 数据格式。服务接口负责对使用者数据格式和服务所希望的数据格式这二者进行相互转换。例如,在公司外部的使用者可能提供数据,并且希望答复数据采用符合行业标准 XML 架构的 XML 格式。公司内部的使用者可能想使用针对这种特殊服务进行了优化的 XML 格式。服务接口负责以服务可以使用的格式对两种数据格式进行转换和映射。服务实现完全不必知道服务接口可能用于与使用者通信的具体数据格式。
  • 安全性。服务接口应该被看作它自己的信任边界。不同的使用者可能有不同的安全性要求,因此应该由服务接口来实现这些使用者特定的要求。例如,公司外部使用者比公司内 部使用者通常具有更加严格的安全要求。外部使用者可能有很强的验证要求,并且可能只得到授权执行一些操作,这些操作只是授权给内部使用者的操作中的一个很有限的子集。内部使用者可能已经得到了显式信任,可以执行大多数的操作,只要求对于最敏感的操作进行授权。
  • 服务级别协议。服务接口在保证服务满足它向一组具体使用者所作的服务级别承诺方面起着非常重要的作用。服务接口可能会实现缓存,以缩短响应时间并减少带宽消耗。可以在一组有负荷平衡功能的处理节点上部署多个服务接口实例,以达到可伸缩性、可用性和故障容错的要求。

将服务接口数量减少到最低

一 般情况下,对于每个唯一的使用方案、技术堆栈、服务级别协议或操作要求来说,都需要一个服务接口。但是,您的应用程序支持的服务接口越多,构建和维护实现 时所涉及的工作也就越多。因此,您应该尝试将应用程序需要支持的服务接口数量减少到最低。例如,某个应用程序可能提供了两个用于访问其功能的服务接口。第 一个服务接口可能已针对公司外部使用者进行了优化。它可能指定了使用 SOAP over HTTP 通信技术的一组粗粒度请求和响应对,并且提出了非常严格的安全性要求。第二个服务接口可能已针对公司内部的使用者进行了优化。它指定的请求和响应对的数量 可能较多,而且它们不具有第一个服务接口中指定的请求和响应对那样的粗粒度,并且强调性能要求比安全要求更重要。

测试考虑事项

Service Interface 封装了提供服务的所有细节,并且将它与应用逻辑分隔开来。这种分隔使您能够将应用逻辑替换为模拟 [Mackinnon00] 实现。这些模拟实现会将真正的应用程序代码替换为模拟真实代码的模糊实现。使用模拟实现使您能够编写验证代码是否工作的测试,同时不必依赖于实际的应用程 序代码。您还可以扩展模拟实现以模拟错误情况,这些情况可能很难或者不可能使用真实代码进行模拟。

结果上下文

使用 Service Interface 模式会导致下面的优缺点:

优点

  • 服务接口机制与应用逻辑分隔。这种分隔使您能够轻松地添加新的接口以及更改基础应用程序的实现,同时对使用者的影响最小。
  • 通过将服务接口代码与服务实现代码分隔开来,您就能够在不同层上部署这两部分代码,这样有可能提高解决方案的部署灵活性。

缺点

  • 很多平台使公开应用程序功能变得很简单。但是,这可能会导致作出粒度方面的错误决定。如果接口粒度太细,可能会导致最后必须很多次调用服务,才能执行特定操作。您需要对服务接口进行相应设计,使其适合网络通信或过程外通信。
  • 服务所提供的每个新增服务接口都会增加在更改服务所公开的功能时所需的工作量。

Service Interface 模式增加了复杂性和性能开销,这对于很简单的面向服务的应用程序来说可能不是很合适。

?bubuko.com,布布扣
bubuko.com,布布扣开发快报: 页面打印功能,websocket 强制下线功能,玩转websocket技术??【金牌
获取【下载地址】? ?QQ: 313596790
A 代码生成器(开发利器);??
? ?增删改查的处理类,service层,mybatis的xml,SQL( mysql? ?和oracle)脚本,? ?jsp页面 都生成
? ?就不用写搬砖的代码了,生成的放到项目里,可以直接运行
B 阿里巴巴数据库连接池druid;
??数据库连接池??阿里巴巴的 druid。Druid在监控、可扩展性、稳定性和性能方面都有明显的优势
C 安全权限框架shiro ;
??Shiro 是一个用 Java 语言实现的框架,通过一个简单易用的 API 提供身份验证和授权,更安全,更可靠
D ehcache 自定义二级缓存;
??是一个纯Java的进程内缓存框架,具有快速、精干等特点
??是一种广泛使用的开源Java分布式缓存。
E 微信接口开发(2.5版本新增)(后续会加入Activiti5 工作流 )
-------------------------------------------------------------------------------------------------------------------------
1. 模块化、服务化,流程化,耦合度低、扩展性好,灵活度高,工具类封装完整,干净利索,调用简单方便
2. 提供Rest服务,支持APP手机应用(android和ios)接口、php、.net、易语言、VB等第三方接口调用
3. 全新高大尚HTML5+css3.0+bootstrap响应式开发界面UI,( 手机 PC 平板 截图在下面)、前沿.??spring restful 风格
4. 框架搭建完善成熟,在此基础上做过很多项目,系统具有并发处理、分布式、稳定性。
5. 系统功能完善,此为框架平台,文档、注释齐全,提供技术支持,专门供二次开发
6. 在此基础上可二次开发(OA、ERP、CRM ,医疗管理、金融、网站后台、APP后台、电子商务、商城(赠送UI)等等

7.我们这边是公司,主要业务是定制开发,??此系统为我们平时给客户做项目用的,经过很多项目实战考验
??-------------------------------------------------------------------------------------------------------------------------系统模块
1. 组织管理:角色管理,分角色组和成员,有组权限和成员权限。
2. 系统用户:对各个基本的组会员增删改查,单发、群发邮件短信,导入导出excel表格,批量删除
3. 会员管理:对前台用户管理,分配会员级别,到期时间,状态,联系信息等资料
4. 菜单管理:增删改查菜单 ztree(自定义菜单)业务菜单和系统菜单分离
5. 数据字典:无限级别,支持多级别无限分类。内设编号,排序等
6. 系统设置:修改系统名称,邮件服务器配置,短信账号设置,图片水印配置,微信配置
7. 代码生成:打开代码生成器模块? ???
8. 图库管理:对批量上传的图片统一管理
9. 性能监控:监控整个系统的性能,SQL监控,SQL防火墙,URL监控,SPRING监控,SESSION监控等
10. 接口测试:POST or GET 方式检测系统接口,参数加密,json返回结果,计算服务器响应时间
11. 发送邮件:单发,群发邮件? ?
12. 置二维码:生成 or??解析二维码? ???
13.地图工具:经纬度操作
14.即时通讯:打开即时聊天窗口
15.在线管理:(统计在线人数和在线列表,可强制某用户下线),同一用户只能在一个客户端登录
16.打印测试:页面打印预览测试

-------------------------------------------------------------------------------------------------------------------------
菜单权限:分配给每个角色不同的菜单权限, 每个角色看到的菜单不同
按钮权限:独立分配不同的角色不同的功能权限,增删改查权限分配具体到不同的菜单
支持多用户分权限管理后台,??权限具体到不同的菜单不同的按钮
--------------------------------------------------------------------------------------------------------------信息模块(小项目代码中)
新闻管理:新闻的维护、发布、权重排序等 采用百度ueditor富文本框
公告管理:公告的维护、发布
广告管理:广告的维护、发布,状态维护,上传广告图片
友情链接:友情链接的维护、状态维护
特别推荐:特别推荐、状态维护
微信模块
关注回复:微信用户关注公众号回复
文本回复:匹配关键词进行文本回复
图文回复:匹配关键词进行图文回复
应用命令:匹配关键词进行命令操作,例如微信发送命令,执行服务器重启、关机、锁定等操作
-------------------------------------------------------------------------------------------------------------------------
技术点
1. 导出 导入 excel 文件
2??导出word文件
3. IO 流上传下载文件
4. 群发邮件,可以发html、纯文本格式,可以发给任意邮箱(实现批量发送广告邮件)
5. 群发or单独 发送短信,支持两种第三方短信商接口
6. spring? ?aop??事物处理
7. 代码生成器 (freemarker), 代码 zip 压缩打包
8. MD5加密 SHA加密(登录密码用此加密)接口加密身份校验
9. 数据库连接池??阿里的 druid。Druid在监控、可扩展性、稳定性和性能方面都有明显的优势,支持并发
10.加入安全框架 shiro (登录授权)(session管理)
11.根据汉字 解析汉字的全拼(拼音)和首字母(导入excel到用户表,根据用户的汉字姓名生成拼音的用户名)
12.app接口@ResponseBody(支持与其它语言数据交互)
13.极光推送 (推送给APP及时消息,APP不启动也能收到)
14.微信接口(身份验证,文本、图文回复等) 微信远程控制服务器重启、锁定、其它应用程序
15.java Quartz 定时器 (定时执行某程序,精确到秒,可设置周期)
16.java websocket 即时通讯技术,点对点,群聊,单聊,EXT4对话框
17.新增Lucene全文检索
18.Base64传输图片
19.图片加水印(图片水印,文字水印)
20.生成 or??解析 二维码
21.HTML5 + JAVAEE??WebSocket 通信技术,WebSocket 验证用户登录,强制某用户下线
22.批量异步上传图片,可预览,有进度条,支持拖拽上传(百度webuploader )。列表动态滑动放大展示。
23.ehcache 自定义二级缓存 ,选择缓存存放目录,处理并发,增加系统性能
24.服务器内部GET POST 请求
25.uploadify 上传插件,单条、批量上传多线程,带进度条,异步,图片、视频, 其它文件格式均可上传
26.地图选点获取经纬度坐标,根据俩经纬度计算距离
27.tab标签页面功能,标签自由切换,不重复操作数据库
-------------------------------------------------------------------------------------------------------------------------
系统框架为:springmvc + mybaits 3.2maven 版本和 非maven 版本 jdk 1.6 1.7 1.8??tomcat 6 7 8
数据库:oracle 版本 和 msyql 版本 ( spring3.0 和4.02??mybaits 3.2)? ???开发工具:myeclipse??eclipse 均可
赠送 同UI? ?? ?springmvc + hibernate??SpringSecurity Lucene Quartz MySQL、Oracle、SQL Server
bubuko.com,布布扣
-------------------------------------------------------------------------------------------------------------------------
系统演示视频:http://pan.baidu.com/s/1kTDvAn1 之前录的(有点粗糙, 凑合着看)
qq:313596790
--------------------------------------------------------------------------------------------------------------------
PC实物截图如下
登录界面背景用HTML5特效自动切换(百叶窗,幕布等多种切换方式)
bubuko.com,布布扣
bubuko.com,布布扣
bubuko.com,布布扣
bubuko.com,布布扣
bubuko.com,布布扣
bubuko.com,布布扣

bubuko.com,布布扣
bubuko.com,布布扣bubuko.com,布布扣
bubuko.com,布布扣bubuko.com,布布扣
bubuko.com,布布扣
bubuko.com,布布扣

bubuko.com,布布扣bubuko.com,布布扣
bubuko.com,布布扣
bubuko.com,布布扣bubuko.com,布布扣
bubuko.com,布布扣
bubuko.com,布布扣bubuko.com,布布扣
bubuko.com,布布扣
bubuko.com,布布扣
获取【下载地址】? ?QQ: 313596790

Service Interface(服务接口)

原文:http://yuiujiuadmin.iteye.com/blog/2229738

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!