M-A-T Tory's Blog

  C++博客 :: 首页 :: 新随笔 :: 联系 :: 聚合  :: 管理 ::
  16 随笔 :: 1 文章 :: 1 评论 :: 0 Trackbacks

#

支持服务 ___________________________
Various Artist_______http://www.pcgames.com.cn/fight/warcraft/zblx/0604/783821.html

除运行时基础设施和 SOA 核心之外,WebSphere Process Server 还提供了多种服务组件。支持服务是所有集成解决方案中都需要的组件,其中包括数据转换和同步服务。

  • 接口映射:现有组件的接口可以在语义上匹配,但是在语法上不匹配(例如,updateCustomer 和 updateCustomerInDB2)。对于已存在的组件和需要访问的服务更为如此。接口映射通过转换这些调用使您能够调用这些组件。此外,可以使用业务对象转换服务调用的实际业务对象参数。
  • 业务对象映射:可以使用业务对象映射将某种类型的业务对象转换成另一种类型的业务对象。可以通过多种方式使用这些映射,例如,在接口映射中将某种类型的参数数据转换成另一种类型。
  • 关系:您可能需要在业务集成场景或者不同的后端系统(如 ERP 系统和 CRM 系统)中访问相同的数据(如客户记录)。保持业务对象同步的一个常见的问题就是不同的后端系统使用不同的关键字表示同一对象。可以使用 WebSphere Process Server 中的关系服务建立这些完全不同的后端系统中的对象之间的关系实例。通常在将一种业务对象格式转换成另一种格式时,从业务对象映射中访问这些关系。
  • 选择器:可以使用选择器组件动态选择和调用共享同一接口的不同服务。例如,客户支持流程在假日期间使用的人工任务实现可以与正常工作日中的不同。WebSphere Process Server 提供了一个基于 Web 的接口,以启用对选择标准和目标服务的动态更新,这意味着,如果启用对集成解决方案的动态更改,该选择器组件还可以调用随后部署的模块。
  • Java:可以使用 Java 组件调用 Java 代码。

服务组件

WebSphere Process Server 提供了四个服务组件:

  • 业务流程:WebSphere Process Server 中的业务流程组件实现了与 Web 服务业务流程执行语言(Web Services Business Process Execution Language,WS-BPEL)兼容的流程引擎。可以开发和部署业务流程,它支持长时间运行和短时间运行的业务流程以及可伸缩的基础设施中的补偿模型。您可以在 WebSphere Integration Developer 中创建 WS-BPEL 模型,也可以从在 WebSphere Business Modeler 中创建的业务模型导入。
  • 人工任务:人工任务是 WebSphere Process Server 中的独立组件,可以用来向员工分配任务或调用任何其他服务。此外,人工任务管理器还支持临时创建任务和跟踪任务。可以使用现有的 LDAP 目录(以及操作系统资源库和 WebSphere 用户注册表)访问员工信息。WebSphere Process Server 还支持人工任务的多级升级,其中包括电子邮件通知和优先级老化。WebSphere Process Server 包括可扩展的 Web 客户机,可以用于处理任务或者流程。该 Web 客户机基于一组可重用的 Java Server Faces (JSF) 组件,这些组件可以用于创建自定义客户机或者将人工任务功能嵌入其他的 Web 应用程序。
  • 业务状态机:业务状态机提供了建模业务流程的另一种方式。通过这种方式,可以根据状态和事件表示公司的业务流程,有时使用这种方式进行建模比采用面向图形的业务流程模型简单。订购流程就是这样一个例子,您可以在订单处理过程中的任何时刻修改或者取消订单,直到实际完成订单为止。
  • 业务规则:业务规则是一种通过外化业务功能实现和执行业务策略的方式。这为响应更快的业务环境启用了业务流程的动态更改。基于 Eclipse 的桌面工具支持业务规则的创建。在业务需求指示时,业务分析师可以使用 WebSphere Process Server 提供的基于 Web 的运行时工具更新业务规则,而不会影响其他服务。

可以通过 WebSphere Application Server 管理控制台和配置功能的扩展配置和管理 WebSphere Process Server 的所有功能。这就为管理整个应用程序堆栈提供了一席之地。



可以使用 WebSphere Process Server 做些什么?

事务、安全性、集群和工作负载管理:WebSphere Process Server 解决方案使用 WebSphere Application Server 功能,因而向您提供了一个可伸缩的、可靠的业务集成环境,可以用于事务、安全性、集群和工作负载管理。

