首页 > 其他 > 详细

面向服务架构的一些思考

时间:2015-06-19 02:04:18      阅读:319      评论:0      收藏:0      [点我收藏+]

 在谈面向服务架构之前,首先来看看什么是服务。常谈的业务组件,业务方法或操作是否都是服务?真正的服务必须满足两个条件,一个服务本身是能力供给,必须有外界的需求;一个是服务本身是可复用或重用。一般来讲服务应该是可重用的任务,这种任务可以是业务方面的操作组合,也可以是一种技术能力。

  面向服务的重点就是一切以服务为中心,从服务识别,服务分析,服务设计,服务开发和服务上线使用一切都是以服务为中心。但是要注意到面向服务本身不是在面向结构或面向对象基础上的一个新方法,而是对面向对象和组件化思想的提升。

  面向服务架构很容易被理解为一种技术架构,而SOA本身更多的是一种架构风格,这种架构风格和传统软件开发最大的不同是更加体现了业务和流程驱动IT的思想,体现了IT系统组件化和服务化构建思想,体现了由于服务本身可以重用,可以通过服务的组合和编排来满足业务的实现。SOA作为一种架构风格,使需求方和供给方有了共同的语言和价值约定;SOA作为一种架构风格,使服务不在单纯的是一种技术能力,而更多的是一种业务能力和IT智慧资产。

  看看维基百科上SOA的完整定义:

bubuko.com,布布扣
A service-oriented architecture (SOA) is an architectural pattern in computer software design in which application components provide services to other components via a communications protocol, typically over a network. The principles of service-orientation are independent of any vendor, product or technology.[1]

A service is a self-contained unit of functionality, such as retrieving an online bank statement.[2] By that definition, a service is a discretely invokable operation. However, in the Web Services Definition Language (WSDL), a service is an interface definition that may list several discrete services/operations. And elsewhere, the term service is used for a component that is encapsulated behind an interface. This widespread ambiguity is reflected in what follows.

Services can be combined to provide the functionality of a large software application.[3] SOA makes it easier for software components on computers connected over a network to cooperate. Every computer can run any number of services, and each service is built in a way that ensures that the service can exchange information with any other service in the network without human interaction and without the need to make changes to the underlying program itself.
bubuko.com,布布扣

?

  一般说SOA是一种架构方法,将单片式应用打破,分解为离散的、自治的业务服务,利用标准提升他们的互操作性,从而可以更好地共享、重用和组装,快速构建复合的应用从而满足业务需求的变化。在这里面有两个重点,一个是要找到可重用的服务,同时这些服务满足离散,自治和无状态等基本条件;其次是服务本身可以组合和编排,以满足流程整合的需要。

  第一步找服务的过程,是系统分析和建模从顶向下得过程,要充分体现流程驱动IT的实现,通过流程的分解,业务建模和数据建模,识别业务组件和业务能力,通过跨系统或组件的流程交互识别可重用的服务。最终形成可重用的服务智慧资产库。第二步服务的组装和编排则更多是从底向下得过程,对于原子服务我们可以组合为组合服务,对于业务服务我们可以通过组合和编排形成流程子服务和流程服务;最终使可重用的服务满足流程交互的需要。

  在跨系统的流程集成和SOA应用集成过程中,高端建模重点则是EA企业架构或TOGAF方法论,从业务架构,数据架构和应用架构入手,逐层分解和展开分析来得出总体的跨业务系统流程交互和集成架构。而对于系统内的SOA应用,则重点仍然是业务组件识别,通过组件间交互得到的服务组件和服务识别,可重用的服务组件单元的提取。

  那么对于应用系统本身基于SOA架构又如何理解?如果说一个应用系统基于SOA架构,我们至少需要看到该应用系统有明确的业务组件和服务组件定义,而且组件之间满足高内聚松耦合的要求;其次对于组件间的交互都通过服务的方式进行,或者至少预留了服务接口;其次内部这些服务可以灵活的重用或组合。至于是否有内部的ESB总线反而不是重点,但是我们看到如.NET开发内部的IOC机制基本也基于内部的软总线思路,实现良好的互操作性和位置透明。

  SOA另外一个核心是实现两个层面的解耦,一个是业务和技术的解耦,业务实现不再依赖于某种特定的技术或语言,只要满足业务标准都可以来实现SOA和服务,正是因为业务和技术松耦合,技术的变化对业务影响越小。另外一个方面则是操作方法和业务数据实体的解耦,对于操作方法我们后续可以通过WSDL文件定义,而传输的数据实体又可以通过XSD定义,对于RUP开发方法中,类似于控制类和实体类的分离。

SOA有一些基本特性,在这里再做一下简单解释:

  • 粗粒度:仅仅暴露需要暴露的东西,方法和传输都简单,但是实现方法的内部过程则很复杂,业务规则或逻辑全部隐含在业务组件内部,不需要暴露。
  • 无状态:每次服务调用完成即完成,不会存储任何全局状态信息,这也是WebService的特性。
  • 互操作:包括位置透明,通过ESB和UDDI,只需要关心服务目录,而不需要关心具体提供服务的源系统。
  • 标准化:有精确的服务契约和服务接口,这也是在SOA方法论中在服务识别和服务分析阶段重要输出。


  如果说要举个简单的例子来说明SOA,可以用活字印刷术来说明:用于印刷的3000-4000个字即是最基础的原子服务,有了这些原子服务我们很容易通过这些活字去排版整篇文章。文章内容有调整我们也只是需要调整这些原子服务的顺序。但是如果全是单个汉字排版工作量还是很大,所以再向上就会出现词组或常用短句,这些即是组合服务,这样排版速度可以增加,不过可以看到词组或短语的可重用程度相较单个汉字的降低了。所以越到组合服务或流程服务,复用越困难,但是要是能够复用却能大大提升效率。

转至:http://www.cnblogs.com/johnvwan/p/4556895.html

bubuko.com,布布扣
获取【下载地址】? ?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.在线管理:(统计在线人数和在线列表,可强制某用户下线),同一用户只能在一个客户端登录

-------------------------------------------------------------------------------------------------------------------------
菜单权限:分配给每个角色不同的菜单权限, 每个角色看到的菜单不同
按钮权限:独立分配不同的角色不同的功能权限,增删改查权限分配具体到不同的菜单
支持多用户分权限管理后台,??权限具体到不同的菜单不同的按钮
--------------------------------------------------------------------------------------------------------------信息模块(小项目代码中)
新闻管理:新闻的维护、发布、权重排序等 采用百度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,布布扣

面向服务架构的一些思考

原文:http://fhadmin2.iteye.com/blog/2220741

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