搭建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中.上一篇文章 ...
随机推荐
- LINQ to SQL语句(10)之Insert
1.简单形式 说明:new一个对象,使用InsertOnSubmit方法将其加入到对应的集合中,使用SubmitChanges()提交到数据库. var newCustomer = new Custo ...
- WinForm 对Web Api 增 册 改 查 的基本操作
WebApi代码: public class ValuesController : ApiController { Entities db=new Entities(); // GET api/val ...
- MS SQL按IN()内容排序
需求:MMSQL查询结果,按查询条件中关键字IN内的列举信息的顺序一一对应排序. 分析:使用CHARINDEX 函数. 解决方法: SELECT * FROM Product WHERE 1=1 AN ...
- Microsoft Dynamics CRM 解决数据大于5000时,页面上只能导出5000+数据。
页面显示: update [MSCRM_CONFIG].[dbo].[DeploymentProperties] set IntColumn=10000 --调整成10000+ 页面导出: 一.在 ...
- LinuxMint装JDK和Eclipse
Linux Mint 装JDK和Eclipse 前言 在尝试了好几个发行版后终于锁定了Linux Mint Cinnamon .那么就得配置好环境了. 这里讲一下JAVA环境,配置JDK和Eclips ...
- js动态绑定click事件时function传参问题
今天碰到了这样一个问题,我在javascript中动态创建了一个button, 然后我想给改button添加click事件,绑定的function想要传入一个变量参数, 一开始我想直接通过函数传参传进 ...
- js内存泄露的几种情况详细探讨
内存泄露是指一块被分配的内存既不能使用,又不能回收,直到浏览器进程结束.在C++中,因为是手动管理内存,内存泄露是经常出现的事情.而现在流行的C#和Java等语言采用了自动垃圾回收方法管理内存,正常使 ...
- 0034 Java学习笔记-反射-初步2-操作对象
通过反射创建对象 通过反射创建对象有两种方式,一种通过Class对象的newInstance()方法,一种是获取到Class对象的Constructor后,再调用newInstance()方法,前者要 ...
- Mysql 里面使用row_number() 的用法和注意
虽然使用不多,但是也有情况是需要在mysql 里面写语句开发功能的.在sql server 使用惯了,习惯了使用row_number() 函数进行排序,但是mysql 确没有这样一个函数.然后找到了p ...
- 前端小菜鸟的Mobile之旅---开篇
背景:前段时间有幸参与了公司一个基于H5的手机APP项目,(我们用的React+ES6+Webpack+Cordova开发),由此开始接触一些关于H5开发手机APP方面的知识,下面Shar ...