完整的 ACID 事务支持:WebSphere Process Server 为业务流程提供了完整的 ACID 事务支持,既包括短时间运行的流程(端对端的一个事务)也包括长时间运行的流程(多个流程)。可以在工具中修改事务边界来将业务流程中的多个步骤集中到一个事务。此外,它还支持 WS-BPEL 规范中定义的业务流程的灵活补偿。

恢复管理器与恢复控制台:WebSphere Process Server 包括恢复管理器和恢复控制台。如果在执行业务集成应用程序期间出现故障,则服务器将检测该故障,并允许您(管理员)在恢复控制台管理出错的应用程序。

封装业务功能:WebSphere Process Server 中的唯一体系结构允许将业务功能封装到各个模块,然后单独进行更新。例如,您可以使用包含用于实际审批的人工任务的审批模块,随后使用包含业务规则的另一个审批模块替换它。这一更改对于该模块的使用者是完全透明的。此外,封装的概念确保了数据和接口定义在使用它们的位置封装。例如,可以隐藏如何在模块内的后端系统中表示使用者的细节,而模块本身将具有一般业务对象的通用接口作为数据公开。这一规范的数据表示还启用了任何给定集成应用程序中的高度重用。

WebSphere Process Server 如何处理现有系统和新的应用程序?

WebSphere Process Server 提供了许多选项,可以用于将公司的现有系统与新的集成应用程序相集成。

WebSphere Application Server 消息资源:WebSphere Process Server 使用 WebSphere Application Server 中的消息资源绑定到现有的 WebSphere MQ 网络。可以配置 WebSphere Application Server V6 附带的本机 Java JMS 提供程序,以连接到现有的 WebSphere MQ Queue Manager,这样您就可以创建 WebSphere MQ 网络的扩展。

本机 Web 服务互操作性:WebSphere Process Server 包含对 Web 服务的完整支持,其中包括通过 HTTP 对 SOAP 的支持或者通过 JMS 对 SOAP 的支持。WebSphere Process Server 还包括对导入和导出 WebSphere Process Server 组件、JMS 和 Enterprise Java Session Bean 的支持。

WebSphere Adapters:WebSphere Adapters 包括特定于应用程序的适配器(如用于 Siebel、SAP 或者 PeopleSoft 的适配器),以及技术适配器(如用于关系数据库或者平面文件的适配器)。

WPS V6运行环境建立在WebSphere应用服务器之上,其最基础的部分是SOA核心机制。它基于Web服务(Web Service)规范,实现并规定了WPS V6中服务组件的交互方式和统一的业务模型,是整个WPS V6运行环境的基础。

  • 服务组件架构(Service Component Architecture,SCA)提供了统一的服务调用模型。
  • 业务对象(Business Object,BO)提供了统一的业务数据模型。
  • 通用事件基础设施(Common Event Infrastructure,CEI),以统一的事件格式(Common Base Event,CBE)记录运行环境中的事件,为WebSphere监测器(WebSphere Monitor)提供数据存储。

在SOA核心机制之上的是WPS V6的支撑服务,包括:

  • SCA接口转接器(Interface Mediator)提供了SCA接口转接的功能,它可以把同一SCA模块内不同SCA组件接合起来,即使它们的接口并不匹配。接口转接器与业务对象映射服务(Map Service)以及关系服务(Relationship Service)一起,完成接口转接的功能。
  • Selector提供输入输出的路由选择功能,动态决定调用目标,降低客户和调用目标间的耦合度。

在支撑服务之上的是WPS V6运行环境进行业务处理的主体服务组件,包括

  • 业务流程引擎(Business Process Engine,BPE)。
  • 人工任务管理器(Human Task Manager,HTM)。
  • 业务状态机(Business State Machine,BSM)。
  • 业务规则(Business Rules,BR)。

WPS V6运行环境建立在WebSphere应用服务器之上,其最基础的部分是SOA核心机制。它基于Web服务(Web Service)规范,实现并规定了WPS V6中服务组件的交互方式和统一的业务模型,是整个WPS V6运行环境的基础。

  • 服务组件架构(Service Component Architecture,SCA)提供了统一的服务调用模型。
  • 业务对象(Business Object,BO)提供了统一的业务数据模型。
  • 通用事件基础设施(Common Event Infrastructure,CEI),以统一的事件格式(Common Base Event,CBE)记录运行环境中的事件,为WebSphere监测器(WebSphere Monitor)提供数据存储。

在SOA核心机制之上的是WPS V6的支撑服务,包括:

  • SCA接口转接器(Interface Mediator)提供了SCA接口转接的功能,它可以把同一SCA模块内不同SCA组件接合起来,即使它们的接口并不匹配。接口转接器与业务对象映射服务(Map Service)以及关系服务(Relationship Service)一起,完成接口转接的功能。
  • Selector提供输入输出的路由选择功能,动态决定调用目标,降低客户和调用目标间的耦合度。

