• FlexViewer框架解读(转)


    Flex Viewer是ESRI公司推出的可以高效开发基于WEB的地理信息应用系统的一种基本架构。它帮助你屏蔽了底层繁琐的操作,比如通信机制。此框架和服务器端的通信是基于Web Service的。在服务器端,发布出你的服务,比如地图服务,前端只需简单的调用操作。开发人员只需关注你的功能模块设计。

    1、Widget开发

    在Flex Viewer中,采用Widget的方式进行模块设计。每一个模块都是一个Widget,具体说是BaseWidget。

    类的关系如上图所示,IWidgetTemplate和IBaseWidget是接口,WidgetTemplate和BaseWidget分别实现它们。在初始化BaseWidget时,会依赖IWidgetTemplate去初始化每个模块的title、icon等属性。

    上图很清晰地给出了一个Widget的处理流程图。要说明的是,由于BaseWidget继承了Module,所以每一个Widget都是一个 Module。好处很多,延迟加载,高内聚性,模块之间几乎没有侵入性。

    2、总体上Container结构

    图中提到了Flex Viewer Container,整个框架看着是一个大的Container,而这个Container是有一些高内聚低耦合的组件组成,如下图:

    这里可以看到整个框架是由几个组件构成,ConfigManger用来管理配置文件,WidgetManger管理所有的Widget。等等。。。 SiteContainer.mxml持有对这些组件的引用。

    3、核心事件处理
    因为Flex采用事件机制,那么,在Flex Viewer中各组件(* Manager)之间通信时怎样完成的呢?这里就提到了Flex Viewer中核心类:EventBus. 注意到EventBus采用单例模式,保证在整个框架中只有一个EventBus。SiteContainer.mxml中提供了一系列静态的代理方法可以访问EventBus。

    当上图中每一个组件(* Manager)初始化的时候,都会监听相应的事件;而SiteContainer会把监听任务委托给EventBus,并由EventBus统一分发事件。通过这种发布/订阅的消息模式,组件之间可以轻易交互而不用直接访问组件中的方法。所以,这种方式使组件解耦,可复用性很高。

    EventBus中使用的事件类型都是由AppEvent.as这个类定义,它负责帮助EventBus在各个组件间传递消息。它是一个自定义事件,负载着数据传递的功能。

    总结一下吧,Flex Viewer是基于事件机制,使用模块化设计,每一个模块负责各自的任务,互不侵入。模块之间的消息传递通过EventBus实现。自定义Widget编译完在各自的配置文件中配置路径、图标等信息,并在config.xml中添加此配置文件的路径信息,最后由ConfigManager统一加载 config.xml文件
  • 相关阅读:
    ibernate学习笔记5---实体类或属性名与数据库关键字冲突、hql命名参数、hql实现通用分页
    dom4j API使用简介
    oracle创建表空间、创建用户、授权、夺权、删除用户、删除表空间
    一、导入、导出远程Oracle数据库
    JavaScript 类的定义和引用 JavaScript高级培训 自定义对象
    实现JavaScript中继承的三种方式
    JavaScript 高级篇之闭包、模拟类,继承(五)
    IE JS编程需注意的内存释放问题
    浅谈javascript中的作用域
    LeetCode----Path Sum
  • 原文地址:https://www.cnblogs.com/gisdream/p/1895960.html
Copyright © 2020-2023  润新知