XWorker是一个动态系统,在XWorker的发展历程中提到XWorker的初始目标是框架编程,实际上XWorker也可以看作是一个框架编程系统。
从软件设计角度,框架是一个可复用的软件架构解决方案,规定了应用的体系结构,阐明软件体系结构中各层次间及其层次内部各组件间的关系,责任分配和控制流程,表现为一组接口,抽象类以及实例间协作的方法。
因为软件系统发展到今天已经很复杂了,特别是服务器端软件,涉及到的知识,内容,问题太多。在某些方面使用别人成熟的框架,就相当于让别人帮你完成一些基础工作,你只需要集中精力完成系统的业务逻辑设计。而且框架一般是成熟,稳健的,可以处理系统很多细节问题,比如,事物处理,安全性,数据流控制等问题。还有框架一般都经过很多人使用,所以结构很好,所以扩展性也很好,而且它是不断升级的,可以直接享受别人升级代码带来的好处。
编程中的框架有各种各样的,根据XWorker的特点我们主要讨论具有配置和引擎的框架类型。
一个成品的框架通常会提供给使用者编写的配置,比如Spring的Bean配置文件和Hibernate的映射文件等。
框架还应该具有引擎,引擎是用来解释执行配置文件的。
以Spring的Bean框架为例。
配置:
<?xml version="1.0" encoding="UTF-8"?>  
<beans xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  
    xmlns="http://www.springframework.org/schema/beans"  
    xsi:schemaLocation="http://www.springframework.org/schema/beans  
    http://www.springframework.org/schema/beans/spring-beans-3.0.xsd">  
    <!-- 定义第一个Bean实例:bean1 -->  
    <bean id="bean1" class="com.Bean1" />  
      
    <!-- 定义第二个Bean实例:bean2 -->  
    <bean id="bean2" class="com.Bean2" />  
      
</bean>   
     调用引擎的代码:
public class SpringTest {    
    public static void main(String[] args) {  
        ApplicationContext ctx = new ClassPathXmlApplicationContext("bean.xml");  
        System.out.println(ctx.getBean("bean1"));  
        System.out.println(ctx.getBean("bean2"));  
    }    
}   
     在Java编程中现在已经有很多框架可以使用了,比如Spring和Hibernate等,但是调用它们的方法是不统一的,尤其是当自己要编写多个框架时,框架的调用不统一会给自己造出麻烦。
XWorker可以看作是统一各种框架的一种解决方案,它是通过配置和引擎的反转实现的。
在使用传统的框架时通常是用引擎来读取配置,然后再执行各种功能,比如下面的这段代码:
public class SpringTest {    
    public static void main(String[] args) {  
        ApplicationContext ctx = new ClassPathXmlApplicationContext("bean.xml");  
        System.out.println(ctx.getBean("bean1"));  
        System.out.println(ctx.getBean("bean2"));  
    }    
}  
     而引擎和配置的反转则是要把配置放在首位,使用配置来调用引擎,从而把引擎隐藏。
public class SpringTest{
    public static void main(String[] args){
        //读取框架的配置
        Config config = EngineManager.loadConfig("Spring", "bean.xml");
       //通过配置获取Bean,在配置里调用引擎
        Object Bean1 = config.doAction("getBean");
    }
} 
     XWorker的框架编程就是把引擎和配置反转了,只是XWorker没有再采用配置和引擎的概念,而是使用了世界(World)和事物(Thing)两个概念。
事物相当于框架编程中的配置,事物有doAction的方法,引擎在doAction方法中被调用。
世界相当于引擎的管理器,它负责管理所有的事物。
Copyright © 2007-2014 XWorker.org 版权所有