搭建web框架手册(一)
昨天听完永康对EASYUI的介绍后终于明白了优秀的UI框架就是第一生产力,过去自己一直沉浸在后端代码中,完全忽视了前端的生产力交互,总觉得界面漂亮就是生产力,其实大错特错,真正的具有高效生产力的界面其实是像EASYUI那样不是很漂亮但是各种下拉表格,一个屏幕多级的操作才是高效的生产。高效的生产是对用户的环境有要求,并非像网页那样中看不中用。人类有着悠久的略比淘汰良币的历史,大部分的人都不愿学习新东西,习惯按照习惯的操作来生活,所以对于什么是好的真的没有一个真理。用户习惯的,高效的就是好的。可以快速响应实现客户的各种需求的就是优秀的,对于客户来讲,最少的步骤,最简单的界面和完整的操作功能就是生产力。其他的即便再漂亮,如果满足不了用户生产力的需要,管理软件也是没有用的。
今天着手搭建一套自己公司将来使用的框架。
该框架的特点:
开源:该框架大量使用开源的组件来构建,本身也完全开源;
先进:使用ASP.NET MVC及相关的组件最新版本,最新特性;
该框架的要求是:
组件式:基于Autofac的Ioc,开发人员根据需求组合各种组件进行项目开发;
安全:用户、角色、功能、验证、授权模块,实现原子级别操作的安全性;
UI:系统需要自带EASYUI支持后台快速开发,Bootstrap支持响应式,knockout 实现MVVM
日志:基于NLog和日志管理模块,声明式记录每个操作的成功或失败,后台进行业务日志审计和系统日志查看。
数据层:基于Entity Framework Code First实现ORM,快速实现增删改查等操作。
业务层:使用先进的DDD领域驱动开发建立领域模型,使用充血模型,有效地组织和重用业务逻辑
框架层次:
IE、Chrome、微信、QQ(最高层的用户界面)
EasyUI,Bootstrap,knockout
Seeing Web(基于ASP.NET MVC的框架)
Seeing Domain
Seeing Repositories
Seeing Data
Entity Framework
Seeing Core
Nlog,Autofac(最底层的支撑)
开始搭建
首先创建一个空白的工程Seeing.Framework
接下来添加一个基于.net framework 4.5.1版本的C#类库 Seeing.Core
打开nuget,连续安装nlog和autofac和autofac.configuration
接下来添加一个基于MVC5的ASP.NET MVC工程。
打开nuget,连续安装nlog和nlog.config,autofac和autofac.configuration。
安装完成后配置nlog将日志输出到${basedir}/logs/${shortdate}.log输出文件
配置完成后增加autofac的配置,我使用json方式来配置。配置的时候才发现其实自己并不熟悉autofac,于是花了一天时间把autofac官网文档读了一遍。写了几个测试的demo后渐渐的熟悉了起来。
接下来在Seeing.Core工程中注入HttpModule,根据经验我创建了一个IAppHttpModule,然后继承IHttpModule实现了一个加载器,该加载器会在系统每次请求的时候加载所有通过autofac注入的模块。
今天就实现了这些。
搭建web框架手册(一)的更多相关文章
- 一次框架性能的比较,引起了我对搭建web框架的兴趣
背景 一次无意的访问,点击到了一个专门做PHP性能测试的网站,看这里PHP Benchmarks. 在里面发现了框架性能测试的结果,发现Laravel的框架性能尽然是最低的.瞬间受到了一万点的暴击,谁 ...
- 用Python手把手教你搭建一个web框架-flask微框架!
在之前的文章当中,小编已经教过大家怎么搭建一个Django框架,今天我们来探索另外的一种框架的搭建,这个框架就是web框架-flask微框架啦!首先我们带着以下的几个问题来阅读本文: 1.flask是 ...
- python笔记-19 javascript补充、web框架、django基础
一.JavaScript的补充 1 正则表达式 1.1 test的使用 test 测试是否符合条件 返回true or false 1.2 exec的使用 exec 从字符串中截取匹配的字符 1.3 ...
- 【原】Go语言及Web框架Beego环境无脑搭建
本文涉及软件均以截至到2013年10月12日的最新版本为准 1. 相关软件准备: 1) go1.2rc1.windows-386.msi,对应32位windows系统安装使用 下载地址: https: ...
- 第三篇 基于.net搭建热插拔式web框架(重造Controller)
由于.net MVC 的controller 依赖于HttpContext,而我们在上一篇中的沙箱模式已经把一次http请求转换为反射调用,并且http上下文不支持跨域,所以我们要重造一个contro ...
- 第二篇 基于.net搭建热插拔式web框架(沙箱的构建)
上周五写了一个实现原理篇,在评论中看到有朋友也遇到了我的问题,真的是有种他乡遇知己的感觉,整个系列我一定会坚持写完,并在最后把代码开源到git中.上一篇文章很多人看了以后,都表示不解,觉得不知道我到底 ...
- 基于.net搭建热插拔式web框架(实现原理)
第一节:我们为什么需要一个热插拔式的web框架? 模块之间独立开发 假设我们要做一个后台管理系统,其中包括“用户活跃度”.“产品管理”."账单管理"等模块.每个模块中有自己的业务特 ...
- net搭建热插拔式web框架
net搭建热插拔式web框架(重造Controller) 由于.net MVC 的controller 依赖于HttpContext,而我们在上一篇中的沙箱模式已经把一次http请求转换为反射调用,并 ...
- net搭建热插拔式web框架(沙箱的构建)
net搭建热插拔式web框架(沙箱的构建) 上周五写了一个实现原理篇,在评论中看到有朋友也遇到了我的问题,真的是有种他乡遇知己的感觉,整个系列我一定会坚持写完,并在最后把代码开源到git中.上一篇文章 ...
随机推荐
- EC笔记:第4部分:18、接口正确使用,不易被误用
好的接口容易被正确使用,不易被误用 考虑以下函数: void func(int year,int month,int day){ //一些操作 } 这个函数看似合理,因为参数的名字已经暴露了它的用途. ...
- Android Studio同时打开多个项目
Android Studio的默认设置是打开第二个项目时,第一个项目就被自动关闭了,如果要同时打开多个项目,可以点击File->Settings,对Project Opening进行下面的设置: ...
- 严重: Exception sending context initialized event to listener instance of class
问题描述:Exception sending context initialized event to listener instance of class org.springframework.w ...
- python 学习笔记 -logging模块(日志)
模块级函数 logging.getLogger([name]):返回一个logger对象,如果没有指定名字将返回root loggerlogging.debug().logging.info().lo ...
- CSS代码规范
空格 选择器 与 { 之间必须包含空格. 列表型属性值 书写在单行时,, 后必须跟一个空格. 属性名 与之后的 : 之间不允许包含空格, : 与 属性值 之间必须包含空格. margin: 0; .+ ...
- 自己写的HTML5 Canvas + Javascript五子棋
看到一些曾经只会灌水的网友,在学习了前端之后,已经能写出下载量几千几万的脚本.样式,帮助大众,成为受欢迎的人,感觉满羡慕的.我也想学会前端技术,变得受欢迎呀.于是心血来潮,开始学习前端知识,并写下了这 ...
- Dynamics CRM 2015-超大Solution导入问题
我们在将比较大的solution导入CRM的时候,经常会遇到超时的问题,这是因为CRM的本身的优化限制导致的,那么如何解决呢? 官方已经有了解决方案了. 在浏览完两种解决方法之后,我们要知道的是: 1 ...
- QQ互联登录以及非官方正版应用报100044错误
QQ第三方登录的时候,显示非官方正版应用,报100044错误:坑1:我们在QQ互联注册成功后需要设置包名和签名,签名是通过官方提供的工具生成的.注意一点:这里的签名是需要由打包签名之后APK生成,我们 ...
- GCD的相关函数使用
GCD 是iOS多线程实现方案之一,非常常用 英文翻译过来就是伟大的中枢调度器,也有人戏称为是牛逼的中枢调度器 是苹果公司为多核的并行运算提出的解决方案 1.一次性函数 dispatch_once 顾 ...
- python(一)
python数学函数 abs(x) 返回数字的绝对值,如abs(-10) 返回 10 ceil(x) 返回数字的上入整数,如math.ceil(4.1) 返回 5 cmp(x, y) 如果 x < ...