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,“不一样”的轻量级互联网应用程序开发框架的更多相关文章

  1. WebApp MVC 框架的开发细节归纳

    在前文<WebApp MVC,“不一样”的轻量级互联网应用程序开发框架>介绍了WebApp MVC的技术实现以及如何使用,而在本章进一步归纳了使用框架开发的一些细节,也给我们在开发具体功能 ...

  2. 【干货分享】JPager.Net MVC超好用轻量级分页控件

    JPager.Net  MVC好用的轻量级分页控件,好用到你无法想象,轻量到你无法想象. JPager.Net  MVC好用的轻量级分页控件,实现非常简单,使用也非常简单. JPager.Net  M ...

  3. OsharpNS轻量级.net core快速开发框架简明入门教程-Osharp.Redis使用

    OsharpNS轻量级.net core快速开发框架简明入门教程 教程目录 从零开始启动Osharp 1.1. 使用OsharpNS项目模板创建项目 1.2. 配置数据库连接串并启动项目 1.3. O ...

  4. OsharpNS轻量级.net core快速开发框架简明入门教程-基于Osharp实现自己的业务功能

    OsharpNS轻量级.net core快速开发框架简明入门教程 教程目录 从零开始启动Osharp 1.1. 使用OsharpNS项目模板创建项目 1.2. 配置数据库连接串并启动项目 1.3. O ...

  5. OsharpNS轻量级.net core快速开发框架简明入门教程-Osharp.Permissions使用

    OsharpNS轻量级.net core快速开发框架简明入门教程 教程目录 从零开始启动Osharp 1.1. 使用OsharpNS项目模板创建项目 1.2. 配置数据库连接串并启动项目 1.3. O ...

  6. 【MVC 4】5.SportsSore —— 一个真实的应用程序

     作者:[美]Adam Freeman      来源:<精通ASP.NET MVC 4> 前面建立的都是简单的MVC程序,现在到了吧所有事情综合在一起,以建立一个简单但真实的电子商务应用 ...

  7. OsharpNS轻量级.net core快速开发框架简明入门教程-从零开始启动Osharp

    OsharpNS轻量级.net core快速开发框架简明入门教程 教程目录 从零开始启动Osharp 1.1. 使用OsharpNS项目模板创建项目 1.2. 配置数据库连接串并启动项目 1.3. O ...

  8. OsharpNS轻量级.net core快速开发框架简明入门教程-代码生成器的使用

    OsharpNS轻量级.net core快速开发框架简明入门教程 教程目录 从零开始启动Osharp 1.1. 使用OsharpNS项目模板创建项目 1.2. 配置数据库连接串并启动项目 1.3. O ...

  9. 轻量级的前端UI开发框架 - UIkit

    来源:GBin1.com UIkit是YOOtheme团队开发的开源的前端UI界面框架,可以帮助你快速的开发和创建前端UI界面. 基于下列开源项目: LESS jQuery normalize.css ...

随机推荐

  1. 西安.NET俱乐部群 推广代码

      CSS: .gallery-item { display:inline-block; margin: 15px; }   个人签名: <div class="gallery&quo ...

  2. iOS企业级开发

    2015移动技术白皮书 Android篇 iOS篇 项目管理篇 综合篇 结束语 iOS项目框架设计 项目结构的设计 基类的设计 自定义生命周期 跳转器 自定义UV打点控件 图片缓存 iOS网络底层框架 ...

  3. SQL范式小结

    说明:大多数初学者对于关系数据库中的范式很是头疼,我本人也是,所以今天又看了视频,总结了一下内容,尽量语言通俗易懂,少用专业术语以及概念. 首先要理解几个键值. 超键:在关系模式中,能唯一标识元组的属 ...

  4. 相对路径获取项目文件 及报错 No mapping found for HTTP request with URI XXX in DispatcherServlet with name ‘springmvc’解决方法

    首先一点,WebRoot目录下的文件是都可以通过浏览器输入路径,直接读取到的 例如这样: 而WebRoot下面WEB-INF是无法浏览器输入路径直接读取的. 因为是受保护的. 如果jsp读取一个图片的 ...

  5. 算法练习26-xx

    26.左旋转字符串(字符串) 题目:定义字符串的左旋转操作:把字符串前面的若干个字符移动到字符串的尾部. 如把字符串abcdef左旋转2位得到字符串cdefab.请实现字符串左旋转的函数.要求时间对长 ...

  6. atitit.提升2--3倍开发效率--cbb体系的建设..

    atitit.提升开发效率--cbb体系的建设.. #--提升倍数,大概2--3倍.. #---cbb的内容 知识的,expt的,经验的技术的部件的问题库的角度.. #---cbb的层次,tech l ...

  7. 《Effective STL中文版》前言

    <Effective STL中文版>前言     我第一次写关于STL(Standard Template Library,标准模板库)的介绍是在1995 年,当时我在More Effec ...

  8. XCode自动打ipa包脚本 命令

    XCode 新建文件 选择other Shell script  放入下面命令行. #工程绝对路径 #cd $ project_path=$(pwd) #build文件夹路径 build_path=$ ...

  9. JAVA学习Swing章节JPanel和JScrollPane面板的简单学习

    package com.swing; import java.awt.Container; import java.awt.GridLayout; import javax.swing.JButton ...

  10. asp.net 读取RedisSessionStateProvider配置

    最近项目遇到需要读取RedisSessionStateProvider配置文件applicationName节点,如: 读取的方法有很多: 1直接读取web.config文件, void test1( ...