SOA/SCA:让关注技术的人走开!

本文探讨了SOA(面向服务的架构)及其具体实现SCA(服务组件架构)的本质,强调二者关注业务而非技术。文章详细解释了SOA的服务与架构概念,明确了SCA在IT基础设施中的作用,并分析了其在不同业务层次的应用。

        好久,也没想出来合适的标题。这个题目似乎有点"标题党",但也是我想表达的意思:SCA不是技术问题,就象有位网友给我留言说的那样,SCA一点技术含量也没有!是的,SCA是提供业务组件化的组件模型,是面向业务的。目标是创建一个新的层 ,以便在IT基础设施的商业逻辑上把应用和中间件分开。

下面从三个方面,从SOA/SCA是什么,SOA/SCA不是什么加以说明:
1、SOA的一个中心思想就是使得企业应用摆脱面向技术的解决方案的束缚,轻松应对企业商业服务变化、发展的需要。SOA是面向服务的,解决的是业务领域的问题,而不是技术领域的问题。
2、SCA是SOA具体实现的一个标准,不是技术框架。
3、SCA的目标是创建一个新的层 ,以便在IT基础设施的商业逻辑上把应用和中间件分开。

一、SOA的问题域——SOA新解

 SOA(Service-Oriented Architecture)被广泛的翻译为“面向服务的架构”,或者面向服务的体系结构。SOA包含了三个方面的含义:面向、服务和架构(体系结构)。面向就是有针对性的或者专注于某个方面的意思,理解起来不会产生歧义。那么什么是服务?什么是架构(体系结构)呢?

1)服务:面向服务的架构”中服务是用来修饰架构的,限定了架构的范围,确定架构的形式。服务是面向服务的体系结构中的核心词,“服务”的使用非常广泛。对于不同的人有不同的理解,那么在SOA这里S“是什么服务”?

请想象以下几个场景:

l     在酒店:服务员为顾客提供点菜、上菜服务,厨师为顾客提供烹调食物的服务,调酒师为顾客提供酒类调制服务,歌手为顾客提供娱乐服务。这些服务都是酒店对顾客提供的餐饮、娱乐休闲等方面的服务。

l     在银行:引导员为顾客提供向导服务,收银员和出纳为顾客提供存取款服务。ATM设备为顾客提供查询帐单,打印账单,购买充值卡等服务。这些都是银行为顾客提供的金融方面的服务。

上面的场景中的酒店、银行都是以企业作为商业服务提供的主体,对服务对象提供本行业内的服务。

对于IT行业的软件企业,对客户(服务对象)提供的也是以企业为主体的服务。企业在领域产业链中位置的不同,提供的服务类型也是不同的。对应这些不同类型的服务可以把企业大致划分为:软件服务提供商和软件开发商。


软件开发商为最终用户和软件服务提供商提供可用的软件产品;软件服务提供商使用这些软件产品为用户提供业务领域的解决方案服务。SOA是软件企业对外提供服务的时所采用的一个企业级的架构。SOA的主要目标是实现业务组件化,并提高组件化业务的重复使用能力,有效地管理及重复使用企业的服务和数据。在SOA化的过程中统一组织目标和方向,达到方法与目标的一致。

2)架构(体系结构):是从整体到部分的最高层次的划分。架构是一套构建系统的准则。通过这套准则,可以把一个复杂的系统划分为一套更简单的子系统的集合,这些子系统之间应该保持相互独立,并与整个系统保持一致。而且每一个子系统还可以继续细分下去,从而构成一个复杂的企业级架构。同时,这个架构是面向业务的,即企业向目标商业领域提供的业务服务。比如:ERP厂商提供ERP的产品服务如果是面向石油化工领域,那么提供的服务就是面向石油化工领域业务的;如果面向电信领域,那么提供的就是电信领域的业务服务。这个架构(体系结构)为同一个ERP厂商向不同领域提供不同服务提供了一个模型。利用SOA面向业务的特点,可以对业务作准确定义、清晰描述,明确业务边界和职责。使业务组件高内聚低耦合,达到业务级别的大粒度的复用。

