Programming .NET Components
Yoxi
这个作者很懒,什么都没留下…
展开
-
Programming .NET Components 2nd 学习笔记(一)
3.4接口成员的理想数量在3~5,6~9个也可以接受。假如一个接口拥有12个或者更多的方法,就需要将它们分解到不同的接口中,或者放到一个接口层次中。接口应该拥有更多的方法而不是属性,方法和属性的比例至少是2:1。不过有一个例外,接口只定义了属性而没有方法。尽可能避免在接口中定义事件,让对象去决定它是否需要一个事件成员变量。原创 2012-07-07 21:54:56 · 604 阅读 · 0 评论 -
Programming .NET Components 2nd 学习笔记(十二)
7.2. Revisiting Delegates正如在第6章解释到,对于程序员,委托不过是一个类型安全的方法引用。委托被用来将客户端调用某个对象(或者类的静态方法)方法的动作委托到委托类上。例如,考虑一个Calculator类:public class Calculator{ public int Add(int argument1,int argument2) {原创 2012-09-02 15:35:10 · 648 阅读 · 0 评论 -
Programming .NET Components 2nd 学习笔记(十一)
7.1. Requirements for an Asynchronous Mechanism要充分利用.NET异步调用的各种选项,首先需要理解现在的面向构件异步调用支持的普遍需求。其中包括下列内容:· 同一段构件代码应该可以使用在同步和异步调用中。这能使构件开发人员专注于业务逻辑并便于使用标准机制。· 第一个必要的需求是由客户端决定是同步还是异步调用构原创 2012-09-02 15:34:33 · 627 阅读 · 0 评论 -
Programming .NET Components 2nd 学习笔记(九)
6.2. Working with .NET Events本节将讨论.NET事件设计准则及开发实践,促进发布服务器和订阅服务器之间的松散耦合,提高可用性,符合现有的约定,并从.NET丰富的事件支持框架获益。另一个事件相关的技术(异步发布事件)将在第7章讨论。 6.2.1. Defining Delegate Signatures虽然在技术上一个委托声明可以定义任何方法签名,实际上,原创 2012-07-22 16:57:26 · 750 阅读 · 0 评论 -
Programming .NET Components 2nd 学习笔记(五)
4.4. Object Finalization.NET对象在变成垃圾时不会告诉你;它们仅仅在托管堆压缩时被重写。这提出了一个问题:假如这个对象使用了昂贵的资源(文件、连接、通信端口、数据结构、同步锁等等),它怎么处理并释放这些资源?为了解决这个问题,.NET提供了对象终止化。假如一个对象有特殊的清除工作,它应该实现Finalize()方法,定义如下:protected void Fina原创 2012-07-09 20:33:00 · 573 阅读 · 0 评论 -
Programming .NET Components 2nd 学习笔记(八)
6.1.Delegate-Based Events在描述.NET事件支持前,这里有一些术语。发布事件的对象称作源(source)或发布服务器(publisher),任何对该事件有兴趣的部分称作事件接收器(sink)或订阅服务器(subscribers)。事件通知的形式是发布者调用订阅者服务器的方法。发布事件也称作触发事件。.NET通过提供特殊的CLR类型和基类实现来提供对事件的本地支持。.NE原创 2012-07-16 07:57:18 · 978 阅读 · 0 评论 -
Programming .NET Components 2nd 学习笔记(七)
Chapter 6.Events在一个面向组件的程序中,对象通过让客户端调用方法和设置属性向客户端提供服务。但是如果一个客户端(或者多个)想要在该对象触发事件时得到通知怎么办?这种情况非常普遍,几乎每个应用程序都依赖于事件订阅与发布机制。 一个发布的对象可以触发多个客户端订阅的事件: 因为事件跟方法调用没什么区别,触发事件也没特别之处,因此我选择不将事件支持作为面向组件编程原创 2012-07-12 23:14:40 · 783 阅读 · 0 评论 -
Programming .NET Components 2nd 学习笔记(四)
4.3. .NET Garbage Collection在.NET编程中,离开声明范围并不会销毁对象,但是不像COM,.NET不对对象使用引用计数。与之替代的,.NET有一个复杂的垃圾回收机制,当它发现一个对象不再被使用时就会销毁该对象。为了达到该目的,.NET必须保持对代码中对象可访问路径的追踪。抽象来说,当JIT编译器编译IL代码时,它将更新一个包含原始应用程序起始点的列表,例如静态变量和原创 2012-07-08 22:17:42 · 1076 阅读 · 0 评论 -
Programming .NET Components 2nd 学习笔记(六)
4.5. Deterministic Finalization.NET试图通过减轻程序员显示释放对象已占用内存的工作来使对象生命周期的管理简单化。然而,简化对象生命周期会带来在系统可伸缩性和吞吐量上的潜在惩罚。如果对象持有昂贵的资源,例如文件或数据库连接,这些资源只会在调用Finalize()时被释放(或者C#析构函数)。Finalize()方法(或者C#析构函数)会在一个不确定的时候被调用,原创 2012-07-11 23:27:22 · 619 阅读 · 0 评论 -
Programming .NET Components 2nd 学习笔记(三)
4.2. Traditional Memory De-allocation Schemas.NET在释放内存和销毁对象上不同于C++、COM。在C++中,一个基于栈的对象离开声明范围时将会销毁:{//beginning of a C++ scope MyClass object; //use object;}//end of scope, C++ calls t原创 2012-07-08 11:37:52 · 779 阅读 · 0 评论 -
Programming .NET Components 2nd 学习笔记(二)
4.1. The Managed Heap.NET构件并不直接得到操作系统所分配内存。作为代替,在每个.NET托管的物理进程中,.NET runtime 预分配了一个特殊的堆,叫做托管堆。这个堆和传统的操作系统的堆用法一样:给对象分配内存和数据存储。每当.NET开发者对一个类使用new操作符时,例如:MyClass obj = new MyClass( ); .NET就从托管原创 2012-07-08 11:12:23 · 683 阅读 · 0 评论 -
Programming .NET Components 2nd 学习笔记(十)
Chapter 7. Asynchronous Calls当对象的方法被调用时,常常会阻塞客户端,然后在方法执行完毕后返回控制权给客户端。然而,在少数情况下你想要异步调用方法;例如,想要立刻返回控制权给客户端,对象在后台执行方法调用并设法使客户端知道方法执行完毕。这种执行模式叫做异步方法调用,这种行为称作异步调用。异步调用能提高可用性,吞吐量和性能,并扩展你的程序。在过去,开发人员通常在构原创 2012-09-02 15:33:49 · 673 阅读 · 0 评论