WebApp MVC,“不一样”的轻量级互联网应用程序开发框架
WebApp MVC 这是一个专门开发互联网程序的开发框架,跟之前的《EFW框架》使用情况不一样,EFW主要用于开发行业软件的快速开发;而WebApp又区别与别的MVC框架,比如AspNet MVC,更轻量级,使用也更简单;
WebApp技术特点:
Nvelocity(模板引擎)+UrlRewriter+HttpHandler 为底层技术支撑
bootstrap+JqueryEasyUI 为前端技术支撑
界面效果:用WebApp开发的一个简单网站,外观简洁大气,使用bootstrap让界面开发变得非常容易,完全摆脱了烦人的CSS设计。第二张图则把bootstrap与JqueryEasyUI结合在一起使用,可以开发一些复杂的功能;


源代码目录结构:分为两个项目,
WebUI为界面项目,界面文件都是使用的静态文件Html,并没有使用Aspx文件,让我们的发布程序变得非常方便;
Manager项目是Controller与Model的C#代码;看过之前的《EFW框架》就应该对BusinesEntity、Dao、ObjectModel三个目录非常熟悉,这是我用面向对象思想结合实际开发情况来解决Model的方案;Controller类与请求的Url有一个映射关系,通过在浏览器中输入Url就可以直接调用Controller中的方法;


执行流程图:

结合上面的流程图,我们来讲解具体的代码情况。
浏览器输入地址http://localhost/Views/NewEfw/page@efw_default就会显示首页页面。

首先UrlRewriter把Url解析为/Views/NewEfw/API.aspx?cmd=efw_default,使用UrlRewriter的目的就是让浏览器上显示的Url看起来更容易理解,解析后的用户是很难理解的,但是我们程序员应该是很容易看懂的;

接着就到了API.aspx这个核心中转文件,它是把Url映射到Controller的关键,就是使用HttpHandler 实现的,这里我们不详细讲解,有兴趣的可以网上查一下。
接着看cmd=efw_default这个又涉及到一个配置文件AppUnity.config,就是配置cmd与控制器方法的映射配置文件;这里efw_default就映射到了efwsiteController文件的Default方法;

我们接着看efwsiteController这个控制器文件,其实就是一个普通的CS文件,其中方法中有两个属性ViewData和ViewResult,
ViewData用来存储界面数据,ViewResult是通过ToView()方法把界面文件html,通过Nvelocity解析成最后的界面代码返回给ViewResult输出在浏览器;
而ViewData数据的来源就需要用到Model,这里我们不详细讨论Model的代码;
另外,Default方法上面加了一个自定义标签[AOP(typeof(HeadFooterComponent))]这个有什么用了?
我们知道网站一般都包括了页头与页脚,这两个部分在所有页面中都存在,所以在设计View的时候为了代码重用,我们使用外部文件引用head.htm和foot.htm,这样页面是解决了代码重用的问题,而页面中涉及到的数据后台控制器又怎么解决了?这使用就要用到Component组件控制器,再通过AOP拦截组件方法给没个控制器方法加上页头页尾数据;
这里只是解决此处问题的一种方法,却让人看起来非常直观;

解决我们看一下View文件default.htm的代码,里面有Nvelocity独特的标签代码,我们在编写代码的时候可以简单学习一下,使用起来还是非常简单的;
至此我们把流程图的上半部分已经介绍完了,就是通过在浏览器中输入Url怎么调用后台控制器,并解析View文件显示在浏览器;
下半部分是讲View怎么使用Ajax请求Controller返回数据;

下面JS代码是JqueryEasyUI的datagrid控件请求数据的代码,url指定了后台控制器的方法;

使用Ajax方式请求Controller的方法与上面返回界面的Controller方法一样,除了返回的数据用JsonResult来存储;使用Ajax请求返回的数据都是使用Json格式输出;