SOA通过重复利用现有业务组件逻辑,主要解决几个问题:

1) 业务不灵活:企业不能依赖IT的基础结构来快速满足业务需求的变化,缺乏有效的应对市场需求变化的能力;

2)开发效率不高:相同的业务不断重复开发;在相似的业务中无法利用企业已有资源;系统体系设计层次低,只能做到代码层次的复用。这些都会导致企业软件开发成本过高,投入资金无法回收。

二、SOA/SCA解决的是哪个领域,哪个层面的问题?

三、SCA的的几个层次
  
1、SCA规范的层次

SCA是一个规范,针对于SCA使用的不同,可以分为几个层面:

事件
角色
提供业务需求
用户
使用SCA规范开发业务组件
软件服务提供商
提供遵循SCA规范的容器实现
SCA容器实现厂商
提供SCA规范的底层构件实现
构件库、SCA底层功能的实现厂商
 
做SCA那个层面的事件就决定了企业的角色和定位。
2、SCA业务层次分解
在SCA中每个业务组件包含若干个不同的层面,不同的层面对应不同的角色和任务。

所处的角度
SCA
业务主管和业务分析人员
一组服务,它们构成 IT 资产(功能),可用于构建解决方案并向客户和合作伙伴公开这些解决方案。
企业架构师
一组体系结构原理和模式,用于处理解决方案的总体特征:模块性、封装、松散耦合、关注事项分离、重用、可组合性,等等。
项目经理
一种支持大规模并行开发的开发方法。
测试人员和质量保证工程师
一种模块化从而简化总体系统测试的方法。
软件开发人员
一种包括诸如 Web 服务等标准、工具和技术的编程模型。
这个层次为SCA的实施提供了过程参考。SCA中每个业务组件包含若干个不同的层面,可以使用不同的方法实现,并借助一些工具来辅助实施。比如,在业务主管和业务分析人员的角度可以使用UML来做业务的分析。架构师可以使用Spring、OSGi等技术框架和设计模式实现架构层的结构。
SCA的目标是创建一个新的层,以便在IT基础设施的商业逻辑上把业务和实现分开。它能够简化面向业务需要环境下的应用开发过程,使系统更加关注业务逻辑。通过业务组件提供业务逻辑,SCA实现提供了强有力的组合能力,可以将嵌入SCA环境的实现充分组合复用。但是一旦涉及如何实现具体的逻辑,就要进入SCA业务层面之下了。
如果SCA业务分解层次与软件工程开发过程瀑布开发模型的几个阶段比较,大致对应关系如下:

软件工程过程
SCA 对应层次
需求获取和需求分析
业务主管和业务分析人员:
一组服务,它们构成 IT 资产(功能),可用于构建解决方案并向客户和合作伙伴公开这些解决方案。
需求分析和概要设计
企业架构师:
一组体系结构原理和模式,用于处理解决方案的总体特征:模块性、封装、松散耦合、关注事项分离、重用、可组合性,等等。
详细设计和项目组织
项目经理:
一种支持大规模并行开发的开发方法。
测试
测试人员和质量保证工程师:
一种模块化从而简化总体系统测试的方法。
编码
软件开发人员:
一种包括诸如 Web 服务等标准、工具和技术的编程模型。
 
实施SCA可以借鉴软件开发过程,对每个层次进行组织。

四、与SCA相关的应用案例

<待续>

 

 

