06 2011 档案

CLR via C#--命名空间和程序集
摘要:命名空间的定义:对相关类型进行逻辑性分组,方便程序员使用命名空间来定位一个类型 。比如System.Text命名空间定义了一组执行字符串处理的类型。程序集的定义:程序集是一个或多个类型定义文件及资源文件的集合。命名空间和程序集的关系:1.同一个命名空间的各个类型可能是在不同的程序集中。2.在一个程序集中,也可能包含不同的命名空间。 阅读全文

posted @ 2011-06-15 15:11 萧然 阅读(228) 评论(0) 推荐(0)

CLR via c#--类型转换
摘要:CLR最重要的特性之一就是类型安全。CLR想要知道一个对象是什么类型,通过GetType方法可以得到,且该方法是非虚的。类型转化的原则:1.CLR 允许将一个对象转化为它的实际类型或者它的任何基类型。2.将一个对象转化为它的某个派生类时,C#要求只能进行显示转化。关于Is和as:Object obj=new Object();is的使用方法:If(obj is Employee){ Employee em=(Employee)obj;}is的两次对象类型的检查:1.is首先核查obj是否兼容于Employee类型。2.在执行Employee em=(Employee)obj;时,CLR会再次核 阅读全文

posted @ 2011-06-15 14:21 萧然 阅读(231) 评论(0) 推荐(0)

CLR via c#--类型基础
摘要:一:所有的类型都从System.Object派生System.Object的公共方法:1.Equals如果两个对象具有相同的值,则返回true.但是如果比较的两个对象指向不同的引用,则返回false.实质上,它表示的是同一性,而非相等性。2.GetHashCode返回对象值的一个哈希码3.Tostring默认返回类型的完整名称(this.GetType.FullName)4.GetTypeSystem.Object受保护类型:1.MerberwiseClone这个非虚方法创建类型的一个新实例,并于新对象的实例字段设与this对象的实例完全一致。返回的是新对象的一个引用。2.Finalize在对 阅读全文

posted @ 2011-06-15 08:56 萧然 阅读(237) 评论(0) 推荐(1)

CLR via c#--共享程序集和强命名程序集
摘要:CLR支持两种程序集:弱命名程序集和强命名程序集两种程序集结构上完全相同,唯一的区别在于强命名程序集用发布者的公钥/私钥对进行了签名,它唯一性的标识了程序集的发布者。私有部署的程序集:是指部署到应用程序基目录或者子目录的程序集。弱命名程序集只能以私有的方式部署公有部署的程序集:是指部署到一些已知位置的程序集,因为CLR在查找程序集的时候,会检查这些已知的位置。一个强命名程序集的4个重要的attributes:1.一个文件名2.一个版本号3.一个语言文化标识4.一个公钥创建强命名程序集的工具SN.exe运行命令:SN -k MyCompany.snk全局程序集缓存(GAC):如果一个程序集要由多 阅读全文

posted @ 2011-06-14 08:37 萧然 阅读(573) 评论(0) 推荐(0)

CLR via c#读书笔记--垃圾回收
摘要:访问一个资源的步骤:1.调用IL指令newobj,为资源分配内存2.初始化内存,设置资源的初始化状态。类型的实例构造器负责设置初始化状态。3.摧毁资源的状态进行清理4.释放内存托管堆:进程在初始化时,CLR要保留一块连续的地址空间,这块空间最初并没有对应的物理存储空间。这个地址空间就是托管堆。垃圾回收:第一步:标记阶段标记所有的根沿着线程栈,如果发现一个根引用了一个对象,就在这个对象的同步块索引字段上开启第一位。--对象就这样被标记了第二步:压缩阶段已标记的对象是认为是可以通过应用程序到达的对象,未标记的对象是不可到达的。不可到达的对象被认为是垃圾。垃圾回收只在第0代满的时候发生。非托管资源: 阅读全文

posted @ 2011-06-13 11:28 萧然 阅读(357) 评论(0) 推荐(0)

面向对象的设计原则
摘要:1.单一职责原则:一个类应该有且仅有一个引起变化的因素2.开放封闭原则:对扩展开发,对修改封闭1)通过扩展已有的软件系统,可以提供新的行为,以满足对软件的新需求,使变化中的软件系统有一定的适应性和灵活性2)已有的软件模块,特别是最重要的抽象模块不能修改,这就使变化中的软件系统有一定的稳定性和延续性3)这样的系统同时满足了可复用性和可维护性3.替换原则:子类可以替换它的基类4.依赖倒置原则高层模块不应该依赖于底层模块,二者都应该依赖于抽象。抽象不应该依赖于细节,细节应该依赖与抽象5.接口隔离原则:一个类对于另一个类的依赖应该建立最小的接口上.不应该强迫客户依赖与它们不用的方法。接口属于客户,不属 阅读全文

posted @ 2011-06-13 11:25 萧然 阅读(333) 评论(0) 推荐(0)

