`
rocket
  • 浏览: 92083 次
  • 性别: Icon_minigender_1
  • 来自: 金城
社区版块
存档分类
最新评论

DEV2DEV TECHDAYS SOA 体会二

阅读更多

面向服务的8个原则
服务可复用 不管是否存在即时复用的机会,服务被设计为支持潜在可复用。
服务共享一个正式契约 为了与服务交互,只需要共享描述每个服务信息交换术语定义的正式契约。
服务是松散耦合的 服务被设计为无需紧密的、跨服务的依赖而交互。
服务是底层逻辑的抽象 只有经由服务契约所暴露的部分服务对于外部世界是可见的。契约之外所表达的底层逻辑是不可见的,且与服务请求者无关。
服务是可组合的 服务可能组合其他服务。这允许表示不同粒度的逻辑,并促进复用及抽象层的创建。
服务是自治的 逻辑由服务所控制,并位于一个清晰的边界内。服务已经在这个边界内被控制,并且不依赖于执行其控制的其他服务。
服务是无状态的 服务应当不需要管理状态信息,因此能够其维持松耦合性。服务应当尽可能设计成无状态的,即便这意味着要将状态管理移至别处。
服务是可发现的 服务应当允许其描述被发现,并被人工和可能会利用其逻辑的服务请求者所理解。
这个8个面向服务的原则乍看很像我们熟悉的OOP啊,不过如果你把一个服务抽象成一个对象来看的话也就不难理解了。
下面介绍一下依据这8个原则构建的SOA的各个服务层:
1、连通性服务层
所谓的连通性是指对于原有系统的数据连通,由于原有系统不能提供一个具有通用性的数据服务,所以在连通性服务层的主要任务就是负责把原来已有的JDBC的,EJB的,webService的各种数据服务,封装成具有统一标准的java pojo控件,然后其它的就可以方便,简单的实现对数据服务的调用。
连通性服务层:
服务对象:需要获得数据的对象         如业务层、表示层等
提供服务:可以操作原有系统的数据层   如对一个sap服务器进行操作、对一个DB服务器进行操作邓
调用资源:原有系统的数据服务接口     如EJB、Hibernate,JDBC等
图1:
在这里值得一提的是bea在使用workshop对于连通性服务层创建,非常简单,完全图形化的方式,只需简单的鼠标拖曳,就可以实现服务控件的建立。
2、业务流程服务层
我们知道一般的业务系统都会有一些自由的业务流程的,那么如何让这些原有的业务流程来提供给SOA系统使用呢?
在bea专家给我们演示的demo中,我看到bea的做法是把每一个流程节点封装成了服务,这样,这些流程节点每个都可以成为一个向外提供服务的服务者了。
业务流程服务层:
服务对象:需要流程控制的对象         如其他业务层,表示层等
提供服务:业务流程控制               如从a入口进入后是应该去b节点还是应该去c节点
调用资源:通常是连通性服务层的服务  
图2:
在bea演示的时候对于业务流程服务层的构建依然采用的是图形化的方式,这里值得称道的是在使用图形化的过程中,bea的工具还可以支持对于服务的格式转换
3、服务中介层  
上面已经介绍了两种服务层了,在soa中这两层的调用不是简单的上下层关系。在实际项目中,也许有的需求是需要流程控制的,但是也许有些需求是直接要求展示数据的,那么如何处理这两种的需求呢。这里就是在soa中最重要的一个层了,服务中介层。很多人应该听过soa中service bus这个概念。我之前一直理解为服务总线仅仅是为客户端提供服务的,其实是不对的,实际上服务总线是一个用了穿起来各个服务层的,就好比是一个糖葫芦,服务中介层就是中间的那根棍子。
图3:
做为服务中介层来说,主要有两种服务,一种是应用服务;另外一个是代理服务,用来对应用服务进行代理封装的,是服务总线中向外暴露的服务。
4、表示层服务层
表示层服务主要和不同的客户端有关,bea在这里的讲述中由于时间紧张所以比较简单。重点还是在演示他们可视化得页面编辑。但是这里有点给我洗脑得就是,对于不同的客户端所提供的服务是直接可以使用的,比如判断一个用户名是否合法,表示层服务不是返回的true,false,而是直接返回,“该用户名可用”,“该用户名已被占用”这样的字符串。
关于表示层我就不再画图了,最后是一个整体的soa层次结构图:


 

1
0
分享到:
评论

相关推荐

    techdays2015:Techdays 2015 AMS 演示

    【TechDays 2015 AMS 演示】是一个技术分享活动的演示材料,主要集中在2015年阿姆斯特丹(AMS)举办的TechDays活动中。这个压缩包文件包含了一个名为"techdays2015-master"的项目或资料库的主分支,可能是一个完整的...

    Techdays2015:Techdays2015专场(实时分析)

    Techdays2015专场(实时分析) 存储库当前包含: 仪表板(带有通过伪造数据的测试程序) PowerBI.Api.Client Dashboard(alpha 版本已经过时,最好使用发布版本:) 设备分析(拓扑风暴) Domo-Test(用于发送...

    Techdays2015-Win2d:Le code de la session "SDK Imaging et Win2d" des Microsoft TechDays 2015 Paris

    【标题】"Techdays2015-Win2d:微软TechDays 2015巴黎大会中的'SDK Imaging与Win2d'代码演示" 在2015年的微软TechDays巴黎大会上,一个名为"SDK Imaging et Win2d"的会议深入探讨了图像处理和图形渲染技术。这个主题...

    Piercer:TechDays 2015的OWIN组件示例

    【标题解析】:“Piercer:TechDays 2015的OWIN组件示例”这一标题揭示了我们要讨论的主题是“Piercer”,它是一个与OWIN(开放Web接口.NET)相关的技术组件,用于2015年TechDays技术活动的演示。OWIN是一种在.NET...

    docker_techdays15

    此存储库包含我们关于使用 Docker 部署 .NET 的会话的演示。 对于 Windows, VagrantDemo目录包含 Vagrantfile,它允许您使用 Docker 和演示实例化 HyperV Ubuntu 14.04 虚拟机。 为此,您所要做的就是安装 Vagrant...

    techdays-paris-2014-mvc-webapi:会话源代码来源http-mvc source code

    2. **WebAPI控制器**:这是ASP.NET WebAPI的核心部分,用于创建RESTful服务。开发者可以定义API控制器来处理HTTP请求,并返回JSON或XML格式的数据。 3. **路由配置**:展示了如何设置URL路由规则,使应用程序能够...

    WhenIsItFriday:来自 Techdays Sweden 2014 的多语言应用程序工具包演示

    《Techdays Sweden 2014 多语言应用程序工具包:深入探究JavaScript实现》 "什么时候星期五",这是一个简单却引人深思的问题,它不仅关乎时间的流转,更蕴含了人们对工作与休闲期待的微妙心理。在2014年的Techdays ...

    How-to-create-a-web-api-no-one-wants-to-use:TechDays Sweden 和 NDC London 的“如何创建 Web API”演示

    2. **错误二:复杂的URL结构** - URL应简洁且具有描述性。避免过多的嵌套层级,如`/api/v1/users/{userId}/posts/{postId}/comments/{commentId}`,而是考虑更简单的结构,如`/api/v1/posts/{postId}/comments/{...

    J2EE平台开发课件资料.ppt

    为了深入学习J2EE,可以参考Sun Techdays文档和其他相关的书籍和在线资源,比如Java 2 Platform, Enterprise Edition的设计指南,以及Sun Microsystems提供的关于EJB、JSP和Servlet的官方文档。通过这些资料,开发者...

    J2EE教程.ppt,系统、全面、易学

    为了深入学习J2EE,可以参考Sun Techdays的文档、《Designing Enterprise Applications with the Java 2 Platform, Enterprise Edition》等资料,以及Oracle官方提供的J2EE相关技术文档和教程,如JDBC、EJB、JSP和...

    编程语言的发展趋势及未来方向

    该文档是Anders在比利时的TechDays 2010及荷兰DevDays 2010分别进行了一场演讲,阐述了他眼中对于编程语言的发展趋势及未来方向,本文便对他的观点进行了总结。需要的可以下载使用~不方便,请下方留言!

    Migracion_Power_Buidel Net_migration_PowerBuilder_

    压缩包中的文件"2011_Sybase_TechDays_-_Migrating_PowerBuilder_Applications_to_.NET.pdf"可能包含了详细的技术指导、最佳实践和案例研究,对于进行PowerBuilder到.NET的迁移工作具有很高的参考价值。通过深入阅读...

    miled:使用 MiLED 控制您的 MiLight LimitlessLED Easybulb 灯

    然后是 Microsoft France TechDays 2014。在主题演讲中,我演示了使用 Windows 和 Windows Phone 非常容易拥抱 IoT 浪潮。 MiLight 是此演示的扩展。 实现了大多数可能的场景。 ##如何使用它? 添加对 MiLight....

    ECMAScript-examples:ECMAScript 20XX的示例

    ECMAScript演示版本5 请参阅文件夹“版本5”。2015版及更高版本用安装: 安装+ 运行npm install 编译: 运行npm run build或... Microsoft TechDays,2016年10月4日。 从2015年到今年,在丹麦,挪威,瑞典和荷兰的不同

    程序员是否该放弃VB.Net

    我是否该放弃VB.Net呢?这个问题一次次的出现在我的脑海里,而且这种想法越来越强烈。放弃VB.Net至少能让我的生活变得轻松些。...如果你去一些网站,如Techdays,你根本找不到VB.Net。在那个社区里,如果你

    McGraw-Hill.PowerShell.for.Microsoft.SharePoint.2010.Administrators

    除了日常工作中的大量PowerShell应用,他还是一名讲师和演讲者,积极参与微软TechDays、SharePoint&Exchange Forum等会议,分享自己的知识和经验。 Mattias Karlsson则是一位资深的SharePoint解决方案架构师,他...

    supercharged_01:资产净值技术日2019:增强控件的加载项-01“更简单”

    控制加载项开发已增强该存储库是我的2019年NAV TechDays会议的后续活动,名为Control Add-ins Development Supercharged,并包含了在会议期间演示的演示。 我为会议准备了36个演示,但是我只讲了其中的25个。 在此...

Global site tag (gtag.js) - Google Analytics