发表于: 2017-12-08 22:54:28

1 837


今天完成的事情:

.tuscany

1.什么是Tuscany

++Apache Tuscany 通过为基于服务组件体系结构(SCA(服务组件架构))标准的SOA开发和管理提供全面的基础架构,简化了开发SOA解决方案的任务。以SCA为基础,托斯卡纳为解决方案开发人员提供以下优势:

通过定义结构中的服务及其相互关系,为创建复合应用程序提供模型。这些服务可以用任何技术来实现。

使服务开发人员能够创建仅包含业务逻辑的可重用服务。协议被推出业务逻辑,并通过可插拔绑定来处理。这降低了开发成本。

应用程序可以很容易地适应基础设施的变化而无需重新编码,因为协议是通过可插入的绑定来处理的,并且服务质量(事务,安全)是以声明方式处理的。

现有的应用程序可以使用新的SCA组合。这允许向更灵活的架构逐步增长,外包或为其他人提供服务。

此外,托斯卡纳与各种技术相结合,并提供:

广泛的绑定(可插拔协议)

各种组件类型,包括但不限于JavaC ++BPELSpring和脚本

端到端的服务和数据解决方案,其中包括对JaxbSDO的支持

一个独立工作或与其他应用服务器一起工作的轻量级运行时

一个模块化的架构,可以很容易地与不同的技术进行整合和扩展

web20技术整合

++Tuscany Apache 的开源项目,它是 IBMOracleSAP 等厂商联合成立的 SOA 标准化组织 -OSOA 支持下开发出的 SCA 框架,它既是开源界 SCA(服务组件架构) 的试金石,也是当前开源界最成熟的 SCA 框架之一。

++作为一个轻量级 SCA 架,Tuscany 提供了非常松散耦合的框架结构

2.微服务

++微服务是基于Restful风格的,基于资源及资源操作一组API的集合,可以实现模块儿或者说是特定的业务范围内的一个完全立、细粒度、自包含的一个服务。每个微服务提供一组API,供其他微服务或者应用客户端所用。再具体点;微服务是一种架构风格,一个大型复杂软件应用由一个或多个微服务组成。系统中的各个微服务可被独立部署,各个微服务之间是松耦合的。每个微服务仅关注于完成一件任务并很好地完成该任务。在所有情况下,每个任务代表着一个小的业务能力。

3.具体使用

SCA规范中,component被定义为执行代码的基本单元,每个component对外提供一个功能.在本例中,共有5component,分别实现加减乘除,

++因为tuscany是个基于SCA的框架,所以它要依赖三个tuscanyjar

.其他

++packageimport

import关键字是用来导入包的,因为实际开发中,你不可能把所有的类都放在同一个default包里面。包的作用就是给java类进行分拣,不同业务逻辑的java类放在同一个包中。比如工具包,实体包。

那么,你在a包中的A类,希望调用b包中的B类,就需要导入b包。

http://blog.51cto.com/xgtian/737269

package就是将不同的java类放在不同的包下,因为不这样的话会经常发生包名冲突;

package起名按照命名惯例的话就不会冲突;

++navicat中使用sql语句

先点击选择数据库,然后点击查询,新建查询,输入sql,点击运行

3.贫血模型和充血模型

https://www.zhihu.com/question/20360521

http://blog.csdn.net/zsy_gemini/article/details/9060105

 ++贫血模型,是指model,仅包含状态(属性),不包含行为(方法),采用这种设计时,需要分离出dal,专门用于数据库的操作.

      出血模型,中既包括行为,也包含状态,是真正符合面向对象的设计方式;

因为java是面向对象编程,所以充血模型对于面向对象的编写更符合,而贫血模型就是将对象的属相,行为的两个特征分离开了,但是它看起来层级划分更清楚,而且逻辑层级划分相对简单,所以现在我们编写web项目使用的都是贫血模型.相对的充血模型的难点就在于从复杂的逻辑中将对象的行为分离的恰到好处.

++但是网上说法就是复杂系统中尽量使用充血模型,会使整个项目逻辑更清晰.

++结果就是,充血模型逻辑更清晰也更符合我们说的面向对象编程的本质.但是现在大多数j2ee的程序员对充血模型的理解不透彻,导致项目使用的充血模型反而导致因为业务划分不明晰使得项目更混乱.

4.aop和代理

1.代理

++代理模式

    代理(proxy)是是一种设计模式,提供了对对象另外的访问方式,即通过代理对象访问目标对象,这样做的好处就是可以在不改变目标对象实现的基础上,增加额外的功能操作,即扩展目标对象的功能

     这里使用到一个编程的思想:不要随意的修改别人的代码或方法,如果需要,可以通过代理的方式取解决.

1.1.静态代理

https://www.cnblogs.com/cenyu/p/6289209.html

静态代理在使用时,需要定义接口或者父类,dialing对象于代理对象一起实现相同的接口,或者继承相同的父类.

++可以做到在不修改目标对象的功能前提下,对目标功能拓展.

++缺点:因为代理对象需要与目标对象实现一样的接口,所以会有很多的代理类,类太多.同时一旦接口增加方法,目标对象与代理对象都要维护

1.2动态代理

特点:

1.代理对象,不需要实现接口

2.代理对象的生成,是利用jdkapi.动态的在内存里构建代理对象(需要我们指定代理对象/目标对象实现的接口的类型)

3.动态代理也叫jdk代理或者接口代理

注意该方法是在Proxy类中是静态方法,且接收的三个参数依次为:

l  ClassLoader loader,:指定当前目标对象使用类加载器,获取加载器的方法是固定的

l  Class<?>[] interfaces,:目标对象实现的接口的类型,使用泛型方式确认类型

l  InvocationHandler h:事件处理,执行目标对象的方法时,会触发事件处理器的方法,会把当前执行目标对象的方法作为参数传入

demo跑出来了,暂时不太理解

 

 

明天计划完成的事情:明天深入学习tuscany,sca和代理与aop;

遇到的问题:

1.tuscany导错其他包里的类了

 

收获:

学习tuscany,代理,领域模型.好像是找到自己学习的问题所在了.



返回列表 返回列表
评论

    分享到