发表于: 2019-10-25 20:25:49

1 792


一、今天完成的事
1.解决了昨天的bug
这个地方就很坑,
第一,composite文件要用xml格式
第二,修改pom文件
要把composite用include加进去
第三,导包:Tuscany已经不维护了,最新的版本就是2.0.1
需要导入三个包
<!--tuscanyRmi-->
<dependency>
<groupId>org.apache.tuscany.sca</groupId>
<artifactId>tuscany-base-runtime</artifactId>
<version>2.0.1</version>
</dependency>
<dependency>
<groupId>org.apache.tuscany.sca.aggregation</groupId>
<artifactId>tuscany-binding-rmi-runtime-aggregation</artifactId>
<version>2.0.1</version>
</dependency>
<dependency>
<groupId>org.apache.tuscany.sca.aggregation</groupId>
<artifactId>tuscany-binding-ws-runtime-axis2-aggregation</artifactId>
<version>2.0.1</version>
</dependency>

第四,@Reference要用sca的,不然会报以下错误
所有东西都修改完之后

把client分开为server和client,实现本地远程调用的demo
CalculatorServer
public class CalculatorServer {
public static void main(String[] args) {
Node node = NodeFactory.newInstance().createNode("Calculator.composite");
node.start();
System.out.println("service启动");
}
}

CalculatorClient
public class CalculatorClient {
public static void main(String[] args) {
CalculatorService c= null;
try {
c = (CalculatorService) Naming.lookup("//localhost:8099/CalculatorRMIService");
catch (NotBoundException | MalformedURLException | RemoteException e) {
e.printStackTrace();
}
assert c != null;
System.out.println(c.add(1,2));
}
}

配置文件里修改
运行结果


二、遇到的问题
改bug很烦,心情不太好,效率比较低
三、收获
1.SOA的起源
基于组件的编程一直是软件业简化编程和提高效率和质量的一个重要方法,但是往往对于不同语言我们有不同的组件模型,从而需要不同的调用方式。比如在J2EE技术领域中,我们就有EJB,POJO,JDBC等,这对开发人员来说是一个极大的挑战。为了给这些不同的接口提供一个统一的调用方式,IBM提出了WSIF。但是WSIF没有形成一个基于组件的架构模型,因此IBM在此基础上推出了一个面向服务的组件模型SOA(Service Oritented Architecture)
2.什么是SOA
SOA,面向服务的体系结构(service-oriented architecture)是一个组件模型,它将应用程序的不同功能单元(称为服务)通过这些服务之间定义良好的接口和契约联系起来。接口是采用中立的方式进行定义的,它应该独立于实现服务的硬件平台、操作系统和编程语言。
3.为什么需要面向服务架构
面向服务的根本好处是便于管理,也是应用大到一定时候的必然产物。这往往和组织架构之间相契合。其实不合理的服务划分也会带来服务之间的混乱。
面向服务是一个解耦的过程,松耦合降低了服务之间的依赖,也意味着服务一个服务出现故障的时候不容易引起连锁反应,也能更好的控制服务与服务之间的关系与优先级。
不同语言之间的通信

4.面向服务架构的好处
在为什么要面向服务架构里面已经讲到了这样的好处。这里再举一些简单的例子来阐述。比如说一个应用部署在一台机器上,然而不管如何优化单机是无法撑起整个应用。这时候有两种思路。
水平扩展,即整个应用作为一个整体,然后水平扩展到多台机器上。
服务拆分,这是解耦的过程,也符合软件工程中“高内聚,低耦合”的思想。往往第一步会进行模块化。这样做可能还不够,我们需要让它们能够独立生存。这样一个大的服务“分裂”成一个一个比较小能够独立生成的服务,这里的关键是可以独立生存,意味着它们可以部署在不同的机器上,一定程度上达到了“分布式”的效果。
@Remotable注解
@Remotable
public interface CalculatorService {
四、明天的计划
把之前的项目拆分,使用Tuscany框架实现RMI




返回列表 返回列表
评论

    分享到