发表于: 2017-12-08 22:54:28
1 837
++Apache Tuscany 通过为基于服务组件体系结构(SCA(服务组件架构))标准的SOA开发和管理提供全面的基础架构,简化了开发SOA解决方案的任务。以SCA为基础,托斯卡纳为解决方案开发人员提供以下优势:
通过定义结构中的服务及其相互关系,为创建复合应用程序提供模型。这些服务可以用任何技术来实现。
使服务开发人员能够创建仅包含业务逻辑的可重用服务。协议被推出业务逻辑,并通过可插拔绑定来处理。这降低了开发成本。
应用程序可以很容易地适应基础设施的变化而无需重新编码,因为协议是通过可插入的绑定来处理的,并且服务质量(事务,安全)是以声明方式处理的。
现有的应用程序可以使用新的SCA组合。这允许向更灵活的架构逐步增长,外包或为其他人提供服务。
各种组件类型,包括但不限于Java,C ++,BPEL,Spring和脚本
端到端的服务和数据解决方案,其中包括对Jaxb和SDO的支持
++Tuscany 是 Apache 的开源项目,它是 IBM、Oracle、SAP 等厂商联合成立的 SOA 标准化组织 -OSOA 支持下开发出的 SCA 框架,它既是开源界 SCA(服务组件架构) 的试金石,也是当前开源界最成熟的 SCA 框架之一。
++作为一个轻量级 SCA 框架,Tuscany 提供了非常松散耦合的框架结构
++微服务是基于Restful风格的,基于资源及资源操作一组API的集合,可以实现模块儿或者说是特定的业务范围内的一个完全立、细粒度、自包含的一个服务。每个微服务提供一组API,供其他微服务或者应用客户端所用。再具体点;微服务是一种架构风格,一个大型复杂软件应用由一个或多个微服务组成。系统中的各个微服务可被独立部署,各个微服务之间是松耦合的。每个微服务仅关注于完成一件任务并很好地完成该任务。在所有情况下,每个任务代表着一个小的业务能力。
在SCA规范中,component被定义为执行代码的基本单元,每个component对外提供一个功能.在本例中,共有5个component,分别实现加减乘除,
++因为tuscany是个基于SCA的框架,所以它要依赖三个tuscany的jar包
import关键字是用来导入包的,因为实际开发中,你不可能把所有的类都放在同一个default包里面。包的作用就是给java类进行分拣,不同业务逻辑的java类放在同一个包中。比如工具包,实体包。
那么,你在a包中的A类,希望调用b包中的B类,就需要导入b包。
http://blog.51cto.com/xgtian/737269
package就是将不同的java类放在不同的包下,因为不这样的话会经常发生包名冲突;
先点击选择数据库,然后点击查询,新建查询,输入sql,点击运行
https://www.zhihu.com/question/20360521
http://blog.csdn.net/zsy_gemini/article/details/9060105
++贫血模型,是指model中,仅包含状态(属性),不包含行为(方法),采用这种设计时,需要分离出dal层,专门用于数据库的操作.
出血模型,中既包括行为,也包含状态,是真正符合面向对象的设计方式;
因为java是面向对象编程,所以充血模型对于面向对象的编写更符合,而贫血模型就是将对象的属相,行为的两个特征分离开了,但是它看起来层级划分更清楚,而且逻辑层级划分相对简单,所以现在我们编写web项目使用的都是贫血模型.相对的充血模型的难点就在于从复杂的逻辑中将对象的行为分离的恰到好处.
++但是网上说法就是复杂系统中尽量使用充血模型,会使整个项目逻辑更清晰.
++结果就是,充血模型逻辑更清晰也更符合我们说的面向对象编程的本质.但是现在大多数j2ee的程序员对充血模型的理解不透彻,导致项目使用的充血模型反而导致因为业务划分不明晰使得项目更混乱.
代理(proxy)是是一种设计模式,提供了对对象另外的访问方式,即通过代理对象访问目标对象,这样做的好处就是可以在不改变目标对象实现的基础上,增加额外的功能操作,即扩展目标对象的功能
这里使用到一个编程的思想:不要随意的修改别人的代码或方法,如果需要,可以通过代理的方式取解决.
https://www.cnblogs.com/cenyu/p/6289209.html
静态代理在使用时,需要定义接口或者父类,被dialing对象于代理对象一起实现相同的接口,或者继承相同的父类.
++缺点:因为代理对象需要与目标对象实现一样的接口,所以会有很多的代理类,类太多.同时一旦接口增加方法,目标对象与代理对象都要维护
2.代理对象的生成,是利用jdk的api.动态的在内存里构建代理对象(需要我们指定代理对象/目标对象实现的接口的类型)
注意该方法是在Proxy类中是静态方法,且接收的三个参数依次为:
l ClassLoader loader,:指定当前目标对象使用类加载器,获取加载器的方法是固定的
l Class<?>[] interfaces,:目标对象实现的接口的类型,使用泛型方式确认类型
l InvocationHandler h:事件处理,执行目标对象的方法时,会触发事件处理器的方法,会把当前执行目标对象的方法作为参数传入
明天计划完成的事情:明天深入学习tuscany,sca和代理与aop;
学习tuscany,代理,领域模型.好像是找到自己学习的问题所在了.
评论