在支撑服务之上的是WPS V6运行环境进行业务处理的主体服务组件,包括

  • 业务流程引擎(Business Process Engine,BPE)。
  • 人工任务管理器(Human Task Manager,HTM)。
  • 业务状态机(Business State Machine,BSM)。
  • 业务规则(Business Rules,BR)。

3.1 服务组件架构

SCA(Service Component Architecture) 是一种通用的面向业务服务的组件模型。它使现有的各种服务,包括EJB,Web服务, Java代码以及业务流程执行语言(Business Process Execution Language,BPEL)等,有了统一的抽象表示,从而实现了业务逻辑和实现逻辑的分离。

posted @ 2006-05-02 22:37 Tory 阅读(175) | 评论 (0)编辑 收藏

Table 1. SOA layers of adoption

Adoption level Name Description
1 Implementing individual Web services Creating services from tasks contained in new or existing applications
2 Service-oriented integration of business functions Integrating services across multiple applications inside and outside the enterprise for a business objective
3 Enterprise-wide IT transformation An architected implementation enabling integration across business functions throughout an enterprise
4 On Demand Business Transformation Broad transformation of existing business models or the deployment of new business models

Table 2. The six approaches to SOA

Approach Description (typical project owner characterization) Qualifications
Business process driven My business processes need to tap into resources, and each activity requires the invocation of IT functionality; I want that functionality to be available in a flexible, replaceable way. Top-down
Tool-based MDA I want to define a model (business model) and then let my tools generate the detail for me. Top-down
Wrap legacy I have existing systems I have been investing heaviliy on, but they are not resilient. I want new functionality added quickly, but these systems are partitioned. They are silos where functions are locked into them. Bottom-up
Componentize legacy Decompose the monolithic legacy systems into modules using compiler-based tools. Bottom-up
Data-driven Provide access to information using services without having to expose schemas or implementation decisions on the provider side. Data-focused
Message-driven "Just want to have these systems integrate, communicate, over standard, non-proprietary protocols." Service-Oriented Integration of Applications and Systems

Table 3. Patterns and their corresponding benefits

Context Pattern Applicability
Silo; concentrated functionality Hard-coded (not a pattern, but a point in time state) Point in time; low risk; low-changing, high-performance systems
Distributed; multi-point of access Point-to-point exposure Expose existing functionality rapidly; unlock value fast; access embedded functionality
Wrap a legacy function and make it callable through Web services Service adaptor Consumer needs access to functionality that is not service-enabled ( access to a legacy system through a service invocation, for example -- a Web service)
Access a service using its proxy if you do not have direct access to the service provider?s service description and are unable to directly invoke the service Service proxy Provides consumers with an SOA interface
Provide flexibility in the choice of the service provider Remote service strategy Provides flexibility in changing service providers based on quality of service or functionality considerations. This opens up possibilities in expediting mergers and acquisitions and flexible alteration of the provider when you consolidate application portfolios.
Eliminate redundant functionality; refactor and consolidate or, in some cases, replace existing systems Single point of access Provides one access point to a number of potential variants in functionality. A service strategy often requires a single point of access.
One project or LOB at a time, yet relies on others for some functions not yet exposed as services Virtual provider Non-existent providers; ramp up service critical mass
Single point of access Service integrator Routing, transformation
General enterprise integration approach Enterprise service bus Mediation; routing; transformation, policies, rules, events; inside the organization or between partners in ecosystem/value-net
The Nirvana of SOA; dynamic reconfiguration through context-aware services relying on business domain specific capabilities Integrated service ecosystem Provides dynamic configuration capabilities to a set of semantically interrelated industry specific business partners that leverage and recombine the ecosystem capabilities to provide greater value to themselves and the ecosystem as a whole


Often an initial challenge is the concrete determination of the value proposition for using SOA within a project, line of business, or organization. This has to do with flexibility and the ability to alter the actual service provider who implements a service once their quality of service dwindles or they fail to provide the required functionality. This flexibility, which is the primary value of SOA, is overcome by understanding the steps in achieving flexibility through a remote service strategy. There are two more challenges that we describe and overcome with the use of patterns presented here.


SOA is a journey of gradual, small transformations that increasingly decouple service descriptions from service implementations offered by multiple service providers. The solutions below are descriptions of how these issues have been recurrently solved and may serve as a pattern to help you on your next project. Like any other pattern, these must also be adapted to fit the context and the forces that shape your individual problem space: the tradeoffs and considerations of your project, whether organizational or technical, make a difference, and you can determine if you need to skip a step from one pattern to another or to partially implement the pattern

