(转)第一次发博客-说说我的B/S开发框架(asp.net mvc + web api + easyui)
原文地址:http://www.cnblogs.com/xqin/archive/2013/05/29/3105291.html
前言
这些年一直在.net下做企业web系统开发,前前后后经历的不同的开发框架有五六个之多,一直想有一个比较简单灵活顺手的BS开发框架,网上也没有找到一个比较合适的能应用于企业系统开发的。去年辞职在家的时候,网上找了些东西,按照自己的想法实现一些东西,慢慢的形成现在的B/S开发框架。想接下来慢慢的写出来和大家共享下,这里面很多都是我自己的想法,并没有什么高深的设计模式,欢迎大家拍砖。
框架愿景
1、提高开发效率(尽量少的配置,尽量少写代码,尽量简单)
2、考虑较好的拓展性及winform及手机端接入的可能性(所有的数据访问均采用 ajax+ restful webservice实现)
3、数据访问层比较灵活高效,分页查询,支持多数据库
4、有一个不错不的UI
5、一些代码可以自动生成
技术选型
采用.net4.0作为基础技术平台,原来是采用.net4.5的,但是后来发现.net4.5不支持Windows Server2003,所以又降为.net4.0。
1、asp.net mvc 4.0 用于提供页面服务
2、asp.net web api 用于提供restful数据服务
3、fluentData 新型轻量级ORM模型用于数据持久方案
4、log4net 作为日志组件
5、json.net 作为序列化组件
6、文档方案(均为开源) 导出:Excel2007使用EPPlus、Excel2003使用NPOI、Word2003/2007使用DocX、Pdf使用Gios 压缩:Ionic.Zip、Ziplib
7、js库为jquery
8、UI选用jquery easyui 1.3.2
9、选knockoutjs为前端mvvm框架
10、css框架选用960gs
11、报表采用stimulsoft report(商业)
12、图形分析采用fusioncharts
简单实现图

框架分层
一、框架分层截图如下,主要是分了以下几层:
1、Zephyr.Core框架核心层:主要是一些服务基类,日志处理,参数处理等。
2、Zephyr.Data数据处理层:数据库操作类,引入FluentData并做了少量的修改以适应
3、Zephyr.Generator代码生成器:目前只能生成实体类及服务类
4、Zephyr.Utils工具类:里面包含了很多东西如转换函数,文档处理加密解密等等,我不喜欢引入太多的dll所以很类库我就直接加在它里面了。
5、Zephyr.WorkFlow工作流引擎:参照JBPM思想只实现了核心功能

二、框架的使用
直接在项目中引入框架的dll即可,早期的很多项目都是参照petshop分了很多的层,这里我不打算分太多的层,目的只有一个,要使框架使用起来尽量的简单。就直接使用Model 、View、Controller这mvc自带的三层,web api同mvc。其中Model层是广义的Model,其中包括数据实体的定义及数据服务。数据服务可以看做我们传统三层中的dal或bll + dal的。框架的作用主要在服务层,相当于服务层只要继承了框架的服务基类即可拥有所有我预定义的方法。所以后台分层只有mvc三层。
前台则采用mvvm的开发模式,把前端也分为三层分别为Model、View、ViewModel三层。Model即为后台传入的数据,View即为Razor页面,ViewModel则为一段处理页面与数据交互的脚本对象。这样一来,只要页面差不多ViewModel就可以直接重用了。

好了先写到这吧,第一次写博客,写的很慢,接下来我准备写以下几篇:
1、利用zephyr框架的登陆的实现
2、系统管理详细开发讲解(好多)
3、典型业务页面开发讲解
4、框架的功能及实现
先给大家截几开发出来的效果图,接下来的博客中我会详细讲解我的实现。
查询页面:

编辑页面:

系统管理:















