如何从新开发的程序中提炼服务

现在已确写在SOA的开发中也不就是将所有的功能都开发为公开的服务,而只是将与其它软件会发生交互的部分才设计为服务。
通过这样的一种方式,就必须从新开发的程序中提炼出服务。那么这里应当怎么的提炼出来服务呢,提炼出来的服务又与程序中其它的功能是一种什么样的关系呢?
在看SOA的很多介绍中都是将原有系统作为实现SOA服务的一个底层的依赖,根据这一种设想,那么根据以前的分层关系:x.IServices x.IServices.Impls ...就应当在x.IServices层之上建立EnterpriseServices,并且实现这个EnterpriseServices,并且在实现中调用x.IServices层。可以充分的利用已有的软件实现,包装出新的功能。那么也就表示开发新的软件中使用SOA与改造已有软件提供SOA的功能是相同的。而这里的EnterpriseServices只是将x.IServices包装为一个或多个服务而已。而且可能在有的情况之下可能EnterriseServices所提供的功能与x.IServices中的功能相同,并且这样不会有什么问题吗。
还有一种方式就是根据已有程序的功能和数据直接全新建立一个EnterpriseServices与x.IServices这一部分不产生关系,这样做的好处理是,因为x.IServices毕竟不是以实现EnterpriseServices为核心,而是以实现软件自己的功能为核心的,其性能不能够保证。数据实体等肯定需要重新为服务的需求而定义。而如果全新开发一个EnterpriseServices那么就能够为EnterpriseServices专门进行开发。但这里所产生的问题是,EnterpriseServices对x.IService极其实现的数据库数据的依赖关系是客观存在的,并且也不能够充分利用已有的代码。
这两种方式怎样好一点呢,或者说说了这么长时间的SOA,软件出来最后应当是个什么样子呢。是整个系统都是全SOA化呢,还是只是部分SOA化。思考很久不知道答案。

posted on 2008-03-15 09:43  蓝色游骑兵  阅读(165)  评论(0编辑  收藏  举报

导航