摘要:
问题:在面向对象的软件设计中,经常会遇到一个(或一系列)对象,对象本身的数据存储与对象的操作耦合在一起。例如一个对象有add(),edit(),delete()方法,这样对象支持的方法很难扩展,如果需要加入update()就必须修改代码,客户端与对象也是紧耦合的。命令模式是将一类对象的功能(行为,功能)抽象成一个命令对象,客户端在使用的时候,只与该命令对象打交道,而不用与对象打交道,分离命令的请求者和命令的执行者,降低了耦合性,可以使用不同的请求对客户进行参数化提高了程序设计的灵活性。定义:命令模式(Command)模式,将一个请求封装为一个对象,从而使你可用不同的请求对客户进行参数化;对请.
阅读全文
posted @ 2012-06-28 17:02
ejiyuan
阅读(3505)
推荐(3)
摘要:
问题:在面向对象的软件设计中,经常会遇到一些聚集对象,按一定的顺序的遍历访问问题,这个遍历算法究竟应该由谁来实现呢,聚集对象本身?这样聚集对象承受了过多的功能,不仅要维护聚集对象内的元素,还要提供遍历自身的接口,而且由于遍历状态保存的问题,不能对同一个容器对象同时进行多个遍历,这不符合单一职责原则。如果将遍历算法交给客户端,会将容器的内部细节暴露无遗,而且客户端与聚集对象高度耦合。分离了集合对象的遍历行为,将遍历算法交给这个迭代器角色来完成,可以很好的避免容器内部细节的暴露,而且也使得设计符合“单一职责原则”,另外迭代器模式抽象了具体迭代器角色,可以通过对一个抽象迭代器多个集成可来完成同一聚.
阅读全文
posted @ 2012-06-27 18:28
ejiyuan
阅读(1476)
推荐(1)
摘要:
问题:当我们定义一系列的算法,怎么能使得算法为应对不同的业务需要能自由的动态替换而又不影响到客户端的使用,并且算法的增减、修改都不会影响环境和客户端。定义:策略模式定义了一系列算法,把它们一个个封装起来,并且使它们可相互替换。该模式可使得算法能独立于使用它的客户而变化。意图:Strategy模式是行为模式,正因为他是一种行为模式,所以他不是用来解决类的实例化的,跟创建什么样的产品没有关系,此模式解决的问题是把一个系列完成相同工作,却实现不同的算法(行为)包装到一系列的策略类里面,使得它们可以相互替换,提供一个访问接口,由客户端决定在什么情况下使用什么具体策略,来完成某一功能。并可以自由的添加.
阅读全文
posted @ 2012-06-26 18:13
ejiyuan
阅读(1731)
推荐(0)
摘要:
问题:在软件系统中,经常有这样一些特殊的类,必须保证它们在系统中只存在一个实例,并提只有一个全局访问点,才能确保它们的逻辑正确性、以及良好的效率。定义:单例模式也叫也叫单件模式是一种对象创建模式, 保证一个类仅有一个实例,并提供一个该实例全局的访问点。这个类称为单例类。意图:确保某一个类只有一个实例,而且自行实例化并向整个系统提供这个实例。单例模式有三个要点:一是某个类只能有一个实例;二是它必须自行创建这个实例;三是它必须自行向整个系统提供这个实例.参与者: •单例类:确保类只有一个实例,而且自行实例化并向整个系统提供这个实例。UML图:实例说明:诺基亚手机工厂诺基亚手机工厂,可以生产多款手.
阅读全文
posted @ 2012-06-25 15:45
ejiyuan
阅读(778)
推荐(1)
摘要:
问题:Factory Method模式是为一类对象提供创建接口或延迟对象的创建到子类中实现。但是,我们在软件系统中,经常面临着“一系列相互依赖的对象”的创建工作,同时由于需求的变化,这“一系列相互依赖的对象”也要改变,如何应对这种变化呢?Abstract Factory模式是为创建一系列相关或依赖的对象提供创建接口(AbstractFactory),将一组产品的创建封装到一个用于创建对象的类(ConcreteFactory)中(形成一个系列),维护这样一个创建类总比使用Factory Method维护n多相关对象的创建过程(逻辑)要简单的多,而且Factory Method,没有办法保证“一.
阅读全文
posted @ 2012-06-21 18:21
ejiyuan
阅读(1860)
推荐(4)
摘要:
问题:简单工厂模式比较适用于事先已经考虑到的可能出现的算法,来构造工厂类实现,如果需要添加新的类,则就需要改变工厂类了,违反开闭原则,简单的说,简单公共适应与业务变化不是很剧烈的场景下如,审批业务,设计时可以判断到的只有“部门经理审批”,“总裁审批”不会过几天又要加入“组长审批”,去修改工厂类,相对来说变化不是很剧烈的。在软件设计中经常面临着“某个对象”的创建工作,由于需求的变化,这个对象的具体实现经常面临着剧烈的变化,但是它却拥有比较稳定的接口。如果我们使用简单工厂,这样会不断地修改工厂类,应对业务变化,违反开闭原则,另外因为实例化产品的判断逻辑在工厂类中,工厂类会变的越来与臃肿。定义:工.
阅读全文
posted @ 2012-06-20 17:08
ejiyuan
阅读(4518)
推荐(1)
摘要:
问题:为了满足一种业务需要需要多个算法,(如:审批业务,有部门经理审批,总监审批,总裁审批...)。因为是同一类业务处理,所以我们经常会抽象出这些算法的公共属性和方法以形成抽象基类或者接口,这样我们可以通过声明一个指向基类(或接口)的指针来指向实际的子类实现,达到了多态的目的。因为要为每一种算法在使用之前都要先创建一个实例,然后才能使用。这里就出现的一个问题n多的子类继承自抽象基类,我们不得不在每次要用到子类的地方就编写诸如new ×××;的代码 。这个实例化工作有谁来做呢,如果交给客户端去做,客户端势必要进行相应的逻辑判断,来决定调用那一算法去实例化相应的子类对
阅读全文
posted @ 2012-06-19 17:39
ejiyuan
阅读(1240)
推荐(0)
摘要:
EF正在成为一个优秀的ORM框架,4.1中就加入了Code First,当时带来的不少的惊喜,可是,4.1时,的Code First虽然可以不再依赖edmx,可是建立很多的,映射code,虽然这些code有工具可以自动生成,可是仍觉得解决方案混乱。今天感受了一下4.3,他可以不在依赖edmx,不再需要大量的映射code,写简单的,连接字符串,实现一个清爽的,基于POCO的ORM架构。4.3中好多东西都已被内部封装了我们只需简单的调用就好:1,定义数据操作对象///<summary>///定义一个DbContext///</summary>publicclassBookC
阅读全文
posted @ 2012-02-29 17:01
ejiyuan
阅读(5935)
推荐(4)
摘要:
所谓单点登录(Single Sign On就是在多个应用系统中,用户只需要登录一次就可以访问所有相互信任的应用系统。其实对于程序员在技术上要实现就得就是多个不同域名间共享cookie的问题。 最近在为ERP添加一个部署在另一台机器上,链接到原有老系统中的子项目,调用原有老项目中的Login实现单点登录,尝试了N次屡试不成,最后确定问题,是,.net2.0与4.0中对cookie的加密/解密方法由此差异,于是经过研究,重写实现了一个可以在不同.net版本中实现单点登录的简单方法。1,共用登陆页代码实现:protectedvoidbtnLogin_Click(objectsender,Event.
阅读全文
posted @ 2011-09-28 11:54
ejiyuan
阅读(7485)
推荐(3)
摘要:
在大型系统中应用中,一个架构设计较好的应用系统,其总体功能肯定是由很多个功能模块所组成的,而每一个功能模块所需要的数据对应到数据库中就是一个或多个表。而在架构设计中,各个功能模块相互之间的交互点越统一、越少,系统的耦合度就越低,系统各个模块的维护性及扩展性也就越好。在一个系统中特别是较为大型的系统中,如电子商务系统,可也按照功能,切分为,订单管理系统、商品管理系统、用户管理系统、供应商管理系统.....
阅读全文
posted @ 2010-11-18 10:02
ejiyuan
阅读(9369)
推荐(12)
摘要:
随着互联网应用的广泛普及,海量数据的存储和访问成为了系统设计的瓶颈问题。对于一个大型的互联网应用,每天百万级甚至上亿的PV无疑对数据库造成了相当高的负载。对于系统的稳定性和扩展性造成了极大的问题。一、负载均衡技术负载均衡集群是由一组相互独立的计算机系统构成,通过常规网络或专用网络进行连接,由路由器衔接在一起,各节点相互协作、共同负载、均衡压力,对客户端来说,整个群集可以视为一台具有超高性能的独立服...
阅读全文
posted @ 2010-10-29 10:39
ejiyuan
阅读(17508)
推荐(40)
摘要:
一、需求分析 需求分析是对用户的业务活动进行分析,确定系统的目的、范围、定义和功能,明确在用户的业务环境中软件系统应该"做什么"。只有在确定了客户需求后,知道要“做什么”,才能够分析和寻求系统的解决方法,开展后续的工作,所以需求分析是软件工程中的一个关键过程。 这一步骤 要产生用户需求说明书,这个说明书既是给用户看的也是给开发人员看的,可以让用户更加确定自己的需求,让开发人...
阅读全文
posted @ 2010-06-03 13:10
ejiyuan
阅读(2996)
推荐(6)
摘要:
外键支持(Foreign Keys)Entity Framework添加了对外键的支持。利用外键关联,您现在可以将外键属性包含在实体里,这样做可以简化诸如数据绑定、n-tier开发等关键方案的开发。您可以直接使用外键属性设置实体之间的关系:Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeH...
阅读全文
posted @ 2010-06-01 16:59
ejiyuan
阅读(5085)
推荐(0)
摘要:
WCF支持多种认证技术,例如Windowns认证、X509证书、Issued Tokens、用户名密码认证等,在跨Windows域分布的系统中,用户名密码认证是比较常用的,要实现用户名密码认证,就必须需要X509证书,用来加密用户名和密码。1. 创建数字证书 makecert -sr localmachine -ss My -n CN=ejiyuan -sky exchange -pe -r。2...
阅读全文
posted @ 2010-05-31 18:02
ejiyuan
阅读(17506)
推荐(9)
摘要:
X.509 数字证书是在 Internet 环境下,最方便的认证方式1. 创建数字证书 X509证书可以通过 证书颁发机构(如 VeriSign Inc)购买或通过MakeCert.exe 工具创建开发期间使用的临时证书 .制作一个证书。制作证书:makecert -sr localmachine -ss My -n CN=ejiyuan -sky exchange -pe -r。 参考:htt...
阅读全文
posted @ 2010-05-31 16:54
ejiyuan
阅读(7180)
推荐(3)
摘要:
WCF中每个标准绑定都提供用于控制传输安全性要求的参数。这些参数通常包括指定是使用消息级安全性还是使用传输级安全性的安全模式,还包括客户端凭据类型的选项。基于这些参数提供的可供选择的选项,构建一个具有适当安全性的信道堆栈。Transfer Security 主要包括三个方面: "消息完整性(Message Integrity)"、"消息机密性 (Message Confidentiality)" ...
阅读全文
posted @ 2010-05-31 14:59
ejiyuan
阅读(7711)
推荐(5)
摘要:
听说MSDN放出了Microsoft Visual Studio 2010 简体中文旗舰版,怀着激动的心情下载安装。下面是下载地址如果有MSDN订阅账号的话可以去https://msdn.microsoft.com/zh-cn/subscriptions/securedownloads/default.aspx如果没有可以使用下面的地址下载,这里感谢前人的分享ed2k://|file|cn_vis...
阅读全文
posted @ 2010-05-29 08:48
ejiyuan
阅读(29127)
推荐(7)
摘要:
一、面向对象技术基本概念 面向对象技术基于对象概念,以对象为中心,以类和继承为构造机制,充分利用接口和多态提供灵活性,来认识、理解、刻划客观世界和设计、构建相应的软件系统.面向对象的特征– 抽象,先不考虑细节– 封装,隐藏内部实现– 继承,复用现有代码– 多态,改写对象行为二、面向对象的设计目标1、可扩展性Extensibility–容易添加新的功能2、灵活性Flexibility–容易添加新的功能代码修改平稳地发生3、可插入性Pluggability–容易将一个类抽出去,同时将另一个有同样接口的类加入进来三、面向对象设计基本的设计原则: 1、针对接口编程,而不是针对实现编程– 客户无需知道所
阅读全文
posted @ 2010-05-28 11:55
ejiyuan
阅读(3488)
推荐(6)
摘要:
InstanceContextMode表示的是,WCF允许产生可用来处理包含在传入消息中的调用的服务(契约类)的实例InstanceContext模式数,WCF的并发模式ConcurrencyMode是针对某个封装了服务实例的InstanceContext而言的简单的说,InstanceContextMode表示产生多少个服务实例对象,ConcurrencyMode表示每个服务实例对象的并发控制模式InstanceContextMode:调用的服务(契约类)的实例模式有三种Single 单例模式:每个WCF服务创建一个InstanceContextMode对象,服务开始时创建,服务完成时销毁P
阅读全文
posted @ 2010-05-28 11:39
ejiyuan
阅读(4455)
推荐(5)
摘要:
定义:设计模式(可复用面向对象软件的基础)是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结。解释:是描述在各种不同情况下,要怎么解决问题的一种方案。面向对象设计模式通常以类型或对象来描述其中的关系和相互作用。目的:面对接口编程、降低耦合、增强灵活性。设计模式能使不稳定依赖于相对稳定、具体依赖于相对抽象,避免会引起麻烦的紧耦合,以增强软件设计面对并适应变化的能力。设计模式的鼻祖(四个作者, 简称"四人帮")列举了23个常用的设计模式。1.创建型模式(Creational Pattern)就是用来创建对象的模式,创建型模式抽象了实例化过程。它们帮助一个系统独立
阅读全文
posted @ 2010-05-19 15:28
ejiyuan
阅读(817)
推荐(0)
摘要:
1,在项目中添加CodeFirstStoreFunctions包: 2,注册注册函数,FunctionsConvention第二个参数为函数定义所在的类 3,定义函数对应的方法,要入数据中函数签名一致 4,创建数据库函数 5,调用
阅读全文
posted @ 2010-04-26 09:38
ejiyuan
阅读(847)
推荐(0)
摘要:
因为最初错误的理解了Contract与Service的关系,把每个业务定义了相应的Contract与Service并将对应的Service一一继承相应的Contract,因为在WCF每个host只能提供一个Service所以导致,当你的服务很多的时候你要定义N多个host看下面演示提供User(用户)和Order(订单)两个服务:开启多个host代码:[代码]开启多个host配置代码代码 Code...
阅读全文
posted @ 2010-04-23 15:52
ejiyuan
阅读(3733)
推荐(2)
摘要:
IoC控制反转(Inversion of Control,英文缩写为IoC)是一个重要的面向对象编程的法则用来解决系统耦合问题。 控制反转还有一个名字叫做依赖注入(DI:Dependency Injection)。IoC中最基本的技术就是interface + reflection,“反射(Refl
阅读全文
posted @ 2010-04-20 14:59
ejiyuan
阅读(442)
推荐(0)
摘要:
定义:Unity Application Block (Unity)是一个轻量级、可扩展的依赖注入容器,所谓依赖注入容器,即组件之间的依赖关系由容器在运行期决定,容器动态的将某种依赖关系注入到组件之中,实现构建高度松耦合的软件的工具,依赖注入容器处理相互关联组件的所有细节,因此你可以构建一个独立的组件,提升组件重用的概率,为系统搭建一个灵活、可扩展的平台。功能:它有助于构建松耦合的应用程序和为开发者提供以下便利: 1,它提供了创建(或者装配)对象实例的机制,简化对象的创建,特别在分层对象结构和依赖的情形下2,它支持需求的抽象化,这允许开发人员在运行时或在配置文件中指定依赖,简化横切关注点(cr
阅读全文
posted @ 2010-04-09 14:22
ejiyuan
阅读(2534)
推荐(0)
摘要:
方法一:引入System.Web.Script.Serialization命名空间使用 JavaScriptSerializer类实现简单的序列化序列化类:Personnel[代码]执行序列化反序列化:代码 Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/-...
阅读全文
posted @ 2010-04-09 10:43
ejiyuan
阅读(50133)
推荐(5)
摘要:
就管他叫“使用多线程分段获取大量数据方法”吧。假定我们的需求是,通过Web Service获取10W条订单,我的解决方案是 分成10个线程每个线程传输1W条订单分段获取,具体请看下面的流程图及其说明1,流程图2,流程说明:线程1开始请求接口获取1W条数据,当数据成功获取后,接口是闲置的,这时我们开始线程2获取数据,同时线程1继续执行获取数据的后续工作,如果转换数据,这里我用...
阅读全文
posted @ 2010-04-02 16:59
ejiyuan
阅读(6905)
推荐(1)
摘要:
ASPNETDB 这个隐藏在ASP.NET 2.0四大“插件”(SqlMembershipProvider、SqlRoleProvider、SqlProfileProvider、 SqlPersonalizationProvider)之后,时不时在你App_Data目录下幽灵般出现的SQL数据库,其实也并没什么神奇之处,我等凡夫俗子进去一看,原来也不过如此。不过如果我们要编...
阅读全文
posted @ 2010-03-12 15:43
ejiyuan
阅读(1801)
推荐(0)
摘要:
ScottGu在其最新的博文中推荐了Simone Chiaretta的文章13 ASP.NET MVC extensibility points you have to know,该文章为我们简单介绍了ASP.NET MVC中的13个扩展点。Keyvan Nayyeri(与Simone合著了Beginning ASP.NET MVC 1.0一书)又陆续发表了一些文章,对这13个扩展点分别进行深入的...
阅读全文
posted @ 2010-03-09 11:19
ejiyuan
阅读(1034)
推荐(1)
摘要:
项目经理辞职走了,我接替他的位置做了这个项目的负责人,负责这个项目的开发,我一直期望能得到重用,这次终于如愿以偿了,等我接手这个项目后,其他的同事们都已慢慢的成了其他项目的负责人,都在做着彼此的事,我才发现,部门甚至整个公司都不是很注重这个项目,其他项目负责人负责的项目都比我的重要。当时接手这个项目的时候后 技术总监找我谈过,现在想想当时谈话的内容,是让我在A项目和B项目上选一个,当时我考虑到A项...
阅读全文
posted @ 2009-12-22 10:58
ejiyuan
阅读(2686)
推荐(2)
摘要:
1.传统修改模式,看下列代码[代码]监控SQL语句:[代码]从这里例子中可以看出使用“传统模式”的数据更新,必须先要执行一次查询,将获取要更新的实体对象,在看下面的例子:[代码]更新是不会执行的,因为实体不再 执行 SaveChanges 的对象中所以 当我们更新一个 不再当前连接中的对象是必须要先执行查询获取这个对象才能对其更新,如下:[代码]2.使用ApplyPrope...
阅读全文
posted @ 2009-12-01 12:00
ejiyuan
阅读(2711)
推荐(4)