书籍目录: 第1篇 Visual C#基础编程实例 实例1 C#经典程序--Hello World 实例2 C#的简单输入输出(I/O) 实例3 C#的复杂输入输出(I/O) 实例4 通信录管理与维护 实例5 文件与目录管理 实例6 用户界面上的“Hello,World!” 实例7 组件化“Welcome”程序 实例8 网络上的“Hello World” 实例9 Ref、Out与Params描述符的应用 实例10 C#自动内存管理的应用 实例11 一个有趣栈类的实现 实例12 垃圾收集器管理与应用 实例13 垃圾收集器算法控制与使用 实例14 调用栈记录异常点 实例15 使用C#异常的栈跟踪 实例16 运行期间检测变量类型 实例17 常用值类型的原型定义 实例18 打印杨辉三角形 实例19 比较学生信息 实例20 获取车辆信息 实例21 简单角色类游戏的制作 实例22 旅馆住宿登记情况表制作 实例23 长命名空间的应用 实例24 文件特征计数 实例25 文本框输入数据的验证 第2篇 Visual C#中级编程实例 实例26 窗体背景颜色动态变化 实例27 C#属性及应用 实例28 C#属性Metadata的管理与应用 实例29 使用Context属性创建CallThreshold Service 实例30 使用应用程序域 实例31 创建C#组件与客户应用程序 实例32 用OpenFileDialog类浏览或打开文件 实例33 在C#程序中获得Win32 API 实例34 从C#中调用COM组件 实例35 在C#程序中修改HTML文件标题 实例36 下载Web页面 实例37 创建多线程应用程序 实例38 多线程的多次加载 实例39 单个线程同步运行 实例40 多线程同步运行 实例41 线程Thread Relative Static跟踪与实现 实例42 线程池(ThreadPool)的应用 实例43 多线程互斥运行 实例44 多线程时钟应用程序 实例45 监视多线程 实例46 防止多线程应用程序死锁 实例47 文件同步操作与应用 实例48 在COM程序设计中使用.NET组件 实例49 文件异步操作与多处理器系统 实例50 获取网络主机IP地址 实例51 C#对话信息框的应用 实例52 在C#中快速调用Windows API 实例53 摄氏温度与华氏温度间相互转换(1) 实例54 摄氏温度与华氏温度间相互转换(2) 实例55 使用FileSystemWatcher组件监视Web服务器 实例56 由颜色名字产生对应颜色 实例57 使用索引指示器分析域名 实例58 C#版本的PingC 实例59 DNS客户程序 实例60 一个有趣的DOS实用程序 实例61 代表元基本应用 实例62 有趣的事件代表元 实例63 随机连续偶数发生事件处理 实例64 有趣的列表框窗体 实例65 数学函数应用 第3篇 Visual C#高级编程实例 实例66 文件夹中的文件列表 实例67 读写文本文件 实例68 读写二进制文件 实例69 显示系统日期与时间(1) 实例70 显示差值的日期与时间(2) 实例71 时钟发生器应用 实例72 在.NET程序设计中使用ATL 实例73 浏览Internet文件 实例74 在C#应用程序中打开浏览器 实例75 显示Internet文件信息 实例76 Puzzle游戏 实例77 MDI窗体菜单设计(1) 实例78 MDI窗体菜单设计(2) 实例79 创建一个C#编辑器 实例80 网络端口扫描器 实例81 深入WinForms-地址簿应用(1) 实例82 深入WinForms--Image Viewer应用程序(2) 实例83 开饭时间提醒器(Meal Reminder) 实例84 服务器端C#实例 实例85 数字时钟设计技术 实例86 自动编译C#程序AutoCompiler 实例87 使用C#与ASP+编写File Uploder 实例88 访问注册表中的硬件信息 实例89 设置“开始”菜单 实例90 在“新建”中添加自己的文件类型 实例91 显示Exchange软件的客户名称 实例92 读取Windows注册表信息 实例93 自定义AboutBox组件 实例94 自定义控件及应用 实例95 Java与C#混合编程的应用 实例96 C#与C++混合编程的应用 实例97 C#与VB混合编程的应用 实例98 C#组件与C#客户程序编程的应用 实例99 C#与XML联合应用XMLHelper 实例100 在C#中部署应用
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值