05 2010 档案
摘要: 本章讲了序列化和反序列化的知识,序列化可以讲对象转换成流进行传输或者持久化,在需要的时候通过反序列化在将对象构造出来。首先讲了如何让类型具备序列化的能力,以及如何控制序列化的过程。然后讲了Formatter如何序列化类型实例,如何控制序列化/反序列化的数据,介绍了StreamingContext对象,演示了如何将对象反序列化到不同的类型实例。接着介绍了序列化代理,最后讲了SerializationBinder抽象类可以用来反序列化对象到不同的类型。阅读全文
摘要: 本章讨论了如何构建可动态扩展的应用程序,以及如何通过反射来获得类型信息,创建类型的实例,动态的访问它们的成员。首先介绍了如何加载程序集以及如何通过反射来扩展应用,然后分析了反射会引起的性能问题以及如何减轻影响,然后介绍了构建插件应用程序的途径,最后讲了如何通过反射来调用类型的成员。阅读全文
摘要: 本章主要讨论了两个概念:Hosting和AppDomains。Hosting允许任何应用程序利用CLR的特性;AppDomain是进程中的一个逻辑区域,一个进程可以加载多个AppDomain,一个AppDomain中可以加载多个Assembly,AppDomain还可以被卸载。AppDomain可以为插件应用程序等提供很好的隔离性和安全性。首先解释了什么是CLR Hosting,什么是AppDomain,如何加载卸载监视AppDomain,然后讲了宿主怎样使用AppDomain,最后讲了高级的宿主控制方法以及如何写出健壮的宿主应用程序。阅读全文
摘要: 本章的内容比较多,主题就是垃圾收集。讲述了托管应用程序如何构造对象,如何控制这些对象的生命期,这些对象占用的内存怎样回收。首先介绍了垃圾收集器的一些基本概念,然后解释了垃圾收集算法,接着讲了垃圾收集如何进行以及如何调试。重点讲了Finalization是怎么进行的,如何使用Finalizer来释放资源和SafeHandle的用法,通过继承自CriticalFinalizerObject类型来保证终止化被执行,隆重推出了Dispose模式。还介绍了C#中using的用法,如何手动的控制对象的生命期,如何复活一个对象。解释了代龄是什么,在使用本地资源时如何利用垃圾收集器的特性。还讲了如何通过使用MemoryFailPoint来提高内存敏感算法的健壮性。另外还讲了如何通过编程的方法来控制垃圾收集器运行,说明了什么是安全点(safe point)以及CLR怎样劫持线程以进行垃圾回收。最后讲了垃圾收集器的工作模式,CLR对待大对象的处理方法,以及怎样监视垃圾收集器的工作。阅读全文