MyEclipse 中開(kāi)發(fā)SCA應(yīng)用入門SCA:service component architectur
這是一種面向服務(wù)的基礎(chǔ)架構(gòu)設(shè)計(jì),方便了在此基礎(chǔ)上實(shí)現(xiàn)SOA的應(yīng)用。SCA只是一個(gè)規(guī)范,對(duì)這個(gè)規(guī)范的實(shí)現(xiàn)有多種,其中Apache的Tuscany SCA就是其中一種。 首先,我只是結(jié)合我自己的理解簡(jiǎn)單介紹一下SCA,然后在把我自己寫的一個(gè)最簡(jiǎn)單的HelloWorld如何搭建起來(lái)的做一個(gè)描述。 借助Tuscany的實(shí)現(xiàn)描述SCA 運(yùn)行時(shí): 首先是運(yùn)行環(huán)境:包括操作系統(tǒng),虛擬機(jī),容器等等。誠(chéng)摯為Hosting Platforms 在此之上是運(yùn)行時(shí)的Core 和Extension部分,這個(gè)設(shè)計(jì)是微內(nèi)核的,Core就是這個(gè)核,Core提供的功能,運(yùn)行時(shí)實(shí)現(xiàn),以及提供Extension的機(jī)制。 在Core之外提供Extension:比如Apache tuscany 提供的SDO,DAS都是這種Extension。 這樣一種相當(dāng)于插件機(jī)制的設(shè)計(jì)增加了靈活性。 在Core和extension之上就是:Tuscany API,提供給開(kāi)發(fā)者更多的方便。 在SCA中有幾個(gè)很重要的概念: Component:具有獨(dú)立功能的程序模塊。 Service:component提供給外部的服務(wù)。 Referrence:對(duì)其他服務(wù)的引用。 Composite:多個(gè)component的高一層次封裝。 Wire:鏈接Referrence和component。 Promote:同一個(gè)composite內(nèi)多個(gè)component之間的鏈接。 Domain: 一個(gè)composite是一個(gè)最簡(jiǎn)單的Domain。Domain是對(duì)n個(gè)composite組織的高一層次封裝。 基本的概念就只描述這些了,下面看看如何把最簡(jiǎn)單的SCA HelloWorld運(yùn)行起來(lái)。 1,到Apache官方網(wǎng)站下載Tuscany SCA binary package 和對(duì)應(yīng)源碼。 2,在MyEclipse中新建UserLibrary,把binary package下的jar包全部加入到其中,并關(guān)聯(lián)下載的源代碼到sca-all.jar 3,新建工程,并引入剛才建立的UserLibrary。 4,其實(shí)運(yùn)行HelloWorld很簡(jiǎn)單: 建立接口:
package Hello; import org.osoa.sca.annotations.Remotable; public interface IHello { public String show(String name); } 然后實(shí)現(xiàn)接口:
package Hello; public class HelloImpl implements IHello{ public String show(String name) { return "Hello"+name; } } 接下來(lái)就是要寫一個(gè)Hello.composite 配置文件:
<?xml version="1.0" encoding="UTF-8"?> <composite xmlns="http://www./xmlns/sca/1.0" name="hello"> <component name="Hello"> <implementation.java class="Hello.HelloImpl"/> <service name="Hello"> <binding.ws uri="hello-there"/> <t:binding.jsonrpc uri="hello-nicer"/> </service> </component> </composite> 這個(gè)文件其實(shí)就對(duì)應(yīng)了Composite ,component,service 等概念。比較容易明白。 還需要一個(gè)Client來(lái)調(diào)用這個(gè)composite:
package Hello; import org.apache.tuscany.sca.host.embedded.SCADomain; public class HelloClient { public static void main(String[] args) { SCADomain domain=SCADomain.newInstance("hello.composite"); IHello ihello= domain.getService(IHello.class, "Hello"); if(ihello!=null) ihello.show("ccx"); domain.close(); } } 這個(gè)HelloClient從配置文件Hello.composite讀取配置并建立了domain,然后或得Hello服務(wù)接口,并完成對(duì)服務(wù)的調(diào)用。 這個(gè)例子很簡(jiǎn)單,但也可以對(duì)SCA中一些最基本的概念有所了解。有了這個(gè)的基礎(chǔ)上,可以再深入學(xué)習(xí)更多的東西了。 將持續(xù)關(guān)注SCA。and OSGI |
|