请bang老师帮我看下这样说面向服务和面向对象的关系是否正确,谢谢

08-11-12 Disa16

SOA,从最近所看的一些文章以及课堂上的学习,我觉得面向服务的提法只是对以

前面向对象的方法的改进,最初的面向对象的设计方法中,是抽象出系统里的对象.现在的

面向服务是抽象出系统里的服务.在面向对象的分析中是先找出系统的功能职责,按功能

职责分析出用例,然后考虑用例所涉及到的对象,这些对象就是我们利用面向对象的分析

方法所得出的最结果——对象类.在面向服务的分析中,则是分解业务模型,并将业务模

型分解为业务流程和基本功能,然后这些业务流程和基本功能就是我们所需要服务.根据

这些基本功能和基本业务流程的服务相互组合搭配,可以得到不同的服务,来满足当业

务需求变更时方便的重新组合出适当的服务,即新的业务流程等。

  我个人认为,现在SOA虽然已经提出很多年,但它任然还不够成熟。与面向对象

的方相比,它不容易直接对系统所需的业务模型进行分解,而且即使是分解往往会走向

面向对象的分析中,将系统按功能职责分析成用例,因为分析成用例,更容易理解。而

且我还认为,面向服务的分析中,可以适当借鉴面向对象分析中的部分内容。

  我认为,如果在面向服务的分析中,也采用面向对象的方法,首先分析出精粒

度的用例,这些用例代表系统的主要业务流程,然后将业务流程进行细化,得到细粒度

的用例,这些细粒度的用例就是我们系统的基本服务(细粒度的服务)。然后反过来,

通过这些细粒度的服务组合出系统所需的业务流程。

如果不对的话我想请bang老师给我指点一下“面向对象”和“面向服务”两者之间的区别和关联等等,谢谢

freebox
2008-11-13 06:21

我理解SOA的适用范围是针对更大粒度的系统整合方面而言的,服务之所以能够存在,原因就是为了和其它异构系统通信,封闭系统都是自我管理的,不需要对外开放什么东西。

像医药系统,小规模的时候它就管理一个医院甚至就管理一个科室,这时候由面向对象来处理问题,很好的适应需求变化,它自己是封闭的,管理自己就够了,不需要给外面信息,也不需要从外面获取信息。

但是后来发展了,他们说不单我们医院需要这东西管理处方,我们还要知道别家医院的处方情况,怎么办呢?让别家医院也用这套就完了,但是想得挺好,别家医院自己已经有了一套,人家用得好好的不想换,这就存在两个结构不同的系统需要通信的问题,结构不能统一,就得开放一些服务来通信,SOA在这时候就有用了。

面向对象要求紧耦合,就算有什么IOC、DI存在,也只不过是把实现部分拉出去而已,SOA就不需要,没接口都可以。