08 2010 档案

摘要:本文开始总结.NET下的多种多线程机制,不断更新中,往各位补充。Invoke机制最近在实验一个webservice时候,想到了要用异步机制,于是好好研究了一下多线程和Invoke机制,这里写点小小的心得,如有不妥,请各位指教。我们往往会遇到这样的需求:有一个十分耗时间的工作(比如一个WebSerive的请求),我们不希望它阻塞现有的UI线程(因为这样会导致界面假死),而是希望它在另外一个线程里... 阅读全文
posted @ 2010-08-31 14:09 lmule 阅读(1152) 评论(1) 推荐(0)
摘要:作为PHP程序员,特别是新手,对于互联网的险恶总是知道的太少,对于外部的入侵有很多时候是素手无策的,他们根本不知道黑客是如何入侵的、提交入侵、上传漏洞、sql 注入、跨脚本攻击等等。作为最基本的防范你需要注意你的外部提交,做好第一面安全机制处理防火墙。规则 1:绝不要信任外部数据或输入关于Web应用程序安全性,必须认识到的第一件事是不应该信任外部数据。外部数据(outside data) 包括不是... 阅读全文
posted @ 2010-08-31 00:25 lmule 阅读(321) 评论(0) 推荐(0)
摘要:原文地址:http://www.ibm.com/developerworks/cn/opensource/os-php-designptrns/级别: 中级Jack D Herrington (jherr@pobox.com), 高级软件工程师, Leverage Software Inc.2006 年 10 月 19 日设计模式只是为 Java™ 架构师准备的 —&mda... 阅读全文
posted @ 2010-08-31 00:23 lmule 阅读(499) 评论(0) 推荐(0)
摘要:前端的发展如此之迅猛,一不留神,大侠你可能就会被远远地甩在后面了。如果你不想被HTML5的改变/更新搅得不知所措的话,可以把本文的内容作为必须了解的热身课程。一、新的Doctype//zxx:”doctype”中文意思指“文档类型”仍在使用麻烦的,不可能记得住的XHTML文档类型?[代码]如果是,为什么还在用呢?使用新的HTML5文档类型代替吧。你会... 阅读全文
posted @ 2010-08-31 00:20 lmule 阅读(1552) 评论(0) 推荐(1)
摘要:Quartz.NET是一个开源的作业调度框架,是OpenSymphony 的 Quartz API的.NET移植,它用C#写成,可用于winform和asp.net应用中。它提供了巨大的灵活性而不牺牲简单性。你能够用它来为执行一个作业而创建简单的或复杂的调度。它有很多特征,如:数据库支持,集群,插件,支持cron-like表达式等等。你曾经需要应用执行一个任务吗?这个任务每天或每周星期二晚上11:... 阅读全文
posted @ 2010-08-28 13:24 lmule 阅读(12762) 评论(3) 推荐(2)
摘要:SQL Server 2008数据库复制是通过发布/订阅的机制进行多台服务器之间的数据同步,我们把它用于数据库的同步备份。这里的同步备份指的是备份服务器与主服务器进行实时数据同步,正常情况下只使用主数据库服务器,备份服务器只在主服务器出现故障时投入使用。它是一种优于文件备份的数据库备份解决方案。在选择数据库同步备份解决方案时,我们评估了两种方式:SQL Server 2008的数据库镜像和SQL ... 阅读全文
posted @ 2010-08-27 00:23 lmule 阅读(418) 评论(0) 推荐(0)
摘要:算法分析与设计在线视频教程(附下载)[下载注意]要复制地址而不是点击链接,复制时要包括前面的 mms://,否则下载不了. 感觉不能下载,是不是我网速有问题?还是联接已经过期?算法分析与设计 第一讲 算法引论mms://www.scopen.net/scddip/sffxysj/sffxysj1/Openedu.asf算法分析与设计 第二讲 递归于分治策略[hide]mms://www.scope... 阅读全文
posted @ 2010-08-26 18:07 lmule 阅读(2821) 评论(0) 推荐(0)
摘要:本人是Javascript菜鸟,下面是前几天学习Javascript的旅程心得,希望对和我一样的入门者有点用,也希望高手批评指正。以问题开始:[代码]上面两行代码会创建几个对象(object)?要回答这个问题,先明确一下Javascript里object的概念。Objects在Javascript里,几乎一切都是object(Arrays、Functions、Numbers、Objects&hel... 阅读全文
posted @ 2010-08-26 11:41 lmule 阅读(457) 评论(0) 推荐(0)
摘要:(接上)先看张对老手不新鲜但对菜鸟很有趣的图:    What the heck is that? 简直是luan lun。new抛开上面的图,先看看上篇文章留下的第二个问题,让我们在构造器的函数体内加点东西,看会发生什么。[代码]会得到如下结果:    为什么用new关键字构造出来的a,会获得p这个属性?new A()这行代码做了什么事情?根据上篇文章中Function的创建过程第4步,A这个对... 阅读全文
posted @ 2010-08-26 11:41 lmule 阅读(235) 评论(0) 推荐(0)
摘要:多线程命名管道通信的设计:命名管道是进程间通信的一种方式,管道分为2种:匿名管道(Anonymous Pipe)和命名管道(Named Pipe)。这里主要介绍多线程命名管道。服务端设计如下图:客户端设计如下图:服务端采用阻塞模式等待客户端的连接,客户端采用多个线程对管道进行数据读写。因客户端采用多个线程对管道进行读写,故一个线程读取的数据可能并不是此线程写入数据后,服务端读取此线程刚写入的数据后... 阅读全文
posted @ 2010-08-22 09:23 lmule 阅读(1430) 评论(0) 推荐(0)
摘要:int testFunc(string str) { MessageBox.Show(str); return 1; } void test() { this.lblMessage.Text = "111"; } private void Form1_Load(object sender, EventArgs e) { //ThreadPool.QueueUserWorkItem(new Wait... 阅读全文
posted @ 2010-08-21 16:30 lmule 阅读(2781) 评论(0) 推荐(0)
摘要:原文地址:[学习笔记]c#中的委托、事件、Func、Predicate、Observer设计模式以及其他参考资料:1. 简单谈谈事件与委托2. C#中的委托和事件(上)3. C#中的委托和事件(下)4. delegate,event, lambda,Func,Action以及Predicate5. 事件与委 托有别, delegate 与 Delegate 相异6. C# events vs. d... 阅读全文
posted @ 2010-08-21 16:23 lmule 阅读(656) 评论(0) 推荐(0)
摘要:delegate 委托可以理解为c++ 语言中的函数指针,标示了方法调用的回调函数的规范。强类型,便于编译时检查是它的最大优点,从此可以和void * 说再见了。event 事件用以delegate委托声明事件,标示响应该事件的回调函数必须符合其声明委托的定义lambda 表达式在.net世界中表现为匿名委托,之前又要提到匿名方法(函数)public class Test{public void ... 阅读全文
posted @ 2010-08-21 16:07 lmule 阅读(387) 评论(0) 推荐(0)
摘要:本文将对微软.Net开发中的多线程编程进行一个简单的总结,相信对大家会有所帮助的。下面就具体来看看:静河网页技术$qbD1D+q8D`O  不需要传递参数,也不需要返回参数静河网页技术D:]+|$f,B{5dht_8a2p0  我们知道启动一个线程最直观的办法是使用Thread类,具体步骤如下:静河网页技术;DTR1^]@+TpThreadStart threadStar... 阅读全文
posted @ 2010-08-21 15:05 lmule 阅读(732) 评论(2) 推荐(0)
摘要:一.多线程的概念   Windows是一个多任务的系统,如果你使用的是windows 2000及其以上版本,你可以通过任务管理器查看当前系统运行的程序和进程。什么是进程呢?当一个程序开始运行时,它就是一个进程,进程所指包括运行中的程序和程序所使用到的内存和系统资源。而一个进程又是由多个线程所组成的,线程是程序中的一个执行流,每个线程都有自己的专有寄存器(栈指针、程序计数器等),但代码区是共享的,即... 阅读全文
posted @ 2010-08-21 10:39 lmule 阅读(1171) 评论(0) 推荐(0)
摘要:什么是多线程?在计算机编程中,一个基本的概念就是同时对多个任务加以控制。许多程序设计问题都要求程序能够停下手头的工作,改为处理其他一些问题,再返回主进程。可以通过多种途径达到这个目的。最开始的时候,那些掌握机器低级语言的程序员编写一些“中断服务例程”,主进程的暂停是通过硬件级的中断实现的。尽管这是一种有用的方法,但编出的程序很难移植,由此造成了另一类的代价高昂问题。中断对那... 阅读全文
posted @ 2010-08-20 22:29 lmule 阅读(456) 评论(0) 推荐(0)
摘要:介绍:ASP.NET中登录后,JSP可以用ASP.Net中的Session的值这个话题刚开始,宝宝的思路是ASP.NET中序列化Session以二进制数据保存到数据库,然后由JSP读取数据库中的二进制数据反序列化成Session对象,再强制转化成的Session对象,在JAVA端转换时,出现了错误,找遍网上的资料也没能解决,故采用一种替换的方式.替换的方式的思路:登录的ASPX文件中,在登录成功后... 阅读全文
posted @ 2010-08-20 12:09 lmule 阅读(632) 评论(0) 推荐(0)
摘要:C#算法实现了二叉树的定义,怎么构造一颗已知的二叉树,用几种常规的算法(先序,中序,后序,层次)进行C#二叉树遍历。希望能给有需要人带来帮助,也希望能得到大家的指点。有关C#数据结构的书在书店里找到,网上也是极少,如果你有好的学习资源别忘了告诉我。先谢了。数据结构对一个程序员来说,现在是太重要了,数据结构学得好的人,逻辑思维一定很强,在程序设计的时候,就不会觉得太费劲了。而且是在设计多层应用程序的... 阅读全文
posted @ 2010-08-18 21:12 lmule 阅读(647) 评论(0) 推荐(0)
摘要:树型论坛(即阶梯式论坛)的实现算法,是一直被讨论的问题。总结起来,一般无非是两种: 第一是递归。这种方式最简单,思路最清楚,但是效率也最低,特别是进行页定位的时候。由于每进行一次递归调用,就必须执行一条数据库查询,使它在大量并发请求时的负载成为灾难性的。因此这种算法一般不实用。 第二是增加一个排序字段,思路是使用一个特殊设计的字段,例如排序串或者中值排序基数,来实现贴子的插入,在显示的时候,只需要... 阅读全文
posted @ 2010-08-18 20:02 lmule 阅读(1132) 评论(0) 推荐(0)
摘要:我在博客堂上也看到不少有关并发控制的文章,我一直是推荐使用时间戳来解决的。 比如我们在SQL Server中的表中定义一个字段为timestamp类型的字段ts,这个字段的值不需要我们进行控制的。 在Insert与Update时,数据库会自己进行ts值的更新,因此我们只要在Update时使用: Update xxx where key=@key and ts=@ts 就可以了,根本不用考虑ts里的... 阅读全文
posted @ 2010-08-18 19:56 lmule 阅读(26375) 评论(2) 推荐(5)
摘要:进程和线程的区别收藏 简而言之,一个程序至少有一个进程,一个进程至少有一个线程. 线程的划分尺度小于进程,使得多线程程序的并发性高。另外,进程在执行过程中拥有独立的内存单元,而多个线程共享内存,从而极大地提高了程序的运行效率。线程在执行过程中与进程还是有区别的。每个独立的线程有一个程序运行的入口、顺序执行序列和程序的出口。但是线程不能够独立执行,必须依存在应用程序中,由应用程序提供多个线程执行控制... 阅读全文
posted @ 2010-08-18 19:23 lmule 阅读(313048) 评论(15) 推荐(35)
摘要:设计缓存的目的  缓存模块可以用来实现下列功能:  提供了一系列的API  它使得开发者不需要学习很多内部的工作机制,就可以将常用的缓存功能加入应用  使用企业库的配置工具很容易配置  性能高效  线程安全,内部的代码考虑到了在多个线程调用,没有非预期的内部交互。  使用后端存储,使得发生以外也可以保持数据的完整无缺。  保证了内存中的数据和后端存储保持数据同步。  本节讲述一些缓存模块设计的亮点... 阅读全文
posted @ 2010-08-17 14:00 lmule 阅读(566) 评论(0) 推荐(0)
摘要:本节介绍开发者在使用缓存的时候,常用的方法。每个方法在实际开发中都可以找到对应的用处,会有代码示例。分两个部分介绍,第一个部分包括下面的一些用法:  向缓存添加数据,Add方法,如何向缓存中添加数据,设置过期,设置优先级。  从缓存中删除数据,Remove方法  从缓存中获取数据,GetData方法  清空缓存,Flush方法  第二部分介绍缓存的加载。  1.1向缓存中添加数据  需要缓存的数据... 阅读全文
posted @ 2010-08-17 10:34 lmule 阅读(450) 评论(0) 推荐(0)
摘要:服务器场中的缓存使用  单一的CacheManager不能跨应用程序域共享。服务端应用大多部署在多台服务器上,每台服务器的内存中都有一份缓存的数据。对于一台机器上面有多个进程,也是一样的,包括每个运行在自己的进程中的企业组件,每个进程都有一份缓存的数据。  不同的应用不能使用同一个数据库作为后端存储,在同一个数据库作为不同的应用的后端存储,可能会导致不可预料的问题,不推荐这么做。  当在多个进程中... 阅读全文
posted @ 2010-08-17 00:17 lmule 阅读(318) 评论(0) 推荐(0)
摘要:配置缓存模块使用数据库作为后端存储1) 在CacheManager节点上点击右键,选择新建【Database Cache Storage】2)在配置中自动加入数据访问模块的配置信息3)点击Data Cache Storage节点,右侧的DatabaseInstance属性显示的是数据库连接字符串的名称,它和数据访问配置中的一个配置关联的,你可以通过输入或者下来来选择一个数据访问配置。可以重新命名N... 阅读全文
posted @ 2010-08-17 00:07 lmule 阅读(511) 评论(0) 推荐(0)
摘要:本帖提供两种做法,可避免在 SQL Server 事务锁定时产生的不正常或长时间阻塞,让用户和程序也无限期等待,甚至引起 connection pooling 连接数超过容量。 所谓的「阻塞」,是指当一个数据库会话中的事务,正在锁定其他会话事务想要读取或修改的资源,造成这些会话发出的请求进入等待的状态。SQL Server 默认会让被阻塞的请求无限期地一直等待,直到原来的事务释放相关的锁,或直到它... 阅读全文
posted @ 2010-08-17 00:03 lmule 阅读(4146) 评论(0) 推荐(1)
摘要:答案是:用BT,也就是你我应该都很熟悉的BitTorrent。  对于网站经营者、创业者来说,扩展性的问题是在网站流量成长过程中势必会面对的问题,如何建立一个具有扩展性的架构(scalable architecture)便是在规划网站事业过程中不可或缺的专业知识。  如果服务本身的功能性符合用户需求,却因为架构、程序性能、数据库性能的问题导致服务增长出现瓶颈时,如何评估、分析网站性能瓶颈?厘清问题... 阅读全文
posted @ 2010-08-16 21:43 lmule 阅读(503) 评论(0) 推荐(0)
摘要:HTTP 压缩是在Web服务器和浏览器间传输压缩文本内容的方法。HTTP压缩采用通用的压缩算法如gzip等压缩HTML、JavaScript或CSS文件。压缩的最大好处就是降低了网络传输的数据量,从而提高客户端浏览器的访问速度。当然,同时也会增加一点点服务器的负担。Gzip是比较常见的一种HTTP 压缩算法。  默认的IIS中是有GZIP.dll组件的,我们只要开启即可.操作步骤如下:  1.开启... 阅读全文
posted @ 2010-08-16 21:41 lmule 阅读(441) 评论(0) 推荐(0)
摘要:本节讲述如何在开发应用的过程中使用缓存模块。包括配置缓存模块,在解决方案中引入缓存模块,选择后端存储。   配置缓存模块  添加应用代码  选择后端存储  所有的模块都包括程序集和一份源代码。如果你想使用源代码,在使用QuickStart和配置工具之前需要编译源代码。  1.添加配置信息  如果你是用数据访问模块作为后端存储的访问手段,在配置缓存模块之前需要先配置数据访问模块。  打开企业库安装目... 阅读全文
posted @ 2010-08-16 17:58 lmule 阅读(260) 评论(0) 推荐(0)
摘要:7.1 设计模式概述重复遇到的典型问题,描述这些共同问题 和 解决这些问题的方案 就形成了所谓的 模式。7.1.1 设计模式的历史模式分为几个部分:特定的情景(Context),指模式在 何种情况下发生作用;动机(System of Force),指问题或预期的目标;解决方案(Solution),平衡各动机 或 解决所阐述问题的 构造或配置。每个模式描述了一个在某种特定情境下不断重复发生的问题,以... 阅读全文
posted @ 2010-08-16 17:24 lmule 阅读(326) 评论(0) 推荐(0)
摘要:8.1 XML 概述可扩展标记语言(xml)是标准通用标记语言(SGML)的一个子集;可以用XML来开发一种标记语言,它的元素和属性多是为专门行业和产业而定义的。支持统一字符编码 UCS,使得 XML 成为了国际标准,XML 和 HTML 都支持 样式表(style sheet)。8.1.2 标签语法XML 元素的结构与 HTML基本相同,使用尖括号来界定标签,但二者相同点也就仅此而已。与 HTM... 阅读全文
posted @ 2010-08-16 17:24 lmule 阅读(178) 评论(0) 推荐(0)
摘要:6.3 基于 UML 的软件开发过程6.3.1 开发过程概述UML 是独立于软件开发过程的,能够在几乎任何一种软件开发过程中使用。迭代的渐进式软件开发过程包含四个阶段:初启、细化、构件、部署。1、初启项目的发起人 确定项目的 主要目标 和 范围,初步的可行性分析 和 经济效益分析。2、细化细化阶段的开始 标志着 项目的正式确立。1.初步的需求分析,比较重要、比较有风险的用例。2.初步的高层设计,用... 阅读全文
posted @ 2010-08-16 17:23 lmule 阅读(244) 评论(0) 推荐(0)
摘要:UML 建模与架构文档化方法种类的膨胀,极大地妨碍了用户的使用和交流。UML通过统一的表示法,使不同知识背景的 领域专家、系统分析、开发人员、用户 可以方便地交流。6.1.2 UML 体系结构演变UML 是用 元模型 描述的,元模型是 4层元模型体系结构模式中的一层,其他层次分别是 元-元模型、模型层、用户对象曾。其中元模型层 由 元-元模型层 导出。元模型的体系结构模式 可以用来定义 复杂模型 ... 阅读全文
posted @ 2010-08-16 17:22 lmule 阅读(273) 评论(0) 推荐(0)
摘要:5.3 软件架构风格体系结构设计 核心目标是 重复的体系结构模式,体系结构级的 软件重用。5.3.1 软件架构风格概述一个体系结构 定义 一个词汇表 和 一组约束。词汇表中包含 构件和连接件类型约束指出 如何 组合起来。体系结构风格 反映了 共有的结构和语义特性,并指导如何 组织成一个完整的系统。5.3.2 经典软件体系结构风格每个构件都有一组输入和输出,数据输入构件,经过内部处理,然后产生数据输... 阅读全文
posted @ 2010-08-16 17:21 lmule 阅读(274) 评论(0) 推荐(0)
摘要:第五章 软件架构设计Software Architecture 简称 SA5.1.2 软件架构设计与生命周期1、需求分析阶段需求 和 SA设计 面临的是不同的对象:一个是问题空间;另一个是解空间。保持二者的可跟踪性和转换。2、设计阶段1.传统的设计概念只包括 构件,随着研究的深入,构件间的 互联机制 逐渐独立出来,成为与构件同等级别的实体,称为 连接子。2.体系结构描述语言(Architectur... 阅读全文
posted @ 2010-08-16 17:19 lmule 阅读(243) 评论(0) 推荐(0)
摘要:4.2 需求管理需求 最终文档 经过评审批准后,则定义了需求基线 Baseline;构筑了 功能需求 和 非功能需求 的一个 约定Agreement。约定是需求开发和需求管理之间的桥梁。需求管理是一个 对系统 需求变更、了解和控制 的过程,初始需求导出的同时 就启动了需求管理规划。4.2.1 需求管理原则过程能力成熟度模型 CMM,指导软件过程改进,5个成熟级别,6个关键过程域KPA。一旦需求 文... 阅读全文
posted @ 2010-08-16 17:18 lmule 阅读(266) 评论(0) 推荐(0)
摘要:4.1 软件开发方法4.1.1 软件开发生命周期传统的软件生命期 是指软件产品 从形成概念(构思)开始,经过定义、开发、使用、维护、废弃,的全过程。可以把软件生命期划分为 软件定义、软件开发、软件运行与维护,三个阶段。1、软件定义时期1.问题定义,目标系统“是什么”,系统的定位以及范围。2.可行性研究,技术可行性、经济可行性、操作可行性、社会可行性。3.需求分析,确定软件系... 阅读全文
posted @ 2010-08-16 16:59 lmule 阅读(273) 评论(0) 推荐(0)
摘要:1975年,意大利学者 朗高(G·Longo)提出:信息是反映事物的形式、关系相差别的东西,它包含在事物的差异之中,而不在事物本身。目前,关于信息 比较科学和统一的定义是:信息是对客观事物 变化和特征 的反映,是客观事物之间 互相作用和联系 的表征,是客观事物经过 感知或认知后 的再现。3.1.2 信息的特征1、客观性:反映了事物的 运动状态和方式,既事实性。2、普遍性:信息无所不在... 阅读全文
posted @ 2010-08-16 16:58 lmule 阅读(272) 评论(0) 推荐(0)
摘要:1.1.1 系统架构师的概念现代信息系统“架构”三要素:构件、模式、规划;规划是架构的基石,也是这三个贡献中最重要的。架构本质上存在两个层次:概念层,物理层。1.2.1 系统架构师的定义负责 理解、管理 并最终确认和评估 非功能性系统需求,给出开发规范,搭建系统实现的核心架构,对整个软件架构、关键构建、接口 进行总体设计 并澄清关键技术细节。主要着眼于系统的“技... 阅读全文
posted @ 2010-08-16 16:57 lmule 阅读(431) 评论(0) 推荐(0)
摘要:《计算机网络基础知识》计算机系统 由 硬件和软件组成,软件通常分为 系统软件和应用软件。系统软件支持应用软件的运行,为用户开发应用软件提供平台,用户可以使用它,但不能随意修改它。常用的系统软件有 操作系统、语言处理程序、连接程序、诊断程序、数据库 等。应用软件指 计算机用户利用 软硬件资源 为某一专门的应用目的而开发的软件。2.1 操作系统基础知识操作系统 Operating System,是计算... 阅读全文
posted @ 2010-08-16 16:57 lmule 阅读(356) 评论(0) 推荐(1)
摘要:企业库的缓存模块允许开发者在应用中包含本地缓存。它支持内存缓存,内存中缓存的数据,可以用数据库或者其他分离的存储作为后端数据存储。缓存模块可以不经修改而直接使用,它提供了获取数据、添加数据到缓存、清空缓存中的数据所需的全部方法。同样支持可配置的缓存过期和清除策略。   在构建企业级分布式应用的时候,架构师和开发者将会面对许多挑战。缓存可以帮助他们克服下面的一些挑战:  性能,缓存通过存储和数据消费... 阅读全文
posted @ 2010-08-16 15:55 lmule 阅读(492) 评论(0) 推荐(0)
摘要:一、Provider   在.NET frameword中每一个provider都是一段代码的中间人,通过它,你的应用可以连接到一个服务或者是数据源,可以获取或者是修改服务和数据源的数据。在企业库中包含很多的providers。另外,你也可以创建自己的provider,在你的应用中满足特殊的需求。  一个provider type定义了和一个模块相关的功能的接口,一个provider是一个prov... 阅读全文
posted @ 2010-08-16 12:10 lmule 阅读(318) 评论(0) 推荐(0)
摘要:在企业库的很多模块中都实现了很多常用的功能,他们同样对企业库以外的应用代码也很有用。例如,数据序列化和访问配置信息。为了提供可用性,这些代码都放在企业库核心的Common程序集中。   另外,所有的模块都被设计为最小的依赖,以便他们可以单独使用。除了Unity,所有的企业库都依赖于企业库的核心库,核心库包含了下面的子系统:  Common程序集  模块的仪表盘,模块的运行情况  配置信息的帮助类,... 阅读全文
posted @ 2010-08-16 11:18 lmule 阅读(259) 评论(0) 推荐(0)
摘要:在设计整个企业库的过程中,使用了一系列的最佳实践。下面列出一些里面的最佳实践:  在核心库中使用了Common模块  使用了统一的命名约定和统一的版本  在设计的过程中使用单元测试  在所有模块中包含基础结构  在企业库的模块中包含了下面的模式,当然还包括其他模式:  工厂模式,一个创建型模式,使用指定的类型创建另外一个对象。  插件模式,这种模式扩展了类的行为。在特殊的环境中创建一个子类,只包含... 阅读全文
posted @ 2010-08-16 01:22 lmule 阅读(233) 评论(0) 推荐(0)
摘要:企业库包含很多的程序集,除去Unity模块,企业库的每个程序集的名称都以“Microsoft.Practices.EnterpriseLibrary”开头。另外,其他的模块都可能会依赖企业库的Common程序集。使用一个模块的应用也可能会需要其他模块的程序集,例如使用Caching模块,有可能会需要Data Access模块的程序集。  在应用中使用企业库,可以用下面的两种... 阅读全文
posted @ 2010-08-16 01:16 lmule 阅读(353) 评论(0) 推荐(0)
摘要:3.3通过配置指定和Unity的整合  另外一种方法是在配置源中指定配置的需要,你可以指定下面的一条或者多条:  你可以在Unity配置中指定想要的BlockExtensions  你可以在Unity配置中的type配置节指定如何创建企业库对象,指定类型映射的关系,例如,当使用resolve方法的时候返回一个SqlDatabase,或者是返回指定的注入Database对象。也可以指定生命周期和其他... 阅读全文
posted @ 2010-08-16 01:15 lmule 阅读(294) 评论(0) 推荐(0)
摘要:3.2使用Unity模块创建企业库对象  下面介绍如何使用前面的方法获取企业库对象的实例。代码示例如下[代码]  首先创建一个Unity容器,并且添加企业库核心配置扩展。  默认情况下,这个扩展会从应用的配置文件(app.config和web.config)中读取配置信息。如果你使用自定义的配置源,你可以使用下面的代码创建容器并添加配置扩展。代码Code highlighting produced... 阅读全文
posted @ 2010-08-16 01:14 lmule 阅读(246) 评论(0) 推荐(0)
摘要:引言  本文将到的耦合是指的软件开发中的耦合,而且是代码方面的耦合。包括后面讲到的分层,也只是逻辑分层,不是物理分层。  耦合是我们做软件开发经常会遇到的词汇,尤其是在使用面向对象语言进行开发的时候。看到的相关资料也都在说要低耦合,减少耦合。  尽管我们加入了设计模式,分了层,分了模块,做了等等的工作,还是发现存在耦合,还是有人说耦合高了,导致不能修改,修改、维护的代价太大了。直接导致工期不能固定... 阅读全文
posted @ 2010-08-16 00:18 lmule 阅读(442) 评论(0) 推荐(0)
摘要:在正式开始之前,我需要先声明:这些关键字对于偏向底层的程序员更加耳熟能详,对这些关键字不了解并不影响你作为一个合格的程序员。  这意味着这些关键字会让你在编写程序时得到更好的代码质量和可读性,enjoy  yield  yield关键字会告诉编译器当前的函数是在一个循环内部,编译器会相应生成一个执行它在循环体内部所表示行为的类,yield和return关键字一起用于为枚举器对象提供返回值,比如说:... 阅读全文
posted @ 2010-08-16 00:14 lmule 阅读(286) 评论(0) 推荐(0)
摘要:Some of both Documented and Undocumented Keywords that we dont use often like Check, StackAlloc, Fixed,default,@variables,Nullables, __arglist,__reftype etc are explained with simple examplesDownload... 阅读全文
posted @ 2010-08-16 00:12 lmule 阅读(445) 评论(0) 推荐(0)
摘要:C#中volatile的用法收藏 恐怕比较一下volatile和synchronized的不同是最容易解释清楚的。volatile是变量修饰符,而synchronized则作用于一段代码或方法;看如下三句get代码:int i1;int geti1() {return i1;} volatile int i2;int geti2() {return i2;} int i3;synchronized... 阅读全文
posted @ 2010-08-15 23:02 lmule 阅读(404) 评论(0) 推荐(0)
摘要:一、创建应用模块对象  在你的应用中经常会需要创建例如Database或者是CacheManager之类的对象,企业库支持一系列的方法,可以创建应用需要的对象。  你可以使用工厂方法创建这些对象,企业库的在每一个功能模块和核心库都包含有工厂方法来完成这个任务。这些静态的工厂方法自动读取应用的配置信息,provider的工厂方法允许你手工在配置文件中创建适当的配置,然后用工厂方法在代码中创建prov... 阅读全文
posted @ 2010-08-15 22:22 lmule 阅读(3215) 评论(0) 推荐(0)
摘要:企业库4.0和4.1的主要改进是加入了全新的,而且很容易使用的对象创建方式,包括其他的依赖对象。这个功能在企业库的Unity模块中通过依赖注入暴露,它使用了下面这些常用的设计模式。  Dependency Injection依赖注入  Inversion of Control(IoC)反转控制  Service Locator服务定位  Service Container服务容器  Factory... 阅读全文
posted @ 2010-08-15 22:05 lmule 阅读(439) 评论(0) 推荐(0)
摘要:C#的internal关键字可以使标记的方法,字段或者属性等等只能在当前assembly内部使用,那么如果其他的assembly需要使用这个internal的方法的时候怎么办呢?.NET提供了一种类似于C++中的友元类的方式来完成这个功能,那就是使用InternalsVisibleTo。这种情况常见于做测试的时候,需要另外一个项目来测试项目中的internal方法所标记的功能,所以有了Intern... 阅读全文
posted @ 2010-08-15 21:55 lmule 阅读(6298) 评论(0) 推荐(1)
摘要:一、企业库的主要内容  企业库是一个可重用的组件集合,同时也是一个受支持的基础框架。企业库包含的内容:  企业库功能模块  企业库核心  企业库配置工具  对象创建和依赖注入方法  工具集,示例,和开发指导  二、强命名企业库程序集  如果你使用源代码生成企业库程序集,你就要考虑是否给程序集添加强命名。强命名由程序集的标识组成,包括一个名称,版本号,和一个可选的区域信息,加上一个公共的key和一个... 阅读全文
posted @ 2010-08-15 21:43 lmule 阅读(378) 评论(0) 推荐(0)
摘要:一、迁移和并行使用  通常来说,企业库是建立在.NET 2.0 的基础上,使用后续版本的企业库也不需要改变任何代码。不需要将引用更新到新的程序集,也不需要在配置文件中指明程序集的正确版本。  这个版本4.1的企业库可以和以前版本的企业库同时安装,你可以将使用新版本的应用程序和使用旧版本的应用程序一起部署。也你可以一次性的将现有应用的企业库应用升级到新版本。  如果你选择并行使用不同版本的企业库,你... 阅读全文
posted @ 2010-08-15 17:12 lmule 阅读(310) 评论(0) 推荐(0)
摘要:在4.1中你可以使用Unity Application Block(Unity)在函数或者是功能运行之前或者之后拦截企业库的对象,生成这些对象,并且将他们注入到其他对象中。  企业库中包含了很多的类,允许你从Unity容器中获取在企业库配置中定义的,类似SqlDatabase或者是CacheManager对象的实例。另外,一些有好的注入代替了过去的静态方法。使用Unity的依赖注入能力可以很好的简... 阅读全文
posted @ 2010-08-15 17:01 lmule 阅读(427) 评论(0) 推荐(0)
摘要:我是一个.NET技术为主的程序员,每次开发一个新的应用的时候,都会被人问道“.NET有没有框架可以用,有没有类似 hibernate,structs,spring之类的框架,怎么什么都没有呢,.NET有没有开源的现成的好用的框架,怎么每次都要造轮子呢?你们在干什么呢,数据访问和日志这种东西怎么每次你们都要花功夫来写呢,没有可以参考的吗”,大部分人的回答往往是“没... 阅读全文
posted @ 2010-08-15 16:54 lmule 阅读(437) 评论(0) 推荐(0)
摘要:在上一篇文章中,我介绍了企业库Cryptographer模块的一些重要类,同时介绍了企业库Cryptographer模块为我们提供的扩展接口,今天我就要根据这些接口来进行扩展开发,实现2个加密解密方法(离散加密和对称性加密),分别实现自接口IHashProvider和接口ISymmetricCryptoProvider。这段代码主要就是实现一个离散加密,不过还是有几点需要注意:1、在实现接口IHa... 阅读全文
posted @ 2010-08-14 17:56 lmule 阅读(799) 评论(0) 推荐(0)
摘要:在完成了后,今天开始介绍企业库中的新模块:Cryptographer(加密模块),这个模块在日常的大多数项目的作用非常重要,例如:网站会员密码、身份证号、网站配置等,通过对信息进行加密可以保证项目数据的安全性。今天主要介绍以下几点:1、企业库Cryptographer(加密模块)简单分析。2、实现一个自定义加密接口。3、在项目中应用自定义接口。第一点、企业库Cryptographer(加密模块)简... 阅读全文
posted @ 2010-08-14 17:53 lmule 阅读(438) 评论(0) 推荐(0)
摘要:前端时间花了1个多星期的时间写了使用jQuery.Validate进行客户端验证,但是那仅仅是客户端的验证,在开发项目的过程中,客户端的信息永远是不可信的,所以我们还需要在服务器端进行服务器端的验证已保证数据的正确,今天我继续企业库的学习之路,主要介绍企业库中的Validation模块如何对数据进行验证。本文的主要内容有以下三点:1、根据本项目进行实体验证。2、使用Validation提供的ASP... 阅读全文
posted @ 2010-08-14 17:50 lmule 阅读(555) 评论(0) 推荐(0)
摘要:在前一篇文章中,已经将Validation模块的内置的多种验证器(第一类验证器)的使用进行了介绍,今天继续后面两类验证器:独立验证器和自定义验证器,同时对Validation模块下有关验证器的配置类进行遗漏补充。一、独立验证器 我上篇中我将AndCompositeValidator和OrCompositeValidator归为独立验证器,这2个验证器主要是为了第一类验证服务,可以进行多种验证组合在... 阅读全文
posted @ 2010-08-13 18:22 lmule 阅读(493) 评论(0) 推荐(0)
摘要:在上一篇文章中,我介绍了企业库的Validation模块的基本信息、使用方法,同时对企业库的内置验证器的实现及验证器的特性类实现进行了简单的分析,今天我将继续前一篇文章,介绍Validation模块内置的多种验证器的使用进行介绍。 (注:本文仅仅就Validation模块的各种验证器根据我个人的理解进行介绍,如果有误欢迎大家指出!)0、验证器的命名参数在上一篇文章中我已经介绍过验证器的特性类的层次... 阅读全文
posted @ 2010-08-13 18:20 lmule 阅读(763) 评论(0) 推荐(0)
摘要:本文是为后面的学习之路做铺垫,简单介绍下企业库中的Validation模块的一些相关知识,包括Validation模块的简介、用途、使用方法、默认提供的多种验证器的介绍等。 一、简介及用途 在实际的项目开发中,我们总会需要对数据进行验证,以保证数据的可靠性,而为了使这些验证可以在不同的地方进行复用(如winform、web、WPF等),就需要将验证进行封装,EntLib的Validation模块就... 阅读全文
posted @ 2010-08-13 18:17 lmule 阅读(498) 评论(0) 推荐(0)
摘要:在前面的企业库学习之路里我分别使用了Data Access构建多数据库访问和使用Exception Handle+Logging记录系统的异常。今天我来介绍下企业库中的Caching模块在本项目中如何应用。 首先先补习下企业库的Caching Application Block的相关知识:1、四大缓存方式,在Caching Application Block中,主要提供以下四种保存缓存数据的途径,... 阅读全文
posted @ 2010-08-13 15:13 lmule 阅读(967) 评论(0) 推荐(0)
摘要:在前一篇文章:[EntLib]微软企业库5.0 学习之路——第二步、使用VS2010+Data Access模块建立多数据库项目中我们搭建好了项目的整体多数据库环境,实现了项目的多数据库访问,而整个项目中最主要的异常处理却没有进行部署,今天我们就使用企业库中的Exception Handling+Logging模块为项目加上异常处理以及异常日志记录。 (注:关于Except... 阅读全文
posted @ 2010-08-13 15:12 lmule 阅读(855) 评论(0) 推荐(0)
摘要:在通过上一篇文章:[EntLib]微软企业库5.0 学习之路——第一步、基本入门 对EntLib5.0的相关知识进行了了解,并通过微软给出的学习例子我们可以了解企业库的各模块的基本用法(由于园子里的好几位兄弟都已经把企业库的各模块的使用都介绍过了,所以我这边就不进行具体功能的介绍,我写的学习之路是以企业库如何在一个项目中的使用为基础来介绍,以一个简单的学生信息管理系统项目为... 阅读全文
posted @ 2010-08-13 14:37 lmule 阅读(2084) 评论(0) 推荐(0)
摘要:话说在大学的时候帮老师做项目的时候就已经接触过企业库了但是当初一直没明白为什么要用这个,只觉得好麻烦啊,竟然有那么多的乱七八糟的配置(原来我不知道有配置工具可以进行配置,请原谅我的小白)。 直到去年在做项目的时候在看代码生成工具的时候看到了许多生成工具都内置了企业库的数据库访问及一些相关模块,才突然顿悟了,可能企业库应该还是有点用的,于是就试着使用了企业库的一些模块(当时版本是4.1),果然觉得... 阅读全文
posted @ 2010-08-13 14:31 lmule 阅读(1076) 评论(0) 推荐(0)
摘要:1. 原始单据与实体之间的关系  可以是一对一、一对多、多对多的关系。在一般情况下,它们是一对一的关系:即一张原始单据对应且只对应一个实体。在特殊情况下,它们可能是一对多或多对一的关系,即一张原始单据对应多个实体,或多张原始单据对应一个实体。这里的实体可以理解为基本表。明确这种对应关系后,对我们设计录入界面大有好处。   〖例1〗:一份员工履历资料,在人力资源信息系统中,就对应三个基本表:员工基本... 阅读全文
posted @ 2010-08-12 17:44 lmule 阅读(873) 评论(0) 推荐(0)
摘要:问题描述手上有一行业门户站点,每个用户都有一个子站点(或说模板),每个子站会有一些配置数据(如:logo,横栏图片或者其它一些没想到的东西)为了编程方便以及日后扩充方便,我使用直接在.aspx文件中定义的类来保存这些数据,同样为了修改方便(编译一次站的时间已经到了让人无法接受地步),我这里使用的是单独的.aspx文件(不关联.cs文件),配置数据会被分配给定义的类,然后将类序列化,使用是则执行反序... 阅读全文
posted @ 2010-08-12 17:43 lmule 阅读(991) 评论(0) 推荐(0)
摘要:尽管我使用Javascript来做开发有很多年了,但它常有一些让我很惊讶的小特性。对于我来说,Javascript是需要持续不断的学习的。在这篇文章中,我将列出10个Javascript使用小技巧,主要面向Javascript新手和中级开发者。希望每个读者都能至少从中学到一个有用的技巧。1.变量转换看起来很简单,但据我所看到的,使用构造函数,像Array()或者Number()来进行变量转换是常用... 阅读全文
posted @ 2010-08-12 17:12 lmule 阅读(381) 评论(0) 推荐(1)
摘要:每年给组员做PR的时候,总会谈及职业规划的问题。也总会被被问到怎样何时才可以做一个lead,为什么自己不能做lead?就从别处收集了一些自己也加了一些作为一个指引。但实际在具体操作时,也是每个manager见仁见智的事情,而且有时需要激励和推动才能挖掘出他/她的潜能。基本 1.理解及分解能力,能够准确的理解上级给出的任务并合理的分解 2.目标设置能力,能够将任务,时间,注意事项,期望结果,标准等明... 阅读全文
posted @ 2010-08-12 16:59 lmule 阅读(495) 评论(0) 推荐(0)