04 2011 档案

摘要:综述 SOS是一个非托管调试器扩展,用来帮助对CLR托管代码进行分析与调试。可以通过加载到非托管调试器WinDbg、NTSD或者VisualStudio调试器中使用。不同的CLR版本都自带有对应的SOS,在对应的版本目录下。 .NET框架为开发人员隐藏了底层系统的复杂性,这虽然极大地提升软件开发效率,但也同时增加了对底层的技术细节了解的难度,使得一些问题调试起来更为困难,比如内存溢出或者死锁问题。 通过SOS提供的命令,可以直观的了解CLR托管代码的底层结构,更可以方便的进行调试,并诊断一些具体问题(如GC、锁)。 将调试器附加到目标进程后,就可以通过.loadby sos mscorw... 阅读全文
posted @ 2011-04-28 17:47 reni 阅读(1373) 评论(1) 推荐(0)
摘要:查看线程和同步块1.查看托管线程 Threads命令显示进程中的所有托管线程及统计信息。-special选项显示由 CLR 创建的所有特殊线程,包括GC线程、调试器帮助程序线程、终结器线程、AppDomain卸载线程和线程池计时器线程。Threads!Threads -specialThreadCount: 2UnstartedThread: 0BackgroundThread: 1PendingThread: 0DeadThread: 0Hosted Runtime: no PreEmptive GC Alloc Lock ID OSID ThreadOBJ State GC Context 阅读全文
posted @ 2011-04-28 17:47 reni 阅读(895) 评论(1) 推荐(0)
摘要:综述 MSSQL2005引入了XML的数据类型,相应的T-SQL也提供了大量的语句和函数用于支持对XML的操作,以及维护关系型数据和XML之间的转换。对XML查询 T-SQL提供了以下几个针对XML类型的查询函数: query(XQuery):利用Xquery查询符合条件的元素集合。 value(XQuery,Type):利用Xquery查询具体元素的值,Type定义值的类型。 exist(XQuery):利用Xquery查询是否存在符合条件的元素。 nodes(XQuery):利用Xquery获得一个结果集。 下面是详细的示例:查询XML 1DECLARE @Doc xml 2 SET @D 阅读全文
posted @ 2011-04-15 16:11 reni 阅读(2935) 评论(1) 推荐(2)
摘要:综述 WF运行时(WorkflowRuntime)是一个服务的容器,它依赖一组公共的核心服务来管理WF实例,但WF运行时设计得非常轻量级,它的许多功能都由宿主程序定义。WF为这些服务提供了现成的实现,不过宿主程序也可以自行开发以满足特定的需求,将服务加入到WF运行时中。 下面是WF提供的运行时服务的实现。所有服务都继承自基类WorkflowRuntimeService。对于必要的运行时服务,如果宿主程序没有选择其他实现,WF将加载默认的服务。非必要的运行时服务,如果宿主程序没有选择其他实现,WF将不加载任何实现。 服务名默认加载其他实现必要WorkflowLoaderServiceDefau. 阅读全文
posted @ 2011-04-08 17:51 reni 阅读(1383) 评论(0) 推荐(1)
摘要:AppDomain Windows使用进程边界来隔离在同一台计算机上运行的应用程序。每一个应用程序被加载到单独的进程中,在目标进程中,不能通过任何有意义的方式使用从一个进程传递到另一个进程的内存指针,也不能在两个进程间进行直接调用,要使用代理间接调用。 CLR使用应用程序域(AppDomain)进行程序间的隔离,可以在单个进程中运行多个应用程序域,但隔离级别与进程相当,而且不会造成进程间调用或进程间切换等方面的额外开销。简单来讲,它可以提供与进程边界相当的隔离级别,而其性能开销则要低得多。 隔离应用程序对于应用程序安全十分重要。当一个应用程序中出现的错误不会影响其他应用程序。因为应用程序域可以 阅读全文
posted @ 2011-04-06 12:55 reni 阅读(1971) 评论(1) 推荐(1)
摘要:综述 序列化是将对象转换成流的过程,与之相反,反序列化将流转换为对象。利用序列化技术可以将对象序列化到磁盘、内存或者网络,在进程间、应用程序域间或者计算机之间传递对象。 .net框架提供了二进制格式和XML格式(纯XML或SOAP)的序列化,如果需要,也可以根据Iformatter接口实现自己需要的格式。利用Iformatter接口的Serialize方法和Deserialize方法可以将对象序列化/反序列化。 有三种方式可以声明序列化的方式。下面分别比较。 先准备一个待序列化的类User。 User类 1 public class User 2 { 3 public string Name 阅读全文
posted @ 2011-04-01 09:02 reni 阅读(880) 评论(0) 推荐(1)