论坛首页 Java企业应用论坛

只因为你不懂SOA

浏览 27935 次
该帖已经被评为隐藏帖
作者 正文
   发表时间:2008-09-19  
有句广告词:高度决定视野
1 请登录后投票
   发表时间:2008-09-19  
和.NET这个名字一样,有点不知所云的一个概念
0 请登录后投票
   发表时间: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
0 请登录后投票
   发表时间: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

大公司忽悠小公司,小公司再忽悠客户,最后是自己忽悠自己
0 请登录后投票
   发表时间:2008-09-19  
wym0291 写道

。。。。。。SOA面向的层次被你严重地降低了。。。。一种程序员眼中的狭隘的SOA


单讲概念,说是忽悠,用代码举例,又成了狭隘。。。难
0 请登录后投票
   发表时间: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架构的优势所在(非唯一)。
0 请登录后投票
   发表时间:2008-09-19  
starfeng 写道

那么,addService.add(n1, n2)是什么调用?

这例子不就一DI么
他可以有不同的实现:
1. PoJoAddServiceImpl——你能方便而快速的做JUnit Test.
2. EjbAddServiceImpl——事务,分布式,Cache等你所想要的企业级特性的支持
3. SoapAddServiceImpl——具体提供这个add服务的也许是一个.Net程序,又或者是一个八百年前的老系统已有的服务

兄弟,整点有用的吧,上次听到别人忽悠这些名词还是在猪肉卖四元钱一斤的时候...
11 请登录后投票
   发表时间:2008-09-20  
脑袋看的晕晕的,还是去睡觉吧,下次来的时候,希望能看懂一点点东东
0 请登录后投票
   发表时间:2008-09-20  
忽悠的最高境界就是把自己忽悠了。
1 请登录后投票
   发表时间:2008-09-20  
LZ真能扯.
0 请登录后投票
论坛首页 Java企业应用版

跳转论坛:
Global site tag (gtag.js) - Google Analytics