总结:WebApp MVC原理很简单,利用了Nvelocity 摆脱了Aspx代码,再就是把Ajax方式请求控制器的方式与View Url请求控制器方法的方式结合在一起,让开发变得更简单;再就是把bootstrap和JqueryEasyUI结合在一起开发界面是比较有特色的,并且效果很不错;
WebApp MVC,“不一样”的轻量级互联网应用程序开发框架的更多相关文章
- WebApp MVC 框架的开发细节归纳
在前文<WebApp MVC,“不一样”的轻量级互联网应用程序开发框架>介绍了WebApp MVC的技术实现以及如何使用,而在本章进一步归纳了使用框架开发的一些细节,也给我们在开发具体功能 ...
- 【干货分享】JPager.Net MVC超好用轻量级分页控件
JPager.Net MVC好用的轻量级分页控件,好用到你无法想象,轻量到你无法想象. JPager.Net MVC好用的轻量级分页控件,实现非常简单,使用也非常简单. JPager.Net M ...
- OsharpNS轻量级.net core快速开发框架简明入门教程-Osharp.Redis使用
OsharpNS轻量级.net core快速开发框架简明入门教程 教程目录 从零开始启动Osharp 1.1. 使用OsharpNS项目模板创建项目 1.2. 配置数据库连接串并启动项目 1.3. O ...
- OsharpNS轻量级.net core快速开发框架简明入门教程-基于Osharp实现自己的业务功能
OsharpNS轻量级.net core快速开发框架简明入门教程 教程目录 从零开始启动Osharp 1.1. 使用OsharpNS项目模板创建项目 1.2. 配置数据库连接串并启动项目 1.3. O ...
- OsharpNS轻量级.net core快速开发框架简明入门教程-Osharp.Permissions使用
OsharpNS轻量级.net core快速开发框架简明入门教程 教程目录 从零开始启动Osharp 1.1. 使用OsharpNS项目模板创建项目 1.2. 配置数据库连接串并启动项目 1.3. O ...
- 【MVC 4】5.SportsSore —— 一个真实的应用程序
作者:[美]Adam Freeman 来源:<精通ASP.NET MVC 4> 前面建立的都是简单的MVC程序,现在到了吧所有事情综合在一起,以建立一个简单但真实的电子商务应用 ...
- OsharpNS轻量级.net core快速开发框架简明入门教程-从零开始启动Osharp
OsharpNS轻量级.net core快速开发框架简明入门教程 教程目录 从零开始启动Osharp 1.1. 使用OsharpNS项目模板创建项目 1.2. 配置数据库连接串并启动项目 1.3. O ...
- OsharpNS轻量级.net core快速开发框架简明入门教程-代码生成器的使用
OsharpNS轻量级.net core快速开发框架简明入门教程 教程目录 从零开始启动Osharp 1.1. 使用OsharpNS项目模板创建项目 1.2. 配置数据库连接串并启动项目 1.3. O ...
- 轻量级的前端UI开发框架 - UIkit
来源:GBin1.com UIkit是YOOtheme团队开发的开源的前端UI界面框架,可以帮助你快速的开发和创建前端UI界面. 基于下列开源项目: LESS jQuery normalize.css ...
随机推荐
- docker解决数据存储问题的方案
现在docker在云计算领域发展的势头很猛,各个公司不论大小都开始研究这个开源工具和技术,围绕docker的开源项目和创业公司也多如牛毛,就是一个简单管理container的web ui都有很多开源项 ...
- Facebook网络模拟测试工具ATC使用
Facebook在其工程博客(原文)上宣布开源移动网络测试工具Augmented Traffic Control(ATC),我迅速试用了一番,非常不错,对手游或者其他APP的调试和测试都非常有帮助,介 ...
- ThreadLocal线程范围内的共享变量
模拟ThreadLocal类实现:线程范围内的共享变量,每个线程只能访问他自己的,不能访问别的线程. package com.ljq.test.thread; import java.util.Has ...
- win32汇编hello world
下载:http://www.masm32.com/ 安装masm32 建一个Var.bat文件并运行 @echo offset include=E:\masm32\includeset lib=E:\ ...
- Atitit.并发测试解决方案(2) -----获取随机数据库记录 随机抽取数据 随机排序 原理and实现
Atitit.并发测试解决方案(2) -----获取随机数据库记录 随机抽取数据 随机排序 1. 应用场景 1 2. 随机抽取数据原理 1 3. 常用的实现方法:::数据库随机函数 1 4. Mssq ...
- paip.解决 数据库mysql增加列 字段很慢添加字段很慢
paip.解决 数据库mysql增加列 字段很慢添加字段很慢 #环境如下: mysql5.6 数据仅仅3w alter table xxx add column yyy int default ...
- ListView、PullToRefreshListView滑动加载可见item
最近用的了PullToRefreshListView框架,也在listView中加载图片,对于滑动加载可见item,网上找了一些相关文档,但都不太合适,如:http://blog.csdn.net/z ...
- AP6181 正基 WIFI 模块
a. Module size: 12*12mm (pin to pin compatible) Package: Stamp type 44pins AP6181: WiFiAP6210: WiFi/ ...
- iOS相册、相机、通讯录权限获取
iOS相册.相机.通讯录权限获取 说明 这是本人写的一个工具,用以便利的处理各种权限获取的操作,目前提供相册.照相机.通讯录的权限获取操作,参考了 http://www.jianshu.com/p/a ...
- H608B无线路由破解方法
家里的无线路由送人了,准备重新买,今日一看,竟然自带的猫(ZTE H608B)有wifi天线和4个LAN口,想着是支持路由功能的,那必然就是从软件上做了手脚.搜索该型号发现没人刷openwrt或者to ...