- 博客(21)
- 资源 (1)
- 问答 (1)
- 收藏
- 关注
原创 在小型Web系统中使用缓存加速访问
在高并发的现代Web系统中,缓存体系是绕不开的话题。一直以来我们开发的系统处于内网环境中,而且服务器资源相对负载来说比较富裕,从未使用缓存。大型的Web系统往往会使用MemCache,Redis等缓存数据库来加速访问,还有诸如全站静态化和CDN等技术。而受制于技术复杂度。小型Web使用.NET自带的缓存技术,也可以非常好的提高访问速度。 在油水井图片库这个项目中,由于在模糊查询中不
2016-07-30 09:22:17
819
原创 油水井图片库开发总结
锦州采油厂油水井图片库(下称图片库)是一个很小的项目。是一个类似wiki的图片搜索管理网站。在项目中使用了一些新的概念,使其成为迄今为止结构最为清晰的一个项目。 一、仓储模式和增删改查 仓储模式是一个很老的概念了,抛开领域模型的概念。仓储应该是将持久层(一般是指数据库)中的实体(一般是指数据库中的表)映射为编程上下文中的集合。这样做的主要好处有三点: 1、
2016-07-19 11:24:58
836
原创 为什么要使用ABP框架?
我们近几年陆续开发了一些Web应用和桌面应用,需求或简单或复杂,实现或优雅或丑陋。一个基本的事实是:我们只是积累了一些经验或提高了对,NET的熟悉程度。 随着软件开发经验的不断增加,我们发现其实很多工作都是重复机械的,而且随着软件复杂度的不断提升,以往依靠经验来完成一些简单的增删改查的做法已经行不通了。特别是用户的要求越来越高,希望添加的功能越来多,目前这种开发模式,已经捉襟见肘。我
2016-06-06 16:19:40
27555
1
原创 架构是一种妥协
车辆调度系统陆续写了半年时间了,中间经历老人故去,儿子降生,一波三折。最近才静下心来写了一周时间,由于是在前一个版本上迭代开发的,整体速度还是很快的。而且在和尚兄的指导下,系统使用的技术有了很多进步。比如首次使用了Asp.net的窗体验证机制,EF的生命周期管理等东西。并且对界面做了一些改进,整体已经非常成熟了。从实现功能的角度来说是完全没有问题的。 我使用了三层架构来重新搭建
2015-10-05 21:20:43
781
原创 数据库是否应该应用外键的一点思考
最近看了和尚师傅的数据库设计。数据库表都是孤立的,不存在外键关系。虽然放弃了EF引以为傲的懒加载和导航属性等特性,实际编码量也会增大。但是带来的优点是灵活性非常高。表和表之间没有任何约束。当然这点也可以认为是有点。 我一直以为这种设计在互联网场景下比较适合。企业内部相对不变的管理系统可以使用主外键来提高开发速度,减少代码量。最近一个系统在上线之初就遇到了很大的分歧。用户几乎想
2015-07-21 10:58:32
1189
原创 定时作业框架Quartz.net的简单应用
在许多应用场景下我们都希望定时执行一些事务,比较常见的是维护数据库:定时生成汇总数据,定时复制插入数据等。其他特定场景下都存在这些定时任务。如果涉及数据库维护的定时任务,我们尚可以使用数据库自带的数据库代理来实现定时批处理。面对其他类型的定时任务,往往只能通过在服务器上编写windows进程等手段来简介实现。上述这些方法存在下列缺点: 1.需要学习特定的语言或API
2015-07-10 12:18:30
825
原创 EasyUI Layout布局控件的缓存问题
在Layout控件中,经常需要在Panel中异步加载子页面,加载的子页面内容,不论是JS文件还是HTML,都会自动在后面添加一个随机字符,从而避免了缓存,也就是说在Panel中动态加载的内容,是不需要做版本控制的。其内容无法缓存。
2015-07-05 18:06:03
1076
原创 NPOI中实现列宽精确控制
NPOI生成Excel文件时,设置列宽只有一函数sheet.SetColumnWidth(),该函数有两个参数,第一个是行索引,第二个是行列宽。但是在实际使用过程中,设置的行列宽与产生的Excel文件行列宽不一致。经过实际测试,只需要加一个常量即可: sheet.SetColumnWidth(0, 16 * 256 + 200); // 200为常量,这样即可控制列宽为16
2015-07-05 18:00:42
5272
原创 配置文件简单使用
配置文件作为一种在编译文件外部灵活修改参数和设置条件的手段,应用范围非常广泛。其简单用法如下: 首先在配置文件的配置节中指定对应配置节的类型。一般为键值对类型。 使用时首先获得该配置节,并转化为键值对类型后使用: var version = ((NameValueCollection)System.Configur
2015-07-05 17:34:49
462
原创 初识ASP.NET MVC窗体验证与权限过滤---3.自定义过滤器验证Session超时
为了防止用户在seesion过期之后进行操作,可以添加自定义过滤器验证session是否过期,为了便于测试将过期时间设置为1分钟,在Filters文件夹下添加一个自定义过滤器。 namespace AuthStudy.Filters{ public class CustomFilterAttribute :ActionFilterAttribute {
2015-05-16 11:54:06
1553
原创 初识ASP.NET MVC窗体验证与权限过滤---2.基于角色的访问控制
上一篇完成了窗体身份验证并在客户端保存了鉴权cookies,系统已经知道我已经登录并获得了授权。但仅仅知道登录了是不够的,还要对能够访问的区域做出控制。男人不能进女厕所,女人不能进男厕所O(∩_∩)O哈哈~ 这里就要来扯一扯AOP了,AOP是所谓的面向切面编程。听着好高端的样子。其实无非就是很多纵向解决起来很困难的问题,我们可以横向来解决。ASP.NET的管道事件,就是标准的
2015-05-16 11:16:55
734
原创 初识ASP.NET MVC窗体验证与权限过滤---1.窗体身份验证
一直不懂如何解决web系统的登录权限控制问题,在最开始的时候,我用了一个很土的方法。用户登录成功后就把用户的身份信息写到一个会话cookie中。这种方法非常的脆弱而且不安全。比如a用户登录后没有退出功能页面,此时他又登录了b用户的账户,身份cookie已经被改写成了b。如果此时他回到a用户的功能页上继续操作,轻则他会看到b用户的相关信息,重则会出现系统错误。 就算用户正常登录了
2015-05-16 10:40:59
923
原创 浅论ASP.NET MVC参数映射的优缺点
ASP.NET MVC中,参数映射或路由映射是一个非常简便的特性,可以直接将URL查询参数映射为控制器方法的参数。但是在实际使用中,还是要需要斟酌使用。 1、优点 简便,不需要从HttpContext上下文对象中来读取键值对。现在我们用控制起来实现一个两个整数相加,其代码大致如下: public string Add(int firstNum,
2015-04-27 16:29:24
1143
原创 利用Asp.net管道优化EntityFramework生命周期管理
HttpApplication是整个ASP.NET的核心,在第一次请求到抵达后,ASP.NET会创建大量HttpApplication对象置于对象池中并保持其存活。在后续请求的时候,ASP.NET会查看对象池中有无空闲HttpApplication对象,若有则直接使用,若都处于繁忙状态则重新创建。这也就是为什么网站第一次访问的速度很慢。 HttpApplication会不断处
2015-04-25 08:39:31
999
原创 EF中一种简单的多条件动态查询方法
多条件动态查询是任何一个数据系统都会处理的问题。如果使用纯SQL和数据库进行交互,可以使用SQLHepler之类的工具根据用户输入来动态生成SQL语句。在EF框架下,使用lambda表达式来进行多条件动态查询颇为麻烦。举个例子来说明吧。 数据模型类: class Person { public string Name; pu
2015-04-24 12:46:44
19757
2
原创 一种基于EF+MVC的小型系统快速开发架构
在一般的Web系统中,主要工作无外乎增删改查。事实上百分之八十的系统所做的工作也不外如是,不存在非常复杂的逻辑。只是数据的处理与展现。经过多次调整,整理出了一套基于EF+MVC的小型系统快速开发架构。主要思想是利用EF和泛型编程,将大部分的常用数据处理封装到DAL层中,在控制器中直接调用,大大提高开发速度。就目前来说,非常简洁实用。 1、依靠主外键关系编织数据
2015-04-19 18:06:27
1094
原创 ASP.NET MVC3 匿名类型视图模型无法识别的解决方案
1、将匿名类型赋给ViewBag然后通过反射读取 @foreach (var i in @ViewBag.Ages) { @i.GetType().GetProperty("Age").GetValue(i,null) } 2、借助JSON.NET,不过在RAZOR视图中失去了强类型的感知
2015-01-27 15:55:58
1858
easyui layout 加载页面显示不全
2014-04-23
TA创建的收藏夹 TA关注的收藏夹
TA关注的人