摘要: 背景 随着Asp.net mvc的越来越流行,关于和Mvc整合的DI容器也非常的多,而Mini容器一致没有把整合的方案发布出来,以至于不时的收到有些网友询问这些事,于是便有了该文。[源代码从这里下载,Mini容器官方地址]解决方案 创建自定义工厂 public class NLiteControllerFactory : DefaultControllerFactory { private IServiceLocator ServiceLocator; public NLiteControllerFactory(IServiceLocator s... 阅读全文
posted @ 2011-12-19 12:13 风云 阅读(1765) 评论(9) 推荐(2) 编辑
摘要: 1. 树表设计,建议在树表中增加字段TreePath 2. 记录超过一百万的表要考虑是否需要使用分区表。对于能够明确确定分区字段,并且经常通过分区访问记录的。分区表会提高查询性能。 3. 反范式 在第三范式设计的基础上,针对具体的数据情况和应用访问数据情况进行的设计,使用适当的数据冗余和数据不一致风险,提供更高的数据访问性能,以保障应用的性能要求。 4. 避免使用Select * 5. 使用Set代替Select进行赋值 6.必要的时候,使用关键字”NOLOCK”避免锁定 7.不需要排序的时候,不要使用关键字”Order 8.字符列字节长度小于等于10时,使用char或者nchar 9.字符. 阅读全文
posted @ 2011-06-20 15:12 风云 阅读(1043) 评论(0) 推荐(0) 编辑
摘要: 以下内容收集了Web高性能开发的相关文章1. Http服务器:让Windows Server 2008+IIS 7+ASP.NET支持10万个同时请求大规模网站架构实战之体系结构(一)大规模网站架构之WEB加速器SQUID(二)iis负载均衡 Nginx 常见配置总结nginx实现网站负载均衡(windows+IIS负载实测)玩玩负载均衡---在window与linux下配置nginxWindows版本nginx大型架构.net平台篇(WEB层均衡负载nginx)2、性能测试工具推荐3、图片篇.4、如何加载JS,JS应该放在什么位置.5、为什么要减少请求数,如何减少请求数.6、减少请求,响应. 阅读全文
posted @ 2011-06-20 14:53 风云 阅读(1245) 评论(3) 推荐(4) 编辑
摘要: 数据库大型应用解决方案总结,这篇文章非常详细的总结了在大型项目中,关于数据库的解决方案。负载均衡技术读写分离技术分库(垂直,按功能模块)分表(水平,顺序拆分,hash取模分,在认证库中保存数据库配置)技术 当数据库读取压力太大时应当考虑读写分离技术。 当master负载太高时就要垂直分区-分库 当系统中特定的表异常大时就要考虑进行水平分区(分表) 大型的应用必然会经过一个从单一DB server,到Master/salve,再到垂直分区(分 库),然后再到水平分区(分表,sharding)的过程,而在这个过程中,Master/salve 以 及垂直分区相对比较容易,对应用的影响也不是很大,但. 阅读全文
posted @ 2011-06-20 13:48 风云 阅读(606) 评论(0) 推荐(0) 编辑
摘要: 上篇介绍了DI容器最基本功能,组件注册和组件创建和组件获取。这里将陆续把依赖注入进行详细介绍。 1. 看看组件工厂接口-IActivator的代码: /// <summary> /// 组件工厂 /// </summary> public interface IActivator { /// <summary> /// 创建组件 /// </summary> /// <param name="ctx">创建上下文</param> /// <returns>返回所创建的组件</retur 阅读全文
posted @ 2011-04-22 17:12 风云 阅读(1630) 评论(3) 推荐(2) 编辑
摘要: DI容器在DotNet 中已经不是什么稀罕东西了,如Castle,Unity,Ninject,StructureMap,Spring,MEF等等,这些DI容器都是老外设计的,国内开发的DI容器是少之又少,Mini容器便是少之又少中的一员。关于Mini容器的介绍,请参考去年7月份写的这篇文章:Mini容器介绍。 DI容器核心功能包含2大件,服务注册表和服务定位器。 服务注册表:掌管服务的配置或注册,服务注册成功后,DI容器会生成组件的元数据信息包含: 组件Id标志(服务定位器根据该标志获取组件实例),如果组件在注册时未提供标志,那么系统根据组件类型动态生成一个标志 组件类型 契约接口集合,一个. 阅读全文
posted @ 2011-04-21 17:45 风云 阅读(1979) 评论(7) 推荐(4) 编辑
摘要: 上篇介绍了 Class 创建性能大比拼(反射,泛型反射,泛型创建,缓存Emit,非缓存Emit), 在这里做一个总结(执行10万次)直接创建Class对象最快 5ms缓存Emit 6ms (不包含Emit时间)泛型反射147ms泛型创建159ms(其实是编译器的语法糖,内部仍然调用泛型反射)反射340ms非缓存Emit 12786ms 经过上面的对比应该很清楚了Class创建原则: 直接创建->用缓存Emit->泛型反射->泛型创建->反射(反射大约比直接调用慢68倍左右),避免非缓存Emit 这篇就来一个Struct创建性能大比拼。因为Struct和Class一个是值 阅读全文
posted @ 2011-04-19 11:18 风云 阅读(2780) 评论(14) 推荐(2) 编辑
摘要: 一说到反射,很多人都想到了性能,更有甚者直接说“慎用反射,遗患无穷”,“用反射,感觉怎么像是退步啊~”,看到这种言论,直接把反射妖魔化了,如果这种言论长此以往,势必会对很多对反射初学者造成负面影响。反射是一把双刃剑,看你怎样使用了,下面我就用代码说话。class TestEntity { } 1. 手工创建TestEntity [TestInfo(Category = "Class.Constructor", Name = "Direct")] class DirectInvokeMode:IRunable { public void Run() { n 阅读全文
posted @ 2011-04-18 16:37 风云 阅读(4225) 评论(24) 推荐(7) 编辑
摘要: 在大比拼之前先讲一个小插曲,我这个人以前比较低调,做了很多好东西仅仅在公司内的朋友圈项目圈内分享,很少在博客园内进行分享,后来在dudu 老大的文章博客园现代化建设——AutoMapper有感便推荐一下OOMapper 组件,于是乎接连写了几篇入门性的介绍使用文章:开发人员必备工具:OOMapperOO Mapper 实践(上篇)OO Mapper 实践(下篇) 在园友Repository兄的NLiteMapper与EmitMapper性能简单比较中了解到NLiteMapper与EmitMapper的性能巨大差距,于是乎进行了两天的性能优化,同时总结了优化过程:一次性能优化最佳实践。在这里非. 阅读全文
posted @ 2011-04-13 12:49 风云 阅读(12789) 评论(46) 推荐(23) 编辑
摘要: 上周五下班前,在Repository兄测试NLiteMapper和EmitMapper的文章中,发现了令我跌破眼镜的性能悬殊对比12283ms : 7ms。真不可思议,与是便把EmitMapper的源代码和OOMapper 的源代码一起下载下来,以Release模式的方式做一个公平对比。测试代码仍然沿用Repository兄的,代码如下:public class SimpleClassFrom { public long ID { get; set; } public string Name { get; set; } public int Age { get; set; } public . 阅读全文
posted @ 2011-04-11 11:28 风云 阅读(4048) 评论(17) 推荐(3) 编辑