MAVERICK.NET初窥(原创)
ASP.NET出来了很久了,微软一直强调其ASP.NET是给WEB开发带来了很多的方便,code-behind的方式优化了代码的结构,等云云。然而当我们真正用ASP.NET来开发时,我们发现我们还是陷入到了混乱之中,如:
- MVC如何实现(虽然code-behind从某种意义上说是实现了C和V的分离,但是还是远远不够)
- 页面间的flow如何处理(还是在代码中采用了hard-code的方法,要修改页面的跳转,必须修改源代码,页面间的关系不能清楚地表现和可配置)
- 多语言怎么实现(虽然可以用资源文件来解决,但是一个单词的中文和英文的长度不一致,很多时候还是要重写2个页面,根据不同的浏览器多语言配置如何实现这些不同页面的选择,也不能很好解决)
- 公用页面模块如何尽量提高可复用性(虽然微软也提供了User Control,但是它始终和ASPX有很多不一样,很难对2者共同对待)
- 等
微软也意识到了这些问题,于是出了个UIPB,但是UIPB也仅仅解决了一小部分的问题,如前面所说的页面跳转的问题。坦白地说,我认为UIPB的设计初衷实在是一个错误的方向。UIPB主要解决一个项目WEB表现层和WINFORM表现层如何能够最大范围的复用的问题。试问有多少项目会有这样的需求?诚然有些项目确实需求2种表现层,但是也是各自完成不同的任务居多。即使是有这种需求,我们也知道WINFORM和WEB有太多的不同,有些WEB中多个页面跳转完成的事情,在WINFORM中仅仅是一个窗口就可以完成。另外WEB中要尽量少用弹出窗口,而WINFORM没有这种限制。因此我认为UIPB还是没有解决WEB层的大多数问题,不能适应现在商业的WEB项目开发。
那么我真的开始苦恼了,.NET项目中应该用什么来实现表现层?看看J2EE阵营,他们确实也苦恼,但他们苦恼的是面对那么多的开源解决方案应该选择那个。有的时候真想改姓J2EE算了,呵呵。
终于前些天看到了MAVERICK.NET项目,实际上这个项目也是从J2EE的MAVERICK项目port过来的。我把Maverick.NET当了下来,研究了几天,总算心理稍稍平了点。从我现在对MAVERICK.NET的浅薄的了解中,我认为它至少解决了以下几个问题:
- 完全的MVC实现
- 页面间的跳转问题可以通过一个统一的配置文件建立期间的联系
- 页面模块可以灵活地通过配置文件plug到多个View中去
- 多语言的幽雅实现
- 页面的模板可以使用XSLT等转换技术
下面我从MAVERICK.NET中自带的一个简单例子来简单说明:
- 配置IIS,将.m的文件用ASP.NET引擎来解析
- 配置web.config,加入以下语句:
<configSections>
<sectionGroup name="Maverick">
<section name="Dispatcher" type="System.Configuration.NameValueSectionHandler,system, Version=1.0.3300.0, Culture=neutral, PublicKeyToken=b77a5c561934e089, Custom=null" />
</sectionGroup>
</configSections>
<Maverick>
<Dispatcher>
<add key="configFile" value="maverick.config" />
<add key="currentConfigCommand" value="currentConfig" />
<add key="reloadCommand" value="reload" />
<add key="limitTransformsParam" value="maxTransforms" />
<add key="commandCaseSensitivity" value="insensitive" />
</Dispatcher>
</Maverick>
</system.web>
<httpHandlers>
<!-- 该工程的任何页面访问都会首先执行该httpHandler,实际上是一个dispatcher,
来根据maverick.config的配置来启动相关页面 -->
<add verb="*" path="*.m" type="Maverick.Dispatcher, Maverick" />
</httpHandlers>
</system.web>
- 配置maverick.config文件
<maverick version="2.0" default-view-type="document" default-transform-type="document">
<commands>
<command name="Default.aspx">
<view name="success" type="trivial">
<transform path="~/Wrapper.aspx"/> <!-- 这就是一个标题,也就是嵌入的公用页面模块 -->
</view>
<view name="april" path="~/April.aspx">
<transform path="~/Wrapper.aspx"/>
</view>
<view name="button" path="~/Button.aspx">
<transform path="~/Wrapper.aspx"/>
</view>
</command>
</commands>
</maverick>
- 建立Default.aspx文件,在code-behind文件中添加一个以下方法
protected string viewName = "success"; // 默认显示名为“success”的view
public override string Go(Maverick.Flow.IControllerContext cctx)
{
return this.viewName;
}
在一个button的时间代码中添加如下代码,当button按下时,就会根据maverick.config的配置来显示相应内容
private void Button1_Click(object sender, System.EventArgs e)
{
this.viewName = "button"; //按下button后就会显示名为button的view
}
在一个日历控健的Selection_change事件代码中,添加如下代码
private void Calendar1_SelectionChanged(object sender, System.EventArgs e)
{
if (this.Calendar1.SelectedDate.Month == 4)
this.viewName = "april"; // 当该代码执行时,就会转向名为april的view
}
- 建立April.aspx、Button.aspx、Wrapper.aspx页面
以上的例子至少体现了,Maverick的页面跳转配置实现、公用页面模块灵活配置的2个优点,因为这是一个最简单的实现,所以其他的特点没有完全展现。关于MAVERICK.NET的应用、以及under the hook,我将在后续的post中描述。
分享到:
相关推荐
Maverick .NET是使用C#编写的.NET平台的SSH API。 该项目最初是一个商业API,由于资源限制,于2009年被搁置。 现在,我们已经恢复了该项目,并根据GPLv3许可为开源开发人员发布了SSH2实现。
Maverick.NET是Maverick的.NET端口,Maverick是用于Web发布的模型-视图-控制器框架。 它提供了干净的MVC分隔,可配置的转换管道,XML站点地图,i18n,并支持各种模板和xform技术。
"Maverick"是一个与字体相关的主题,这通常指的是一个特定的字体家族或者设计风格。在计算机和设计领域,字体是文字的视觉表现形式,包括字形、大小、样式和间距等元素。Maverick这个名字可能暗示了这个字体设计独特...
Maverick是一个轻量而完备的MVC Model 2框架。Maverick的Action称作Controller。Controller只接受一个ControllerContext参数。request,response, servlet config, servelt context等输入信息都包装在...
- **前端控制器**(Maverick.NET):作为系统的第一道入口,它能够根据URL路由规则将请求转发给相应的具体页面控制器。 - **具体页面控制器**(ASP.NET后台页面类):处理具体的业务逻辑,与模型和视图进行交互。 #...
JESD50C是JEDEC发布的一系列规范中的一个,专门针对“Maverick Product”——即异常产品或非典型产品——的特殊要求,旨在确保产品的可靠性和一致性。 **二、JESD50C:2018 版本概览** JESD50C:2018版是关于...
完整英文电子版 JEDEC JESD50C:2018 Special Requirements for Maverick Product Elimination and Outlier Management (Maverick 产品排除和异常品管理的特殊要求)。 Maverick 产品排除 (MPE) 和异常品管理标准...
JEDEC JESD50B-01:2008 Special Requirements for Maverick Product Elimination and Outlier Management - 完整英文电子版(15页).zip
EASARS-Maverick-20140401 非常好的字典文件
java原始api J2SSH小牛 J2SSH Maverick是原始J2SSH ...可以在SourceForge.net上的以下URL上找到二进制版本。 文献资料 您可以在以下位置找到javadocs 示例包含在二进制下载中或源树的src / main / examples文
### Maverick模块关键技术知识点 #### 一、模块概述与特性 **Maverick模块**是一款专为提升设备RFID(Radio Frequency Identification,射频识别)功能而设计的高度集成化产品。该模块具备以下显著特点: - **低...
这个框架是Maverick.Net的轻量级版本,旨在简化Web应用的开发过程,特别是对于那些希望利用XML工作流图来处理请求和生成响应的开发者。 MVC模式是一种流行的设计模式,它将应用程序分为三个核心部分:模型、视图和...
《Maverick Model 3D:基于Misfit Model 3D的3D模型编辑器》 Maverick Model 3D是一款强大的3D模型编辑工具,它的开发基础是Misfit Model 3D,旨在为用户提供更为高效且易用的3D建模环境。这款软件在Misfit Model ...
JEDEC JESD50C标准:Maverick产品淘汰和离群值管理的特殊要求 JEDEC JESD50C标准是JEDEC Solid State Technology Association发布的一项标准,旨在规定Maverick产品淘汰和离群值管理的特殊要求。该标准于2018年1月...
伊塞斯龙翼Maverick游戏鼠标驱动是小编今天为大家提供的此款驱动是伊塞斯官方发布的龙翼Maverick游戏鼠标最新驱动程序,玩家可以通过驱动对鼠标的按键、呼吸灯等进行设置,让你的游戏体验更加流畅,操作更加的便利,...
Maverick Web界面-高度实验性-请勿在现实世界中使用! 这是用于配置和控制UAV的“下一代” Web界面的早期实验回购。 maverick-web是使用现代Javascript技术的纯Web应用程序,并且连接到多个后端以获取来自多个...
《JEDEC JESD50B-01:2008 特殊要求 - Maverick 产品淘汰和异常管理》是JEDEC固态技术协会发布的一份标准文档,主要针对半导体行业的产品管理和质量控制。这份2008年11月修订的15页完整英文电子版详细阐述了Maverick...
ailurus_10.10.1-0maverick1_all.deb 虽然有新立得,但是该工具提供很多分类的下载,特别是编程,以及常用的第三方库的开发 推荐
Maverick插件是专为Eclipse集成开发环境设计的一款开源工具,旨在为开发者提供一个高效、便捷的方式来探索和操作特立独行的项目。Eclipse作为一款强大的Java IDE,其丰富的扩展性使得开发者能够通过各种插件来增强其...
Maverick是使用python构建的静态博客生成器。 像Hexo和Jekyll一样,它以Markdown( .md )文件作为输入,并输出格式精美,结构合理的网站页面( .html )。 它具有许多内置的有用功能(提要,搜索,站点地图等),...