随笔分类 -  .net

摘要:去年底,公司一个上线了近一年的系统逐渐出现访问缓慢,操作超时的问题。本人使用winDBG工具对抓下来的内存映象进行了诊断,虽最后没有查出什么原因,但在过程中也学到了不少东西,现记录如下 一. “Failed to load data access DLL, 0x80004005”错误 这个错误还有另 阅读全文
posted @ 2017-02-19 00:24 永远的阿哲 阅读(542) 评论(0) 推荐(0) 编辑
摘要:之前用的是安装即用的Elmah作为本系统的日志记录与异常捕获框架,但是前段时间遇到了定制化问题,客户想看另一种表现形式的日志,且当插入到数据库中了之后,Elmah生成的记录特别大,所以无奈只好舍弃之,然后自行实现。 其实日志这一块.Net用来用去也就那么几种选择。我选择了Common.Logging作为通用日志接口,后端使用了Common.Logging.NLog20与NLog作为日志实现。注意在配置时尽量使用异步日志,这样即能提高性能,也能增强用户体验。 NLog文章系列——系列文章目录以及简要介绍 在选择前者时要注意,在NuGet上还有一个名叫Common.Logging.NLog的框架. 阅读全文
posted @ 2014-03-20 20:45 永远的阿哲 阅读(362) 评论(0) 推荐(0) 编辑
摘要:Couchbase是membase的升级版,membase与memcache是同一家公司出的,Couchbase包含了memcache的功能。 从其官网上下载最新的版本安装即可。安装成功后会弹出设置页面。Couchbase大部份的设置均可通过Web完成。 进入设置页面后,第一步是设置管理员账号与密码。注意两者都是是大小写敏感的。 然后就是创建默认的存储桶,之后就可以使用了。网上都有很详细的教程,这里就不赘述了。 Memcache升级版: CouchBase (一)安装篇 .NET中使用Memcached的相关资源整理 这里专门谈一谈我在使用中遇到的问题。 一.Web设置页面报错。 如果打开的. 阅读全文
posted @ 2014-03-05 14:47 永远的阿哲 阅读(2128) 评论(0) 推荐(0) 编辑
摘要:Understand全称为Scientific Toolworks Understand,,是一款源代码阅读分析软件,使用它可以大大提高代码阅读效率。此软件亦有架构分析,代码评审与度量,生成软件质量统计与报表等功能。 官方网站:https://www.scitools.com/features/metrics.php 一.安装 傻瓜式安装,安装过程中使用算号器生成可用序列号填入其中即可。 二.功能概述 (一).代码度量,统计各个方面的指标以确定代码健壮性与重用性,测重代码健康。 (二).代码分析,使用代码规范检查代码,测重代码风格与规范。 (三).代码编辑,包括编辑器,代码大纲,代码属性,代. 阅读全文
posted @ 2013-05-24 17:50 永远的阿哲 阅读(4740) 评论(0) 推荐(0) 编辑
摘要:在上篇文章中我研究了OpenId及DotNetOpenAuth的相关应用,这一篇继续研究OAuth2. 一.什么是OAuth2 OAuth是一种开放认证协议,允许用户让第三方应用访问该用户在某一网站上存储的私密的资源(如照片,视频,联系人列表),而无需将用户名和密码提供给第三方应用.数字2表示现在使用第2代协议. 二.OAuth2中的角色 OAuth2有四种角色 resource owner资源所有者:比如twitter用户,他在twitter的数据就是资源,他自己就是这些资源的所有者。 resource server资源服务器:保存资源的服务器,别人要访问受限制的资源就要出示 Access. 阅读全文
posted @ 2013-04-01 16:01 永远的阿哲 阅读(12428) 评论(12) 推荐(18) 编辑
摘要:最近有朋友向我咨询单点登录的相关问题,并多次提到了OAuth这个名词.本人不才,由于工作关系尚未有过相关经验.于是上网搜索相关资料并初步研究了在.net下单点登录的实际应用.略有微小心得,现记录如下 1.什么是OpenId OpenId是一个分布式的身份管理系统,也叫做分散的单点登录平台。通过在多系统间减化登录过程来提高用户体验. 参考: OpenID对决IT三巨头之识别系统 OpenId:身份认证技术要革命? 2.OpenId与OAuth的区别 OAuth和OpenID的区别在于应用场景的区别,OAuth用于授权的,是一套授权(Authorization)协议;OpenID是用来认证的,是. 阅读全文
posted @ 2013-03-18 21:39 永远的阿哲 阅读(5881) 评论(5) 推荐(3) 编辑
摘要:对于对称加密,首先生成字节流形式的key与iv,之后对指定字符串进行加密,然后将key与iv转换为字符串传输到另一端,另一端再将字符串转换回字节流完成解密工作.在key与iv的字节流与字符串之间的转换中如果选用Utf8编码,则可能会让转换回的二进制流与之前的字节流不一致.代码如下:byte[] bytes = new byte[]{146, 174, 27, 74, 223, 159, 52, 180};string s = Encoding.UTF8.GetString(bytes);Console.WriteLine(s);byte[] bytes2 = Encoding.UTF8.Ge. 阅读全文
posted @ 2013-03-08 17:23 永远的阿哲 阅读(1384) 评论(1) 推荐(1) 编辑
摘要:我是从dudu的一篇文章里获知此框架,主要用于分离程序主体代码与程序启动代码.这与WebActivator框架很象,却可适用于各类程序而不仅仅是Web程序,还可以自定义执行顺序,执行条件等.是一款不可多得的好框架. 本文书写时Bootstrap的版本号为2.0.3.2. 首先来看Bootstrap框架的主体类:Bootstrapperprivate static readonly BootstrapperExtensions Extensions;public static object Container {get { return ContainerExtension == null ?. 阅读全文
posted @ 2013-01-29 15:11 永远的阿哲 阅读(1558) 评论(0) 推荐(0) 编辑
摘要:Ninject是一款.Net平台下的开源依赖注入框架.按照官方说法,它快如闪电、超级轻量,且充分利用了.Net的最新语法,使用Lambda表达式代替Xml文件完成类型绑定.Ninject结构精巧,功能强大,越来越受到各类开发者的关注,其开源社区非常活跃,众多开发者为它开发了各种各样的扩展应用.其中有一款名叫Ninject.Web.Common,是所有将Ninject应用于Web项目的基框架,而Ninject.MVC3则是将Ninject应用于Asp.Net Mvc中的框架.这两者是本文分析的主角. 书写本文时,Ninject的版本号为3.0.1,Ninject.Web.Common的版本号为. 阅读全文
posted @ 2013-01-28 22:56 永远的阿哲 阅读(1242) 评论(2) 推荐(1) 编辑
摘要:使用NHibernate也有近三年了,从最初的2.1一直到现在的3.3.在使用过程中犯了很多错误,走了很多弯路.最近两天又研究了一下使用细节,觉得有必要将对NH的一些认知与研究成果记录下来,作为这一段时间内的学习总结. 1.认识NH NH并不是数据访问层的灵丹妙药,其只有在以代码为中心,使用真正的面向对象/面向领域开发时才能发挥最大威力.它能让对象以最方便,最智能的方式持久化.它不是原生Ado.Net的替代者,更不是数据库相关技术的替代者.它严格遵守80/20原则,解决程序中80%的对象存储问题.在以数据为中心的场景,如查询,统计,报表等,还是使用原生Ado.Net为易. NH主要分为配置,. 阅读全文
posted @ 2013-01-25 18:13 永远的阿哲 阅读(832) 评论(2) 推荐(1) 编辑
摘要:一.概念介绍 一般来讲,能影响VS编译结果的参数有两个:编译优化和目标平台 编译优化 首先要明白一个概念,.Net是一个二次编译模型,所以VS编译的结果是IL代码。而默认情况下VS编译出来的IL代码,会包括很多NOP指令(空指令),还包括许多分支指令等。VS会利用这些指令对程序调试操作提供更好的支持。而所谓的编译优化,就是去掉这些额外的指令,让程序集的体积和运行时所占的内存更小一点。 其它平时更常用的说法叫Debug版与Release版。Debug版就是关闭编译优化的版本,Release版就是打开编译优化的版本。 目标平台 现代操作系统分为32位与64位。32位操作系统可以运行32位程序,64 阅读全文
posted @ 2012-11-02 21:28 永远的阿哲 阅读(8183) 评论(0) 推荐(1) 编辑
摘要:最近公司某项目布署到生产环境后,发现其内存占用整体上只升不降,疑遭内存泄漏,对程序的稳定运行带来了极大的风险。 解决内存泄漏一般有两种思路:静态检查与动态监控。在使用难度上动态监控远远大于静态检查,在使用顺序上一般也是先静后动。静态检查一个比较好的工具就是fxcop。 fxcop是微软出的一款静态代码检查工具,从1.36开始被VS集成,其独立版本与VS版本的对应关系是:1.35对应VS2005,1.36对应VS2008,10对应VS2010。独立版本有UI与命令行两种使用方式,集成版本UI被VS集成,只有命令行可独立使用。 静态代码检查工具本质上是使用代码检查规则完成对代码的检查,fxcop. 阅读全文
posted @ 2012-10-12 16:44 永远的阿哲 阅读(533) 评论(0) 推荐(0) 编辑
摘要:最近做项目,需要把DataTable中的数据强类型化.于是试用了下比较常用的AutoMapper,通过看代码中附带的Demo与网上的教程,也算能够勉强使用了,现将学习笔记记录如下:namespaceConsoleApplication1{classProgram{staticvoidMain(string[]args){//1.普通转换Namename1=newName(){FirstName="L",LastName="jz"};Mapper.CreateMap<Name,NameDto>().BeforeMap((name,nameDto 阅读全文
posted @ 2011-12-29 00:22 永远的阿哲 阅读(7031) 评论(5) 推荐(8) 编辑
摘要:最近一段时间由于工作需要,仔细研读了微软企业库的部分源码,不由得佩服这些大洋彼岸的同行们.先不谈代码的架构怎么样,起码在代码注释这一块,那叫一个专业啊.一个200行的源文件150行注释50行代码是常有的事.注释量不仅多,质量也高.我的很多困惑都是通过阅读代码注释得以解答的. 这年头,代码注释的方式基本都是采用以///开头的xml注释方式了.在visual studio里,连续输入三个///,编辑器会自动补全剩下的部分.默认使用的是summary标签.如果是方法则可能还会有param与returns标签.这也是我们最常用到的三个标签.难道xml注释方式只有这三种标签吗?显然不是.当你再输入... 阅读全文
posted @ 2011-12-19 23:54 永远的阿哲 阅读(441) 评论(0) 推荐(0) 编辑
摘要:事情的初衷很简单,就是想不用xml配置来使用其缓存组件,试了很多遍都无法成功.不得已安装了其源码大略分析一遍,才总算成功.后来又一想,既然分析就分析的彻底一点吧,顺便看看国外的高手们是怎么架构组件,书写代码的,于是就有了这篇文章.企业库为5.0版本. 首先是类关系图: 缓存组件的整体结构为CacheManager -> Cache -> CacheItem,其中CacheItem为缓存项,其有Key有Value,还有本缓存项的过期策略及删除时的回调函数.Cache为缓存,除管理CacheItem外,还负责管理缓存性能计算器及缓存持久化.CacheManager为Cache类的包装类 阅读全文
posted @ 2011-12-19 00:50 永远的阿哲 阅读(2075) 评论(6) 推荐(3) 编辑
摘要:本来是没有打算写这篇分析的,但是在我分析缓存组件的时候,发现企业库的所有组件都是通过一种方式创建出来的,这就让我产生了好奇,于是决定去看看他到底是如何通过配置文件将正确的对象创建出来. 这里有四个重要的接口,一句话概括,就是配置器(IContainerConfigurator)以特定的解析方式(ITypeRegistrationsProvider)将源(IConfigurationSource)里的信息解析出来,最终发布为服务定位器(IServiceLocator). 一.服务定位器 可以从图上看到,其实所谓的企业库服务定位器,其实就是对依赖注入框架Unity的一个封装,通过GetI... 阅读全文
posted @ 2011-12-18 18:31 永远的阿哲 阅读(444) 评论(0) 推荐(0) 编辑
摘要:最近公司跟我换了新电脑:2代i3+8G内存,由于32位的win7最多只能用3.25G内存,而用ramdisk4g划出4.75G来作硬盘又觉太浪费,遂想用64位的系统. 从网上下载了冷风的64位win7后先装系统再装驱动再装常软件,除部份驱动需重新安装外,一路安好.但是在安装ODAC组件时,出了如下问题: 1.常用的plsql与sqldbx只有32位版本,只能使用32位的ODAC, 2.在64位系统上,如果使用32位的ODAC,asp.net程序时会报异常:尝试加载Oracle客户端库时引发BadImageFomatException。如果在安装32位Oracle客户端组件的情况下以64位... 阅读全文
posted @ 2011-10-20 21:03 永远的阿哲 阅读(2938) 评论(0) 推荐(0) 编辑
摘要:最近公司项目马上就要在客户这边进入试运行了,而我也被派过来进行项目的初步布署,下面就是我的布署概要图. 通过花生壳,实现将内网主机发布到外网上,这样源代码获取,远程桌面等就方便了很多;通过CCProxy实得原来在内网的服务器可以连接外网,方便项目布署. 在进行项目布署的过程中,我遇到了并解决了以下问题,现在简要记录一下 1).默认网关 在双网卡的电脑上,当你在IE地址栏输入一个网址的时候,浏览器到底是通过网卡一进行通信还是网卡二进行通信的呢?这主要看你当时的默认网关是哪个.对于两个网卡的电脑,网卡的启动是有先后顺序的,一般来讲,先启动的网卡具有优先级,也就会是当前默认网关.通过在cmd中输入. 阅读全文
posted @ 2011-08-14 23:27 永远的阿哲 阅读(427) 评论(0) 推荐(0) 编辑
摘要:公司最近准备分出一套人马去客户那里做驻场研发,这就涉及到代码库的统一管理。鉴于VSS在互联网上表现不好,而TFS配置又过于复杂,我们选择了SVN。考虑到代码的安全性及性能,我们决定在本地布署自己的SVN服务器,然后每个人安装TortoiseSVN作为客户端,并安装AnkhSVN插件配合Visual Studio使用,安装CruiseControl.NET进行自动化的每日构建,安装Redmine进行项目管理,安装BugFree进行bug管理。 1.VisualSVN,TortoiseSVN,AnkhSVN 我安装的版本是:VisualSVN2.1.9,TortoiseSVN-1.6.16... 阅读全文
posted @ 2011-08-09 20:54 永远的阿哲 阅读(2409) 评论(1) 推荐(2) 编辑
摘要:虽说我不怎么相信国外的月亮比国内圆,但在IT业这块,不得不承认国外确实比国内牛。读了《C#和.NET2.0实战(平台语言与框架)》与《CLR VIA C#》(第三版)后,让我对以前很多不明白的地方有了更加深入的与完整的认识。 首先是.net程序集的组成: 然后是.net程序的内存布局: 代码Code highlighting produced by Actipro CodeHighlighter ... 阅读全文
posted @ 2010-11-01 10:41 永远的阿哲 阅读(561) 评论(0) 推荐(0) 编辑