(转)第一次发博客-说说我的B/S开发框架(asp.net mvc + web api + easyui)的更多相关文章
- 第一次写博客,关于前端开发deMVC在js中的应用
对前端MVC MVC分别是model.view.controller的缩写,模型.视图.控制器.这些更加偏向于后台,在以前MVC是只属于后台的.当然随着技术的进步,前端的大牛们将后台的一些东西应用于前 ...
- 第一次写博客Poj1044
Date bugs Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 3005 Accepted: 889 Descript ...
- Beta版本——第一次冲刺博客
我说的都队 031402304 陈燊 031402342 许玲玲 031402337 胡心颖 03140241 王婷婷 031402203 陈齐民 031402209 黄伟炜 031402233 郑扬 ...
- C蛮的全栈之路-node篇(二) 实战一:自动发博客
目录 C蛮的全栈之路-序章 技术栈选择与全栈工程师C蛮的全栈之路-node篇(一) 环境布置C蛮的全栈之路-node篇(二) 实战一:自动发博客 ---------------- 我是分割线 ---- ...
- HDU 2064 菜鸡第一次写博客
果然集训就是学长学姐天天传授水铜的动态规划和搜索,今天讲DP由于困意加上面瘫学长"听不懂就是你不行"的呵呵传授,全程梦游.最后面对连入门都算不上的几道动态规划,我的内心一片宁静,甚 ...
- Linux 桌面玩家指南:05. 发博客必备的图片处理和视频录制神器
特别说明:要在我的随笔后写评论的小伙伴们请注意了,我的博客开启了 MathJax 数学公式支持,MathJax 使用$标记数学公式的开始和结束.如果某条评论中出现了两个$,MathJax 会将两个$之 ...
- 关于如何使用Microsoft Word发博客
关于如何使用Microsoft Word发博客 PS:以Microsoft Word 2010为例作具体操作,实际上Microsoft Word 2007也可以完成该功能,略有差异,但是只能是20 ...
- vscode发博客插件更新v0.1.0(可能会相对好用点吧)
距离上一次编写这个vscode在博客园发博客的插件已经过去好久了,那个时候vscode插件的功能也没有那么强大,期间有人提出问题来,也有人提出建议来,我一直没有抽出时间来维护,深感抱歉,直到有人加到我 ...
- 第一次的博客-简单的Markdown语法
第一次开通博客 从网上寻找了许多写博客的方法 我觉得对于我来说还是使用 Markdowm 比较容易一些 用我的第一篇博客来记一下一些比较简单常用的Markdown语法 本文参考来源Markdown语法 ...
随机推荐
- css控制div下图片自适应解决方法:图片不超过最大宽度
我们(特别是像我一样的菜鸟)经常会遇到一个问题——图片自适应.这个问题是很普遍的.在文章区,在论坛,可以这么说:哪儿需要上传图片,哪儿就存在这个问题,而论坛上也不时有人询问.为什么?原因很简单,我们不 ...
- TCP/IP/HTTP
一.什么是TCP连接的三次握手 第一次握手:客户端发送syn包(syn=j)到服务器,并进入SYN_SEND状态,等待服务器确认; 第二次握手:服务器收到syn包,必须确认客户的SYN(ack=j+1 ...
- Effective java笔记3--类和接口2
三.接口优于抽象类 java提供两种机制,可以用来定义一个允许多个实现的类型:接口和抽象类.由于java只允许单继承,所以,抽象类作为类型定义受到了极大的限制. 已有的类可以很容易被更新,以实现新的接 ...
- MFC调试的几个技巧
TCHAR pStr[] = _T("this is a test!"); void* p = (void*)pStr; TRACE(_T("pStr is %s\n&q ...
- Java开发需要注意的流程
将一些需要变动的配置写在属性文件中 比如,没有把一些需要并发执行时使用的线程数设置成可在属性文件中配置.那么你的程序无论在DEV环境中,还是TEST环境中,都可以顺畅无阻地运行,但是一旦部署在PROD ...
- redis基本操作和在springboot中的使用
本文介绍redis的使用 redis启动步骤 说明 redis自增自减相关操作 redis string set操作 get操作 其他操作 redis hash set操作 get操作 其他操作 re ...
- java - 判断 字符串是否为空
java - 判断 字符串是否为空 方法一: 最多人使用的一个方法, 直观, 方便, 但效率很低.1:if(s == null || s.equals(""));方法二: 比较字符 ...
- c++builder PM2.5
c++builder PM2.5 TMemoryStream *ms = new TMemoryStream(); this->NetHTTPClient1->Get("http ...
- 季逸超:90后IT少年的“盖茨梦”
2月15日,"90后"独立开发者季逸超在其微博称,个人获得徐小平和红杉资本投资,成立了Peak Labs--以贝尔和施乐为目标的实验室. 谁是季逸超?他现年20岁,曾单独一人做出猛 ...
- 1-2 开发环境搭建-Windows平台
C:\Program Files\nodejs\node_modules\npm\npmrc C:\Users\ZHONGZHENHUA\.android\avd H:\heimaandroidadt ...