摘要: 今天在群中有人问关于泛型类型的注册和使用。我在这里做一个简单的Demo例子ServiceRegistry.Current .Register(typeof(IList<>),typeof(List<>));//注册契约 IList<>,组件List<>Assert.IsTrue(ServiceRegistry.HasRegister(typeof(IList<>)));Assert.IsTrue(ServiceRegistry.HasRegister(typeof(IList<int>)));Assert.IsTrue(S 阅读全文
posted @ 2012-05-21 13:45 风云 阅读(362) 评论(0) 推荐(0)
摘要: WebApi 这两天被dudu老大炒的老火了,看来我也需要加把柴了,呵呵。 NLite WebApi 是基于Ndf的服务分发器引擎,并借助Asp.net 的http原生态无状态协议的基础上搭建起来的,NLite Web api 完全无侵入性,不继承任何基类,只需要简单的配置即可把业务逻辑自动发不成NLite Web Api 服务, 简单易用,不废话,上过程! 服务端Nlite Web API的实现 需要准备的工具:Visual Studio 2010, NuGet(这两天现学了Nuget 包的制作,虽然去年简单学习并制作了NLite的包,不过早忘光了,看了dudu老大的WebApi介... 阅读全文
posted @ 2012-05-12 23:14 风云 阅读(5223) 评论(21) 推荐(10)
摘要: 引言 对象和对象之间是通过消息来进行通信的。具体过程如下: 创建对象a 创建对象b 创建请求消息request 调用对象b的方法 对象b返回对应的response通过上面的过程可以看出通信的调用方需要依赖如下元素:被调用方 (服务契约)请求消息request( 数据契约)被调用方的方法(操作契约)响应消息(数据契约)那么我们可以把通信的过程通过引入一个间接层-服务分发器来解耦对象间的之间通信,具体过程如下: 创建对象a 创建服务分发器dipatcher 创建请求消息request 调用分发器的分发方法 分发器创建对象b,并调用对象b的方法 对象b返回对应的response 给分发器,分发器把. 阅读全文
posted @ 2011-12-19 17:23 风云 阅读(1681) 评论(6) 推荐(1)
摘要: 背景 随着Asp.net mvc的越来越流行,关于和Mvc整合的DI容器也非常的多,而Mini容器一致没有把整合的方案发布出来,以至于不时的收到有些网友询问这些事,于是便有了该文。[源代码从这里下载,Mini容器官方地址]解决方案 创建自定义工厂 public class NLiteControllerFactory : DefaultControllerFactory { private IServiceLocator ServiceLocator; public NLiteControllerFactory(IServiceLocator s... 阅读全文
posted @ 2011-12-19 12:13 风云 阅读(1784) 评论(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 风云 阅读(1078) 评论(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 风云 阅读(1271) 评论(3) 推荐(4)
摘要: 数据库大型应用解决方案总结,这篇文章非常详细的总结了在大型项目中,关于数据库的解决方案。负载均衡技术读写分离技术分库(垂直,按功能模块)分表(水平,顺序拆分,hash取模分,在认证库中保存数据库配置)技术 当数据库读取压力太大时应当考虑读写分离技术。 当master负载太高时就要垂直分区-分库 当系统中特定的表异常大时就要考虑进行水平分区(分表) 大型的应用必然会经过一个从单一DB server,到Master/salve,再到垂直分区(分 库),然后再到水平分区(分表,sharding)的过程,而在这个过程中,Master/salve 以 及垂直分区相对比较容易,对应用的影响也不是很大,但. 阅读全文
posted @ 2011-06-20 13:48 风云 阅读(636) 评论(0) 推荐(0)
摘要: 上篇介绍了DI容器最基本功能,组件注册和组件创建和组件获取。这里将陆续把依赖注入进行详细介绍。 1. 看看组件工厂接口-IActivator的代码: /// <summary> /// 组件工厂 /// </summary> public interface IActivator { /// <summary> /// 创建组件 /// </summary> /// <param name="ctx">创建上下文</param> /// <returns>返回所创建的组件</retur 阅读全文
posted @ 2011-04-22 17:12 风云 阅读(1663) 评论(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 风云 阅读(2016) 评论(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 风云 阅读(2814) 评论(14) 推荐(2)