The purely object-oriented strategy pattern primarily relies on inheritance-based polymorphism to create a family of interchangeable algorithms that are swapped out based on context. Rather than have an object hierarchy, in an SOA context, we need to be able to change the service provider with minimal or no impact on the consumer?s perception of the service, thus varying the actual implementer of the service description. The implementer may, in most cases, be a provider of a remote unit of functionality, somewhere in the internal network or Internet. Therefore, for
example, a service provider for a VerifyAddress service in an OrderEntry application may need to be changed because our quality of service needs have changed due to higher transaction volumes or security constraints. Or, the provider has decided to charge twice the amount for the same basic service, which we have relied on, in the past. Now, we would like to have the flexibility of changing service providers with IT and Business impunity, which means minimal changes to IT systems and no impact on the business or customer experience in their online shopping experience.


以上是今天看得两篇英文文章中一些摘要,文章很长,说实话没看太明白。只能在文章中找一些比较重要的东西贴在这,希望能有用。
原文链接:http://www-128.ibm.com/developerworks/webservices/library/ws-soa-soi/
                     http://www-128.ibm.com/developerworks/webservices/library/ws-soa-soi2/

6. 开发过程

尽管以服务为中心的企业集成在开发阶段和普通的应用开发并没有本质的区别,但是它在角色,职责、工具和方法还是有不少自己的特色。下图汇总了本文示例中开发角色,职责,开发方法和工具,仅供大家参考。


表2:角色划分和工具支持 

SOA 的一个架构模板

SOA 的一个抽象观点将它描述为与业务过程结合在一起的合成服务的部分分层架构。 图 3 呈现了这种类型的架构。

服务和组建之间的关系是,企业级的组件(大粒度的企业或者业务线组件)实现该服务并且负责提供它们的功能和维持它们的服务质量。通过组合这些公开的服务到合成的应用程序,就可以支持业务过程流。综合的架构通过使用 Enterprise Service Bus(ESB)支持这些服务、组件和流程的路由、中介和转化。为了服务质量和非功能性的需求,必须监视和管理已经部署的服务。


图 3:SOA 层
SOA 层

对于每一层,你都必须做设计和架构决定。因此,为了帮助用文件说明你的 SOA,你可能应该创建文档,由每个层相应的部分所组成。

这里是为你的 SOA 架构文档设计的模板:

  1. 范围 <此架构适用于企业的哪个领域>
  2. 操作系统层
    1. 打包的应用程序
    2. 自定义应用程序
    3. 架构决策
  3. 企业组件层
    1. 企业组件支持的功能范围
    2. <这个企业组件支持业务领域、目标和过程>
    3. 关于控制的决策
      1. <作为这个客户端组织内部企业组件来选择某物的标准>
    4. 架构决策
  4. 服务层
    1. 服务分类表
    2. 架构决策
  5. 业务过程和合成层
    1. 业务过程可以表现为舞蹈编排(choreographies)
    2. 架构决策
      1. <哪一个过程需要编排在舞蹈编排里面以及哪一个镶嵌在应用程序里面?>
  6. 访问或者表现层
    1. <证明这层中 Web 服务和 SOA 的含意;即便要。例如,在用户接口级别上调用 Web 服务的 portlet 的使用,以及在此层机能上的含意。>
  7. 集成层
    1. <包含 ESB 因素>
    1. <我们如何确保使用服务的客户端系统级的一致性(SLA)和服务质量(QoS)?>
    2. 安全问题和决策
    3. 性能问题和决策
    4. 技术和标准的局限性以及决策
    5. 服务的监控和管理
      1. 描述和决策

现在,让我们更加仔细的描述一下每一层以及每一层之间的合成。

层 1:操作系统层。本层包含现有的自定义构建的应用程序,也叫做 遗留系统,包含现有的 CRM 和 ERP 打包应用程序,以及 较旧的基于对象的系统实现,还有业务智能应用程序。SOA 的复合层架构可以利用现有的系统并且用基于服务的集成技术来集成它们。

层 2:企业组件层。本层由那些负责实现功能和保持公开服务 QoS 的企业组件组成。这些特殊的组件是企业和业务单元级支持的企业资产的受管理和控制的集合。 同企业范围资产一样,他们通过架构最佳实践应用程序来负责确保 SLAs 的一致。大多数情况下,本层使用基于容器的技术,比如实现组件、负载均衡、高可用性和工作量管理的应用服务器。

