随笔分类 -  C#基础

在.net中序列化读写xml方法的总结
摘要:XML是一种很常见的数据保存方式,我经常用它来保存一些数据,或者是一些配置参数。使用C#,我们可以借助.net framework提供的很多API来读取或者创建修改这些XML,然而,不同人使用XML的方法很有可能并不相同。今天我打算谈谈我使用XML的一些方法,供大家参考。最简单的使用XML的方法由于.net framework针对XML提供了很多API,这些API根据不同的使用场景实现了不同层次的封装,比如,我们可以直接使用XmlTextReader、XmlDocument、XPath来取数XML中的数据,也可以使用LINQ TO XML或者反序列化的方法从XML中读取数据。那么,使用哪种方法 阅读全文
posted @ 2013-05-05 22:45 Fish Li 阅读(63054) 评论(185) 推荐(490) 编辑
优化反射性能的总结(下)
摘要:在前二篇博客中,我分别介绍了二种优化反射的方法:1. Delegate:委托。2. CodeDOM:动态代码生成。这是二种截然不同的方法,性能的差距也很大。今天的博客将着重比较它们的优缺点,以及给出它们的使用建议。用Delegate优化反射的缺点在评价委托方案时,我认为有必要细分一下委托方案:1. 强类型委托,例如:Action<TTarget, TValue>2. 弱类型委托,例如:Action<object, object>它们的优点分别是:强类型委托:速度快,已经最接近直接调用的性能,然而它的缺点是 不通用。弱类型委托:比较通用,且经过一些代码封装后,使用方便,但 阅读全文
posted @ 2013-03-03 21:11 Fish Li 阅读(17805) 评论(37) 推荐(65) 编辑
优化反射性能的总结(中)
摘要:问题回顾在上篇博客中,我介绍了优化反射的第一个步骤:用委托调用代替直接反射调用。然而,那只是反射优化过程的开始,因为新的问题出现了:如何保存大量的委托?如果我们将委托保存在字典集合中,会发现这种设计会浪费较多的执行时间,因为这种设计会引发三个新问题:1. 代码的执行路径变长了。2. 字典查找是有成本开销的。3. 字典集合的并发读写需要锁定,会影响并发性。再来回顾一下上次的测试结果吧:虽然通用接口ISetValue将反射性能优化了37倍,但是最终的FastSetValue将这个数字减少到还不到7倍(在CLR4中还不到5倍)。难道您不觉得遗憾吗?再看看直接调用与反射调用的对比,它们的速度相差了上千 阅读全文
posted @ 2013-02-24 21:03 Fish Li 阅读(18486) 评论(50) 推荐(64) 编辑
优化反射性能的总结(上)
摘要:反射是一种很重要的技术,然而它与直接调用相比性能要慢很多,因此如何优化反射性能也就成为一个不得不面对的问题。目前最常见的优化反射性能的方法就是采用委托:用委托的方式调用需要反射调用的方法(或者属性、字段)。那么如何得到委托呢? 目前最常见也就是二种方法:Emit, ExpressionTree 。其中ExpressionTree可认为是Emit方法的简化版本,所以Emit是最根本的方法,它采用在运行时动态构造一段IL代码来包装需要反射调用的代码,这段动态生成的代码满足某个委托的签名,因此最后可以采用委托的方式代替反射调用。用Emit方法优化反射如果我们需要设计自己的数据访问层,那么就需要动态创 阅读全文
posted @ 2013-02-18 21:32 Fish Li 阅读(41070) 评论(114) 推荐(203) 编辑
写自己的ASP.NET MVC框架(上)
摘要:写了几篇细说之后,今天打算换换口味,还是来写代码吧。所以,这次博客将以实际的代码来展示在ASP.NET平台上开发自己的框架,我希望也能让您发现这并不是件难事。我在前面的博客【用Asp.net写自己的服务框架】中,发布了一个用ASP.NET写的服务框架,那个框架我目前仍在使用中。近来,由于时常也会有人问我一些关于ASP.NET MVC的话题,因此,就想再写个自己的MVC框架出来,一方面可以留给自己使用,另外也可以谈谈MVC,尤其可以展示一下在ASP.NET下写框架的乐趣。我之所以将写框架看成是件有乐趣的事,是因为:在写框架的过程中会接触许多的技术细节。比如:1. 为了支持Session需要了解管 阅读全文
posted @ 2012-02-12 22:13 Fish Li 阅读(153660) 评论(193) 推荐(899) 编辑
在.net中读写config文件的各种方法
摘要:今天谈谈在.net中读写config文件的各种方法。在这篇博客中,我将介绍各种配置文件的读写操作。由于内容较为直观,因此没有过多的空道理,只有实实在在的演示代码,目的只为了再现实战开发中的各种场景。希望大家能喜欢。通常,我们在.NET开发过程中,会接触二种类型的配置文件:config文件,xml文件。今天的博客示例也将介绍这二大类的配置文件的各类操作。在config文件中,我将主要演示如何创建自己的自定义的配置节点,而不是介绍如何使用appSetting 。请明:本文所说的config文件特指app.config或者web.config,而不是一般的XML文件。在这类配置文件中,由于.net 阅读全文
posted @ 2011-12-18 20:41 Fish Li 阅读(72876) 评论(131) 推荐(488) 编辑
C#客户端的异步操作
摘要:上篇博客【用Asp.net写自己的服务框架】我讲述了如何实现自己的服务框架,但我想很多人应该用过WebService这类服务框架,相比起来,似乎还缺少什么东西,是的,我也感觉到了。比如:我可以很容易地利用WebService, WCF框架编写一个服务,在客户端也可以很容易地通过【添加服务引用】的方式来生成一个代理类,然后就可以调用服务了,非常简单,更酷的是,IDE生成的代理类还有异步调用功能!我一直认为,对于服务框架来说,最重要的事是将一个C#方法公开为一个服务方法,供远程客户端调用。因此,我上篇博客中演示的服务框架显然已经可以简单地完成这个功能。不过,目前如果要使用这个服务框架,客户端还不够 阅读全文
posted @ 2011-10-23 20:37 Fish Li 阅读(51743) 评论(122) 推荐(313) 编辑