企业架构模式笔记--第九章(领域逻辑模式)
摘要:一:事务脚本使用过程来组织业务逻辑,每个过程处理来自表现层的单个请求。在客户系统和服务器系统之间的每次交互都包含一定的逻辑。在某些情况下,它可能如显示数据库中的信息一般的简单,也有可能设计计算,验证的步骤。事务脚本将所有的逻辑组成单个过程,在过程中直接调用数据库,或者只通过一个简单的数据库封装器。运行机制:事务脚本组织成类的两种方式:1.将数个事务脚本放在一个类中,每个类围绕一个主题将相关的事务脚本组织在一起。2.每个事务脚本对应一个类。这样就需要用Command模式。这种情况下应该定义一个所有命令的父类,在父类中声明事务脚本逻辑适合的方法。使用时机:适合用于只有少量逻辑的应用程序。(弄了半天 阅读全文

posted @ 2011-06-13 08:42 萧然 阅读(594) 评论(0) 推荐(0)

企业架构模式笔记--第四章(Web表现层)
摘要:web服务器的工作是:解释请求方的URL并调用服务器端应用程序来处理这些请求。构建Web服务器上应用程序的方法有两种:1.使用脚本适合于解释请求信息2.使用服务器页面适合格式化应答消息。这样的老观点也衍生出了模型-视图-控制器模式的用户界面中。控制器:处理请求消息模型:负责领域逻辑视图:基于模型创建应答消息过程:一条消息进入输入控制器,输入控制器从中获取消息。随后把业务逻辑传递给一个合适的业务模型。然后这个模型对象和数据源交互,并且按照请求消息的要求进行处理,应答并收集消息。做完这些后,它再把控制权交给输入控制器,输入控制器查看结果并且决定采用什么样的视图来显示应答消息。这通常是一个把数据放在 阅读全文

posted @ 2011-06-10 16:49 萧然 阅读(538) 评论(0) 推荐(0)

企业应用架构模式笔记--第三章(映射到关系数据库)
摘要:数据源层的作用:与应用需要的基础设施的不同部分进行通信。问题主要是和数据库的会话。3.1架构模式架构模式主要解决的问题是驱动领域逻辑访问数据库的方式。此时的选择对于设计影响深远而且难以重构。模式一:将SQL访问从领域逻辑中分离出来为了使用适合程序开发语言的机制来访问数据更方便,很多技术把SQL语句嵌入到程序设计中。但是当数据库管理员(DBA)也想得到访问数据库SQL语句,这样DBA才能理解怎样是最好的调整和组织索引。而解决这样的问题的方法就是把SQL访问从领域逻辑中分离出来。为了达到这样的实现,一种解决的方法是:以数据库中的表结构为基础,这样每个表对应与一个类,这些类为数据表建立一个入口。应用 阅读全文

posted @ 2011-06-10 08:13 萧然 阅读(660) 评论(0) 推荐(0)

企业架构应用模式笔记--第二章(组织领域逻辑)
摘要:领域逻辑的组织分为三块:事务脚本、领域模型、表模块一.事务脚本--面向过程的编程过程描述:从表现层获得输入、进行效验、将数据存储到数据库中以及调用其他系统的操作等。然后该过程将更多的数据返回给表现层。基本的组织方式是让每一个过程应对客户的可能做的一个动作。而我们可以把这样的模式想象成一个动作或者业务事务的脚本。事务脚本的优点:1.大多数开发者都能理解的简单过程2.能够与一个使用行数据入口或者表数据入口的简单数据源层很好的合作这一点感觉应该是数据层以datarow或者dataset作为数据层的接口或者参数吧3.设定事务边界的方法显而易见:一个事务始于脚本的打开,中午脚本的关闭。事务脚本的缺点:1 阅读全文

posted @ 2011-06-09 23:36 萧然 阅读(593) 评论(0) 推荐(0)

企业架构应用模式笔记--第一章(分层)
摘要:在分解复杂的软件系统时,软件设计者用得最多的技术之一就是分层。将系统分层的好处:1.在无需过多了解其他层次的情况下,可以将某一层作为一个有机整体来理解。如:我们可以在无需了解以太网的工作细节,可以照样在TCP上构建FTP服务。2.可以替换某层的具体实现,只要前后提供的服务相同即可。(不是很理解是什么意思)我的理解就是:一个服务层在很多地方都被调用,而服务层已经封装了逻辑层的具体实现。那么当逻辑层的内部逻辑改变的时候,在调用的地方不用去关心起内部逻辑的改变。3.可以将层次间的依赖性降到最低。当分层来考虑系统的时候,每一层依托在其下层之上。上层使用了下层定义的服务,而下层对上层一无所知。而每一层对 阅读全文

posted @ 2011-06-09 16:30 萧然 阅读(826) 评论(0) 推荐(0)

企业应用架构模式笔记(引言)
摘要:企业应用:1.企业应用一般都涉及持久化数据。2.企业应用一般都涉及大量数据。3.一般都涉及很多人同时访问数据。4.还涉及大量操作数据的用户界面屏幕。要学会通过简化,把一个大型项目简化成小型项目。因为如果是一个小型系统的失败,可能对于一个大型系统来说,这种失败就不会显得那么起眼了。这样的思想是因为没有对小型项目的积累作用足够的重视。企业应用的种类:关于可伸缩性:1.响应时间:是一个系统完成一次外部请求处理所需的时间。可能是用户的一次交互行为,也可能是服务器API的调用。2.响应性:系统相应请求的速度有多快。最好可以在响应处理完之前给用户一些信息表明系统已经接到请求,则响应性会更好一些。3.等待时 阅读全文

posted @ 2011-06-09 15:04 萧然 阅读(774) 评论(0) 推荐(0)