MyEclipse 中开发SCA应用入门SCA:service component architectur
这是一种面向服务的基础架构设计,方便了在此基础上实现SOA的应用。SCA只是一个规范,对这个规范的实现有多种,其中Apache的Tuscany SCA就是其中一种。 首先,我只是结合我自己的理解简单介绍一下SCA,然后在把我自己写的一个最简单的HelloWorld如何搭建起来的做一个描述。 借助Tuscany的实现描述SCA 运行时: 首先是运行环境:包括操作系统,虚拟机,容器等等。诚挚为Hosting Platforms 在此之上是运行时的Core 和Extension部分,这个设计是微内核的,Core就是这个核,Core提供的功能,运行时实现,以及提供Extension的机制。 在Core之外提供Extension:比如Apache tuscany 提供的SDO,DAS都是这种Extension。 这样一种相当于插件机制的设计增加了灵活性。 在Core和extension之上就是:Tuscany API,提供给开发者更多的方便。 在SCA中有几个很重要的概念: Component:具有独立功能的程序模块。 Service:component提供给外部的服务。 Referrence:对其他服务的引用。 Composite:多个component的高一层次封装。 Wire:链接Referrence和component。 Promote:同一个composite内多个component之间的链接。 Domain: 一个composite是一个最简单的Domain。Domain是对n个composite组织的高一层次封装。 基本的概念就只描述这些了,下面看看如何把最简单的SCA HelloWorld运行起来。 1,到Apache官方网站下载Tuscany SCA binary package 和对应源码。 2,在MyEclipse中新建UserLibrary,把binary package下的jar包全部加入到其中,并关联下载的源代码到sca-all.jar 3,新建工程,并引入刚才建立的UserLibrary。 4,其实运行HelloWorld很简单: 建立接口:
package Hello; import org.osoa.sca.annotations.Remotable; public interface IHello { public String show(String name); } 然后实现接口:
package Hello; public class HelloImpl implements IHello{ public String show(String name) { return "Hello"+name; } } 接下来就是要写一个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> 这个文件其实就对应了Composite ,component,service 等概念。比较容易明白。 还需要一个Client来调用这个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(); } } 这个HelloClient从配置文件Hello.composite读取配置并建立了domain,然后或得Hello服务接口,并完成对服务的调用。 这个例子很简单,但也可以对SCA中一些最基本的概念有所了解。有了这个的基础上,可以再深入学习更多的东西了。 将持续关注SCA。and OSGI |
|