层 3:服务层。业务选择来支持和公开的服务处在这一层。它们可以被 发现或者直接静态绑定,接下来被调用,或者可能的话,编排到合成服务中。这个服务公开层同样提供了获取企业范围组件,业务单元特定组件,以及有些情况下,特定项目组建的机制,并且以服务描述的形式具体化了他们的接口子集。因此,企业组件使用它们接口提供的功能在运行时提供服务实现。在这一层的接口公开为一个服务描述,在这层中他们被公开以提供使用。他们可以独立存在或者作为合成服务。

层 4:业务过程合成或编排层。第三层中公开的服务的合成和编排在这一层中被定义。通过配合、编排,服务被绑定成一个流程,并且从而作为单独的应用程序而共同作用。这些应用程序支持特殊的用例和业务过程。这里,可视的流程合成工具,比如 IBM® WebSphere® Business Integration Modeler 或者 Websphere Application Developer Integration Edition,都可以用来设计应用程序流程。

层 5:访问或表现层。尽管这一层经常超出了围绕 SOA 讨论的范围,但是它却变得越来越有意义。在这里我描述它因为标准越来越集中,比如用于 Remote Portlets Version 2.0 的 Web 服务和其他技术,这些技术追求在应用程序接口或者表现层来利用 Web 服务。你可以把它作为将来的层用来满足将来的解决方案的需求。注意到以下这两点是非常重要的:SOA 将用户接口从组件中分离出来;最终你需要提供从访问路线到服务或者合成服务的端到端解决方案。

层 6:集成(ESB)。这一层使服务可以集成,通过引入一系列可靠的性能的集合,比如智能路由,协议中介和其他转化机制,经常被描述为 ESB(参阅 参考资料)。Web Services Description Language(WSDL)制定了绑定,其包含提供服务的地址。另一方面,ESB 为集成提供了位置独立机制。

层 7:QoS。这一层提供了监视,管理和维持诸如安全,性能和可用性等 QoS 的能力。这是一个通过 sense-and-respond 机制和监测 SOA 应用程序健康的工具来进行的后台处理过程,包括 WS-Management 和其他相关协议的所有的重要的标准实现以及为 SOA 实现服务质量的标准。


 

posted @ 2006-05-01 22:35 Tory 阅读(137) | 评论 (0)编辑 收藏

     摘要: 1. 随机数  // Create a random number generator,   // seeds with current time by default:Random rand = new Random();    int i, j, k;   // Choose value from 1 to 100:    j = rand.nextInt(100) + 1;2. Aliasi...  阅读全文
posted @ 2006-04-24 22:36 Tory 阅读(300) | 评论 (0)编辑 收藏

在本文中,我将谈论如何将 Web 服务及非 Web 服务的多重 SOA 合并成三维的整合中心来连接各种后端企业主机系统,包括:

  • 企业资源规划(Enterprise Resource Planning,ERP)
  • 客户关系管理(Customer Relationship Management,CRM)
  • 供应链管理(Supply Chain Management,SCM)
  • 其它企业应用程序集成(Enterprise Application Integration,EAI)的应用程序
  • 虚拟的数据库管理系统

我也将讨论中心如何接受输入数据——事件和数据——来源于各种资源。我使用 X、Y 和 Z 轴在三维空间中展示图片。







什么是 SOA 整合中心?

SOA 整合中心是 Web 服务与非 Web 服务的合并的 SOA 与后端企业系统的集成。它使得 Web 服务及非 Web 服务能够与运行在不同平台上的服务器、主机和微机上的企业系统交互。

然而,SOA 整合中心不同于面向服务的整合(service-oriented integration,SOI)。SOI 将 Web 服务与运行在不同平台上的主机系统相整合。它使得 Web 服务能够通过网关与主机交互。您需要 ASP.Net 或其它技术获取网关来执行普通的 Web 服务。

SOA 是基于一套业务流程的 Web 服务的交互的体系结构。您可以在第一个 SOA 中获取 Web 服务来在第二个 SOA 中复用代表 Web 服务的服务。Web 服务可能由一些小的 Web 服务组成,它们将服务传递给客户。

您使用描述语言(例如,SOAP)或其它描述交互的方法(例如,REST)来定义交互。每个交互都是独立且松耦合的,以便每个交互都能独立于任何其它交互。这与依赖网关来与 Web 服务集成的紧耦合的主机系统形成对照。







SOA 层

我们看一下二维空间中的 SOA 层。之后,我将向您展示为何三维的整合中心是更好的选择。

