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.osoa.org/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
评论
发表评论

您还没有登录,请登录后发表评论

hustlong
搜索本博客
最近加入圈子
存档
最新评论