关于可扩展的web架构设计的探索-框架结构的描述文件

关于可扩展的web架构设计的探索-框架结构的描述文件(转)(dojava) 摘要: 本篇详细探讨了关于可扩展的web框架结构的描述文件的定义。并以此来建立该框架的java模型。该框架的特征为:窗体可配置、窗体可嵌套、视图可配置、视图可定义、建立在struts框架之上。纯属个人想法,可能有很多幼稚之处,敬请朋友们指点和提拔。 怎样定义: 这两天我一直在想,怎样定义框架结构的描述文件。我从以下几个方面考虑: 1. 完整性。在框架的允许范围内任何情况它都能够描述。 2. 语义性。所有的描述必须是唯一、明确。 3. 一致性。所有的描述必须是统一,不可相互冲突。 4. 可引用性。所有描述元素必须可达,必须易于访问。 5. 可维护性。描述文件可配置、可扩展、可再生。 6. 可读性。所有的描述必须是易于理解。 现在我需要这样的一个描述文件:描述框架网页,也就是frame的网页。 先前我分析了eclipse的插件描述文件。它是这样定义的: plugin.xml中一共有四个主要的标签:plugin,requires,runtime,extension。其中plugin标签的属性提供的是我们要开发的Welcome插件的基本信息,除了name,version,provider-name等,最重要的是id,我们通过它可以索引到此元素。requires标签中所列出的是需要的插件,这里我们要用到Eclipse Workbench和SWT API,因此导入了org.eclipse.ui插件。 runtime标签指明的是我们开发的插件所在JAR包的文件名。extension标签是插件扩展点的信息。 org.eclipse.ui.views是Eclipse系统提供的观察窗口扩展点,我们的例子是一个观察窗口(View),这表明我们是要在 org.eclipse.ui.views扩展点上进一步开发。 extension中还包括category和view两个标签,并且在view的属性中声明了Welcome插件的类名。 我以为我发现了宝贝,兴奋了好一阵!你看,多么美妙的结构。包含了外部包的声明、运行时的库、扩展点的设置、视图的定义。最最闪亮之处就是扩展点。这意味着所有的插件都可以具备容器的能力,插件可以插入另外一个插件里面,插件本身就是个可扩展的。 框架需求: 当我着手建立这样的java模型时候,我遇到难题了。我怎样才能将插件视图插入到框架视图里呢?我怎样才能实现框架与插件之间的通信,包括事件的传递。 首先说明一下这个框架的具体的应用和所采用的技术。这个框架是个web应用,窗体可配置的,可能是上下一分为二,也可能是左右一分为二等等,并且窗体可嵌套的。窗体的每一区域具体的视图也可配置的,可能是个导航条,也可能是个列表框。技术打算采用struts的架构,保留action、bean、 view。它们可以帮助我们完成其中一些繁琐的工作。所以容器管理只能是struts本身的ActionServlet容器或者它的子类。 Struts是一个高度可配置、高度扩展性的MVC框架,我们几乎可以用它开发任何能想到的用Java技术的Web应用。MVC模式的每一部分在 Structs中都有相关对应部分。在struts里action是控制层,bean是模型层,view是视图层。 现在我们把框架需求整理一下,以便我们更好的分析和定义框架的描述文件。 1. 窗体可配置 2. 窗体可嵌套 3. 视图可配置 4. 视图可定义 5. 建立在struts框架之上 分析结果: 好了,现在知道我们需要做什么了。我们的描述文件里需要包括下列元素: 1. 窗体描述 2. 扩展点描述 3. antion关联 这里没有视图描述,因为struts已经将action关联了视图。所以我们只需要管理action就行了。视图的定义全部交给struts去做了。 形成的描述文件如下: /*begin插件定义*/ /*begin扩展区定义*/ //定义两个扩展区 /*end扩展区定义 /*end插件定义*/ frame.xml中一共有三个主要的标签:plugin,frameset,frame。其中plugin标签的属性提供的是我们要开发的框架插件的基本信息,除了name,version,provider-name等,最重要的是id,我们通过它可以索引到此集合。frameset标签是插件视图的区域划分,rows属性指明视图划成几个区域。这里是窗口划分成上下两个区域。extension属性指明我们插件视图要在哪个视图上显示。这里说明插件视图插入在com.useeasy.frame视图中。com.useeasy.frame它是由系统提供的抽象视图,等同空白的浏览器窗口,它负责绘制、管理我们在此扩展的插件视图。frame标签指明这个区域的样式和控制器。scrolling属性指明区域是否有滚动条。noresize属性指明区域大小是否可以改变。action属性指明这个视图的控制器。控制器负责视图数据的显示和事件的响应。具体的控制器实现是由在struts- config.xml中定义。 frame的顺序和个数必须和freameset标签的row属性保持一致。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值