随着对SAP了解和理解的加深,不难发现SAP除了OS几乎提供了所有软件和solution, 并且不断在适应和更新,不间断的吸收引入业界的新技术,改造调整自己原有的技术, 新技术名词,新概念也层出不穷,比如mySAP, NetWeaver, ESA, AP, TP, BPP等等, 这些概念或名词,经常让人confuse.其实,这完全正常,用逻辑去试图严密清晰的建立和揭示他们之间的联系和区别,本身不大可能,用一个大的概念来概括SAP的架构也是很难的。因为,这些名词或概念, 他们有的不只是一个产品, 有的又只是产品中蕴含的,或是技术发展蓝图中的一个概念, 他们的边界本身不甚清晰, 他们之间不可避免会有Overlap. 比如DataArchiving, 它是一项负责保存应用数据的技术, 最早是在ABAP上实现的, 但是在SAP J2EE中也有实现, 所以, 它既属于NetWeaver, 也属于mySAP. 无论是mySAP, 还是NetWeaver, 他们都不是代表一项技术, 而都是代表以一组技术(或概念)为核心的一整套技术(或概念)体系.这也是完全可以理解,作为一个优秀的企业,如同世界上其它的优秀领先企业一样,他们不可能停滞不前的,他们曾经优秀的传统和内在的管理和文化都要求他们不断的创新、进取,与时俱进,如同生物遗传基因一样,只要没有重大的环境或人为灾难,基因是不会发生变异的,从而企业也不大会发生畸变,不大会停滞落伍衰败没落。
SAP发展历史
NetWeaver
NetWeaver
刚刚提到, NetWeaver是取代SAP Basis的新一代技术*台(TP). 简单说, NetWeaver体现了在2000年到目前为止的以Java/SOA为主要商务应用实现技术的时代里, SAP在技术上与业界技术的整合.
它主要是在J2ee application server和ABAP application Server的基础上提供了统一的技术基础设施. 除了J2EE以外, NetWeaver还提供了WebDynpro和Portal作为 Web 开发的基础设施, 用户管理, 和.NET 或其他J2EE*台的集成, 于R/3的连接, ESA的实现等等.
所有开发都在NetWeaver Studio中进行.NetWeaver Studio是基于Eclipse 的开发环境.
下面这张图描述了NetWeaver技术*台的主要功能:
这张图显示了NetWeaver的最基本组件. 事实上整个NetWeaver几乎涵盖了所有电子商务会用到的技术, 下面简单列一下主要的部分:
SAP Web AS:
包括了SAP J2EE engine和abap application server
下面就是SAP WEBAS 的架构
server 架构:
Cluster
CIM: Internet Communication Manager. 负责接受Web请求. 支持HTTP, HTTPS, SMTP. 通过URL, 它可以区分是对ABAP BSP(Business Server Page)的请求, 还是对J2EE的请求, 从而dispatch到不同的engine上.
Message Server: 是全局的消息服务器, 负责server间的异步或同步通信
Engueue Server: 是全局的队列服务器, 负责保存全局队列和锁.任何应用都可以申请使用它.
Work Process: 是ABAP engine中的一个工作进程.
JCO/Fast RFC: 用于基于SAP自己的远程调用规范RFC的调用
Gateway: 我的理解是用于翻译RFC call, RFC call的协议是CPI-C(Common Programming Interface – Communications, SAP专门用于程序对程序的远程调用的协议, 说白了就是一个定义描述函数名,参数之类调用需要的信息的数据格式).
SAP J2EE Engine: 2002年, SAP收购了保加利亚的J2EE Application Server 开发商Inqmire(全称In-Q-My). 开发自己的J2EE Engine.目前的稳定版本为6.4. 这个Engine给人的感觉就是三个字”巨无霸”. 没有2G的内存是很难看到它在工作的. 通常巨无霸给人的另一个柑桔就是笨重和土气. 7.0以前的版本的管理方式比较土, 是基于rich client的. 7.0以后才逐步使用web和IDE作为管理工具.
下面是SAP J2EE Engine 的简单架构图
下图是SAP J2ee engine的Cluster 架构
NetWeaver Studio: 是SAP的NetWeaver 开发*台. SAP的几乎所有开发解决方案都通过这个IDE实现. NetWeaver Studio IDE和WebSphere Studio一样, 是在Ecllipse的基础上开发的.目前的稳定版本也是6.4.
SAP DB: 就是MAXDB. 现在与MySQL技术合作. 把源代码提供给MySQL. SAP将不在放更多人力在DB的开发上了.也许DB和OS是SAP唯一暂时不愿去占领的技术.
WebDynpro: MVC架构的Web 开发解决方案. 提供所见即所得的UI开发方式. 不但是基于SAP J2EE engine, 也可以用ABAP开发
Portal: Portals是一家Israel公司Top Tier的产品, 2001 SAP收购Top Tier并组建SAP Portals公司. Top Tier的总裁Shai Agaci, 现在是SAP Border Member, 是呼声最高的未来SAP CEO. Portal提供了另一种Web开发模式, 同时提供Content Management和Knowledge management, Portal 可以基于Tomcat, 但现在是SAP J2EE engine的一部分.
XI(Exchange Infrastucture): SAP 的系统总线.
TREX: SAP的搜索引擎
RFC: Remote Function Call. SAP 的远程调用技术. 支持ABAP<->JAVA, JAVA<->JAVA, ABAP<->ABAP之间的调用, 旧的RFC使用SAP CPI-C协议, 必须通过SAP Gateway进行翻译, 新的fast RFC则不需要使用CPI-C协议.
下图是RFC在Web AS中的位置.
下图是JCO(Java connector)和SAP RFC之间的关系:
WebService: SAP J2EE engine 和NetWeaver Developer Studio提供了WebService 和UDDI的支持.通过studio, 可以使用wizard简单的生成Web Service 的client proxy和server side, 不需要写任何WSDL. 但是WebService server端必须先implement成EJB(session bean).
SLD: System Landscape Directory. SAP Web AS提供的系统管理方案。使用SLD可以方便的管理整个庞大SAP 系统群。
ESA (Enterprise Service Architecture)
ESA (Enterprise Service Architecture)
简单的说, ESA是SAP 基于SOA(Service Oriented Architecture)的概念。主要目的通过WebService, 进一步提高SAP各业务系统间的统一性, 可重用性,建议更方便的业务流程开发模式。主要手段为
建立以Service为中心的开发模式. 因为service相对于组建或者其他软件封装技术来说, 有耦合度低,跨Internet, 范围更广, 跨*台, 粒度更自由等优点。
在web service的基础上, 建立统一的service infrastructure(就是后面说到的ESI).
建立所谓“模式-驱动”的开发模式。 其实, 我的理解是,在强大的Service Infrastructure基础上,有统一的数据类型来描述数据,有Business Object来封装逻辑,有UI pattern来封装UI, 有了这些,就可以用一个简单的设计工具,就可以快速的描述数据, 拼装业务逻辑,建立UI,这就是使所谓的“模式-驱动”的开发模式,成为现实。这里指的开发,不是简单应用的开发,而是业务流程的开发。这各设计工具, 就是Visual Composure.
先介绍几个概念:
Service:
Service就是SOA中的service概念. 它提供了企业的某个业务功能.
ESA中有三种Service:
Core Service: 提供对Business Object的直接访问, 如retrieve, access, action...
Compound Service: 由对多个core service的call组成.
Enterprise Service: 也是一种compound service, 但是它是组成Business Process的直接service. 它提供企业的关键业务功能.
Business Object:
BO可以看作是Service的实现. Service的定义和其实现无关. SAP在ESA中主要用BO实现 Service的功能.
BO是结构化的. 每个BO之间由Association连接.但是只有一个root node.
一个BO可以有多个service interface, 一个service interface由多个operation组成
BO定义了一组Attribute和Operation. 每个BO都由一个Business Object provider class 实现, 它实现了一组Generic Interface.
BO的attirbute的type必须是Global Data Types(GDT)
Global Data Type
要统一service interface的定义, 就必须统一数据类型.
Business Process:
LDU(Logical Deployment Unit)
一个LDU由一组语义相关的componenet组成, 为了可以简单的activate/deactive一个业务功能.s
Process Agent:
提供Message-Based的LDU之间的通信.
下图是ESA实现:
ESI(Enterprise Service Infrastructure) 为ESA的实现提供了基于Web Service的统一的Service定义。使“模式驱动”的开发成为可能。这种设计由需求开始, 定义服务, 服务驱动实现.
下图显示了ESA的开发模式:
ESI由三部分组成:
ESD: Enterprise Service Designtime: 提供ESI的设计时的支持。包括三个项目:
ESR(Enterprise Service Repository), 包括ES Object, Modelling, ESR Framework
ES Java Tools, 包括Repository Browser, Service and Consumer Definition Editor, Service Configuration and Consumer configuration Editor, Proxy Generation.
ES ABAP Tools: 包括Repository Browser, Service and Consumer Definition Editor, Proxy Generation
ESF: Enterprise Service Framework, 提供了ESI的运行实现。(应该叫做Enterprise Server Engine)
ESF Runtime Architecture,如图:
ESP: Enterprise Service Protocol: 定义所有ESI的协议