SOA 的 IBM 版本的前五层(请见参考资料)是(从下至上):

  • 操作系统
  • 基于组件的(系统)
  • 服务
  • 业务流程
  • 表示层

第六层是集成体系结构(也作为企业集成总线(Enterprise Integration Bus)),它垂直覆盖了前五层。下一层是服务质量、安全、管理及监控层。

显而易见,操作层由 EAI 打包的应用程序、遗留、老式的面向对象及商业智能应用程序组成。它们都可以通过使用 SOI(在项目级或企业级)来同第二层的基于组件的系统相集成。然后,将组件结合或集成到复合应用程序中来提供第三层的服务。

第四层向您展示了那些服务是如何根据一套业务流程从一个流向另一个的。更高一层通过远程门户网站 Web 服务(Web Services for Remote Portlet,WSRP)标准或其它面向人的表示层的方法来将 Web 服务应用于应用程序接口中。

二维静态的 SOA 可能是有问题的。幸好,整合中心的发展意味着 SOA 将变成三维动态的。







可复用的体系结构

我们假设该 Web 服务需要在 .Net 平台上或随后的 WebSphere 平台上运行前从主机系统获取信息。您需要将 Web 服务与执行普通 Web 服务的主机网关相整合。

所有 Web 服务彼此以 XML 传递信息——多个 SOA 中的业务流程应当如何整合及其在提供的服务中如何实现。虽然在多个 SOA 中 Web 服务是可复用的,但是我进一步将 SOA 处理成可复用的体系结构。

我有多个实例,它们关于将可复用的 SOA 合并成与主机系统相连的整合中心,我提出如下四步来创建中心:

  1. 将作为可复用的体系结构的 SOA 数组划分成两个模块。第一模块主要包括整合 Web 服务的机制,而第二个模块重在服务交互。
  2. 为了获得最佳的速度及可靠性,将每个 SOA 优化成更紧凑的形式。检查可能影响性能的磁盘碎片空间。
  3. 将 SOA 按照重要性及复用频率区分优先次序。检查用户对于更改 SOA 优先权的需求。
  4. 将 SOA 合并成连接到一个或更多主机系统的整合中心,这些主机系统运行在不同的平台上。检查先前没有被提出的互用性问题。






模块化的 SOA 库

您可以开发模块化的和优化的 SOA 库,这些 SOA 被分成了不同类别的层次。每个类别可以通过层次最低级别的 Web 服务被进一步划分成 SOA 的子组。

您可以将库用作到 Web 服务应用程序的动态链接。当应用程序需要访问模块化的 SOA 时,它将自己链接到库中。当它不再需要检索到的 SOA 时,将从库中释放自己,当提高速度及性能时节省磁盘空间。

下列是库中模块化的 SOA 的一些实例:

  • 卫生保健 SOA
  • 零售管理 SOA
  • 物流 SOA
  • 无线射频识别(Radio Frequency Identification,RFID)SOA






库用例

假设您使用在库中使用最后三个 SOA(零售管理、物流和 RFID)来开发整合中心并将它们连接到主机网关中。今后,用户的需求改变了——取消零售管理 SOA 并以卫生保健 SOA 代替它。

同时,用新版本更新物流 SOA 使其迎合用户的需求。在 RFID SOA 中包含新的子组之后,将所有子组区分优先次序并将它们优化。







二维非共享的 SOA

我们看一下 Blue Repository 中的三个模块化的 SOA(零售管理、物流和 RFID)的二维中心(请见图 1)。所有都连接到主机网关中。例如,如果您使用 ASP.Net,那么您可以通过网关来执行普通的 Web 服务。


图 1. 非共享的 SOA 的二维中心
非共享的 SOA 的二维中心

如您所见,SOA 不是共享的。您可以将这三者结合成复合应用程序以减少到主机网关的连接器的数目。







二维共享的 SOA

图 2 所示,RFID SOA 与物流 SOA 在一边相交叠。交叠区域用黄色带黑色斜线来显示。它包含 SOA 用于生成一个或两个服务的资源。


图 2. 共享的 SOA 的二维中心
共享的 SOA 的二维中心






代表三维空间中的中心

您怎样在二维计算机屏幕上设想三维的中心?处理该问题的一种方法是在二维平面中画出整合中心的 X、Y 和 Z 轴。另一种方法是使用软件简单地将 2D 图片转换成 3D 的版本。

在三维的中心,您可以在不改变 SOA 的情况下将现有的主机替换成新样式或另一供应商的样式。另外,您可以重新配置或更改 SOA 的优先权以适合新的或已更新的主机系统对于更改用户及组织的需求的响应。







第一个三维中心

