已锁定 主题:只因为你不懂SOA
该帖已经被评为隐藏帖
|
|
---|---|
作者 | 正文 |
发表时间:2008-09-19
有句广告词:高度决定视野
|
|
返回顶楼 | |
发表时间:2008-09-19
和.NET这个名字一样,有点不知所云的一个概念
|
|
返回顶楼 | |
发表时间:2008-09-19
starfeng 写道 看一小段代码,Spring风格,很POJO:
public class CalculatorService { private AddService addService; @Reference public void setAddService(AddService addService) { this.addService = addService; } public double add(double n1, double n2) { return addService.add(n1, n2); } } 那么,addService.add(n1, n2)是什么调用? 在SCA的架构体系下: 1. 他可以是简单的java调用——你能方便而快速的做JUnit Test. 2. 他可以也可是复杂一点的EJB调用——事务,分布式,Cache等你所想要的企业级特性的支持 3. 他还可以是复杂一点的Web Service调用,具体提供这个add服务的也许是一个.Net程序,又或者是一个八百年前的老系统已有的服务。 。。。 另外,CalculatorService又是什么? 在SCA的架构体系下: 1. 他可以只是一个普通的POJO,供我的们Action或JSP直接使用 2. 他可以是一个DWR对象,供Javascript直接调用 3. 他还可以是一个Web Service对象,你都可以从.Net中使用这个服务 。。。 是的,他可以做最复杂的事情,但也是最简单的POJO。对于开发者来说,只用关心他的业务,其它的一切都可以忽略。 。。。。。。SOA面向的层次被你严重地降低了。。。。一种程序员眼中的狭隘的SOA |
|
返回顶楼 | |
发表时间:2008-09-19
wym0291 写道 starfeng 写道 看一小段代码,Spring风格,很POJO:
public class CalculatorService { private AddService addService; @Reference public void setAddService(AddService addService) { this.addService = addService; } public double add(double n1, double n2) { return addService.add(n1, n2); } } 那么,addService.add(n1, n2)是什么调用? 在SCA的架构体系下: 1. 他可以是简单的java调用——你能方便而快速的做JUnit Test. 2. 他可以也可是复杂一点的EJB调用——事务,分布式,Cache等你所想要的企业级特性的支持 3. 他还可以是复杂一点的Web Service调用,具体提供这个add服务的也许是一个.Net程序,又或者是一个八百年前的老系统已有的服务。 。。。 另外,CalculatorService又是什么? 在SCA的架构体系下: 1. 他可以只是一个普通的POJO,供我的们Action或JSP直接使用 2. 他可以是一个DWR对象,供Javascript直接调用 3. 他还可以是一个Web Service对象,你都可以从.Net中使用这个服务 。。。 是的,他可以做最复杂的事情,但也是最简单的POJO。对于开发者来说,只用关心他的业务,其它的一切都可以忽略。 。。。。。。SOA面向的层次被你严重地降低了。。。。一种程序员眼中的狭隘的SOA 大公司忽悠小公司,小公司再忽悠客户,最后是自己忽悠自己 |
|
返回顶楼 | |
发表时间:2008-09-19
wym0291 写道 。。。。。。SOA面向的层次被你严重地降低了。。。。一种程序员眼中的狭隘的SOA 单讲概念,说是忽悠,用代码举例,又成了狭隘。。。难 |
|
返回顶楼 | |
发表时间:2008-09-19
我前面引了一个例子,addService.add(n1, n2),有人不明白。多说一点:
SOA面向服务,支持多协议的系统集成,有个比喻说得好,不同服务,如不同的人,说英语的,说法语,说中文的,都不好相互交流,引进SOA这个天才语言家后,一切畅通。这里,其实就是SOA架构的一个强项:协义与业务是脱离的,任何宣称实现SOA的架构就能做到这一点,无论是Mule, ServiceMix 或是 tuscany。 协义是独立的,也意味着我们可以用我们最简单的语言(协义)——汉语(比方,普通java调用),去沟通,面对讲英语(比方,Web Service调用)的人也只需说汉语。因为,SOA架构能自动转换语言(协义)。 语言有很多种,都有生成的土壤和优势所在,协议也是一样。Http调用,DWR调用,ROR中的Rest调用,Web Service调用,普通的java对象调用等等,很多很多。无论将来是否有更多(比方,暂且来一个:带规则及权限较验的Struts调用),他们都只是一种调用的协议,在SOA(到少SCA)的架构体系中,是平等与无差别的,因此,我们也就不必在在上面浪费时间,只接用我们觉得最简单最熟悉的普通Java调用就好了,用了一种也就是用了所有。这也就是我前面举个例子说addService.add是XXX,也可是XXX,还可是XXX的原因。 事实上,你去看现在的轻量级的开发方式(比方dwr,rails),那些快(非全部),只不过快在了一个较轻的协议,或者快在一个语议较丰富的协议。而在这协议这一块,正是SOA架构的优势所在(非唯一)。 |
|
返回顶楼 | |
发表时间:2008-09-19
starfeng 写道 那么,addService.add(n1, n2)是什么调用? 这例子不就一DI么 他可以有不同的实现: 1. PoJoAddServiceImpl——你能方便而快速的做JUnit Test. 2. EjbAddServiceImpl——事务,分布式,Cache等你所想要的企业级特性的支持 3. SoapAddServiceImpl——具体提供这个add服务的也许是一个.Net程序,又或者是一个八百年前的老系统已有的服务 兄弟,整点有用的吧,上次听到别人忽悠这些名词还是在猪肉卖四元钱一斤的时候... |
|
返回顶楼 | |
发表时间:2008-09-20
脑袋看的晕晕的,还是去睡觉吧,下次来的时候,希望能看懂一点点东东
|
|
返回顶楼 | |
发表时间:2008-09-20
忽悠的最高境界就是把自己忽悠了。
|
|
返回顶楼 | |
发表时间:2008-09-20
LZ真能扯.
|
|
返回顶楼 | |