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 ...
随机推荐
- 免费好用的web应用托管平台
1.前言 曾经很久以前,想找一个免费的空间部署一个属于自己的技术博客真是太难了,使用过SAE,但是很快就面临收费了,后面也就不了了之了.目前自己又找到一个免费的PAAS平台,可以部署各种语言的web应 ...
- AngularJS快速入门指南01:导言
AngularJS使用新的attributes扩展了HTML AngularJS对单页面应用的支持非常好(SPAs) AngularJS非常容易学习 现在就开始学习AngularJS吧! 关于本指南 ...
- JQuery以JSON方式提交数据到服务端
JQuery将Ajax数据请求进行了封装,从而使得该操作实现起来容易许多.以往我们要写很多的代码来实现该功能,现在只需要调用$.ajax()方法,并指明请求的方式.地址.数据类型,以及回调方法等.下面 ...
- Vue.js双向绑定的实现原理和模板引擎实现原理(##########################################)
Vue.js双向绑定的实现原理 解析 神奇的 Object.defineProperty 这个方法了不起啊..vue.js和avalon.js 都是通过它实现双向绑定的..而且Object.obser ...
- 在Debian下安装LAMP
准备工作: 1 sudo apt-get install build-essential 第一步:安装Apache 1 sudo apt-get install apache2 第二步:安装MySQL ...
- 【Android】Android内存机制,了解Android堆和栈
1.dalvik的Heap和Stack 这里说的只是dalvik java部分的内存,实际上除了dalvik部分,还有native. 下面针对上面列出的数据类型进行说明,只有了解了我们申请的数 ...
- Atitit.guice3 ioc 最佳实践 o9o
Atitit.guice3 ioc 最佳实践 o9o 1. Guice的优点and跟个spring的比较 1 2. 两个部分:::绑定and注入@Inject 1 3. 绑定所有的方法总结 2 3. ...
- atitit.表单验证 的dsl 本质跟 easyui ligerui比较
atitit.表单验证的dsl 本质跟 easyui ligerui比较 1. DSL 声明验证 1 2. 自定义规则 1 3. 正则表达式验证,可以扩展实现 2 4. 犯错误消息提示,generic ...
- Command模式
Command模式只是封装了一个没有任何变量的函数. interface Command{ void Excute();} 具有强烈的分解功能的味道.把函数层面的任务提升到了类的层面(一个类仅仅是为了 ...
- Leetcode 83 Remove Duplicates from Sorted List 链表
就是将链表中的重复元素去除 我的方法很简单就是如果链表的前后元素相同的话,将后一个元素删除 /** * Definition for singly-linked list. * struct List ...