考虑如图 3 所示的三维空间中的整合中心。如您所见,RFID SOA 中部分位于物流 SOA 之后。RFID SOA 的隐藏部分用到物流 SOA 的蓝色线画出。


图 3. 第一个共享的 SOA 的三维中心
第一个共享的 SOA 的三维中心

如您所见,连接器从 RFID SOA 通过(而不是环绕)物流 SOA 到主机网关。这意味着从 RFID SOA 而来的连接器与物流 SOA 共享了一些资源。







第二个三维中心

设想 RFID SOA 的重叠部分在物流 SOA 的前面,但是不是从任一侧,如图 4 所示。这给了 RFID SOA 更多的选择来共享物流 SOA 中的大量资源。


图 4. 第二个共享的 SOA 的三维中心
第二个共享的 SOA 的三维中心

如您所见,连接器从 RFID SOA 通过物流 SOA。






有多少共享的 SOA?

在三维中心中您可以共享的 SOA 的数目依赖于项目复杂性、合并问题及业务流程中的利弊。向您避免 SOA 的过量开销一样,您需要确保在开发的整个生命周期中不会在三维空间中发生中心超负荷的问题。您应当在周期的每个时刻都测试超负荷。







结束语

在三维中心中合并 SOA 需要预先规划来设置开发和共享的 SOA 的数目限制。您应当同业务分析师开发组交流有关各种合并问题的信息。您将发现解决合并问题会使您开发三维中心的工作变得非常容易。您可以开发在中心可复用和共享的 SOA。分析师将发现解决该问题会使他们的设计和分析三维空间的中心的工作变得非常容易。他们可以确定在不会导致中心超负荷的前提下哪个主机系统可以连接到中心。

posted @ 2006-04-24 14:37 Tory 阅读(160) | 评论 (0)编辑 收藏

体系结构中的集成需求

讨论至此,集成已限定为通过基于组件的服务进行的应用程序的集成,但是集成这个主题比这要宽泛得多。在估计一个体系结构的需求时,必须考虑一些集成的类型或“方式”。您必须考虑如下几方面:

  • 应用程序集成
  • 终端用户界面集成
  • 应用程序连接
  • 流程集成
  • 信息集成
  • 构建集成开发模型。

终端用户界面集成涉及如何集成特定用户访问的全部应用程序和服务来提供可用、高效、一致的界面。它是一个正在发展的主题,而新的发展在近期将主要取决于 Portal 服务器使用方面的进展。虽然 Portlet 已经可以通过 Web 服务调用本地服务组件,但是新技术(比如用户远程 Portlet 的 Web 服务)将使内容和应用程序提供者能够创建交互式服务,这些服务在因特网上可以通过 Portal 即插即用,从而为很多新的集成提供了可能。

应用程序连接是一种集成方式,它涉及体系结构必须支持的所有类型的连接。在一个层次上,这意味着数据的同步和异步通信、路由、转换和高速分布、以及网关和协议转换器等等。而在另一个层次上,它还与输入和输出或源(sources)和汇(sinks)的虚拟化有关,正如您在 EWA 的通道(Channel)和协议转换程序(Protocol Handlers)中所看到的。这里的问题在于数据移入、移出以及在实现体系结构的框架中移动的方式。

流程集成涉及开发映射到业务流程和为业务流程提供解决方案的计算流程、将应用程序集成到流程以及集成一些流程与其他一些流程。虽然第一项需求可能看起来似乎无关紧要,不过就是体系结构提供一个模拟基本业务问题的环境,但是,如果在这一层中不进行充分的分析,体系结构的任何实现注定都将失败,不管它采用的技术是多么的巧妙。将应用程序集成到流程可能包括企业中的应用程序,也可能涉及调用远程系统中的应用程序或服务,而这些远程系统多半属于业务合作伙伴。同样地,流程层集成可能涉及整个流程的集成而不仅仅是来自外部源的单个服务,比如供应链管理或金融服务这样横跨多个机构的流程。为了满足这样的应用程序和流程的集成需求,可以使用像 BPEL4WS 这样的技术,而应用程序框架也可以使用程序配置 Scheme(比如在 EWA 中看到的)。实际上,可以在底层使用 BPEL4WS 来构造一个高层配置 Scheme,然后通过一个引擎来驱动,这个引擎不仅提供流管理,而且还提供其他功能。然而,在构建这一切之前,您应该首先了解体系结构方面的需求,然后,再构建合适的基础架构。

信息集成是一个流程,其作用在于为所有需要它的应用程序提供对企业中全部数据的一致访问,而不管这些应用程序是以什么形式需要它,也不受数据的格式、来源或位置的限制。在实现时,这项需求可能包括 适配器和转换引擎,不过它通常要比这复杂。而关键的概念往往是数据的虚拟化,这可能包括 数据总线(Data Bus)的开发,企业中的所有应用程序都通过标准服务或接口从数据总线中请求数据。因此,不管数据是来自电子数据表、本地文件、SQL 或 DL/I 数据库,还是来自内存中的数据存储,都可以将数据提供给应用程序。永久存储中的数据格式可能还不为应用程序所知。应用程序更不知道管理数据的操作系统,因而访问 AIX 或 Linux 系统中的本地文件的方式与这些文件放在 Windows、OS/2、ZOS 或其他系统中时访问它们的方式相同。同样地,数据的位置也是透明的;由于它是由共同的服务提供的,所以是由访问服务而不是由应用程序来负责查询数据(无论是本地的还是远程的),然后按照请求的格式提供数据。

应用程序开发环境的最后一项需求是,必须考虑可能在企业中实现的集成的所有方式和层次,并且为它们的开发和部署做好准备。要想真正做到健壮,开发环境必须包括(和执行)一种方法来明确地规定如何设计和构建服务和组件,以便促进重用、消除冗余和简化测试、部署和维护。

上面列出的所有集成方式在任何企业中都有一定程度的体现,尽管在某些情况下它们可能是简化的,或者没有明确地进行定义;因而,在着手设计新的体系结构框架时,您必须全面的考虑它们。特定的 IT 环境可能只有很少的数据源类型,因此,消息集成可能会很简单。同样地,应用程序连接的作用域可能也很有限。虽然如此,如果希望框架能够随着企业的成长和变化成功地继续得以保持,则框架中的集成功能仍然必须由服务提供,而不是由特定的应用程序来完成。

posted @ 2006-04-21 17:35 Tory 阅读(165) | 评论 (0)编辑 收藏

Where storage lives

It’s useful to visualize some aspects of how things are laid out while the program is running—in particular how memory is arranged. There are six different places to store data: Feedback

  1. Registers. This is the fastest storage because it exists in a place different from that of other storage: inside the processor. However, the number of registers is severely limited, so registers are allocated by the compiler according to its needs. You don’t have direct control, nor do you see any evidence in your programs that registers even exist. Feedback
  2. The stack. This lives in the general random-access memory (RAM) area, but has direct support from the processor via its stack pointer. The stack pointer is moved down to create new memory and moved up to release that memory. This is an extremely fast and efficient way to allocate storage, second only to registers. The Java compiler must know, while it is creating the program, the exact size and lifetime of all the data that is stored on the stack, because it must generate the code to move the stack pointer up and down. This constraint places limits on the flexibility of your programs, so while some Java storage exists on the stack—in particular, object references—Java objects themselves are not placed on the stack. Feedback
  3. The heap. This is a general-purpose pool of memory (also in the RAM area) where all Java objects live. The nice thing about the heap is that, unlike the stack, the compiler doesn’t need to know how much storage it needs to allocate from the heap or how long that storage must stay on the heap. Thus, there’s a great deal of flexibility in using storage on the heap. Whenever you need to create an object, you simply write the code to create it by using new,and the storage is allocated on the heap when that code is executed. Of course there’s a price you pay for this flexibility. It takes more time to allocate heap storage than it does to allocate stack storage (if you even could create objects on the stack in Java, as you can in C++). Feedback
  4. Static storage. “Static” is used here in the sense of “in a fixed location” (although it’s also in RAM). Static storage contains data that is available for the entire time a program is running. You can use the static keyword to specify that a particular element of an object is static, but Java objects themselves are never placed in static storage. Feedback
  5. Constant storage. Constant values are often placed directly in the program code, which is safe since they can never change. Sometimes constants are cordoned off by themselves so that they can be optionally placed in read-only memory (ROM), in embedded systems. Feedback
  6. Non-RAM storage. If data lives completely outside a program, it can exist while the program is not running, outside the control of the program. The two primary examples of this are streamed objects, in which objects are turned into streams of bytes, generally to be sent to another machine, and persistent objects, in which the objects are placed on disk so they will hold their state even when the program is terminated. The trick with these types of storage is turning the objects into something that can exist on the other medium, and yet can be resurrected into a regular RAM-based object when necessary. Java provides support for lightweight persistence, and future versions of Java might provide more complete solutions for persistence. Feedback
posted @ 2006-04-20 22:40 Tory 阅读(106) | 评论 (0)编辑 收藏

仅列出标题
共2页: 1 2