随笔分类 - [20]DesignAnalysis设计分析
-
系统分层组织结构
摘要:系统分层组织结构我给MIS类型的软件分四个实现层次,三层架构。BusinessLogic 业务实体 由LLBL Gen 生成业务实体,代码生成器生成Interface 数据访问接口 根据实体产生的数据访问接口,由Code Smith生成Manager 接口实现 根据实体产生的数据访问接口的实现代码,由Code Smith生成UI 界面层 拖拉控件,绑定数据到界面中Business Logic 业务实体层以ORM作为数据访问基础技术,业务实体中包含数据之间的关系逻辑,而不再是用于填充数据的实体。以上结构由LLBL Gen自动生成,它已经为我们生成了实体,实体验证类型,数据访问接口和相关的辅助类型 阅读全文
-
bootstrap+MVC3在Moon.Orm中的应用(含有代码下载)
摘要:bootstrap+MVC3在Moon.Orm中的应用(含有代码下载)1.效果图(Ajax分页)(dynamic无视linq)(数据更新)2.后台代码实例View Code3.前台代码View Code4.代码下载(含数据库 备份文件)http://files.cnblogs.com/humble/Razor.Moon.7z5.注意配置文件修改绿色通道:好文要顶关注我收藏该文与我联系Moon.NET极速开发框架关注 - 53粉丝 - 119+加关注00(请您对文章做出评价)«上一篇:sql的逆袭!让我们开始无视Linq的存在!强类型,无需实体类!(Moon.Orm的自动实体:GetA 阅读全文
-
界面布局决定系统设计的成败
摘要:界面布局决定系统设计的成败问题:在系统开发中,布局界面设计是比较重要的一个环节,我曾在一家甲方公司做过MES开发,见过的系统界面五花八门,有100号人,就有近100种样式,开发的小系统数不清,命名规范更是杂乱无章。所以作为IT项目的管理者,管理这系统和人员这是一件很头痛的事情,但这跟他们的系统管理有很大关系。最后在进行系统升级中,原有的系统基本上都废弃了,我宁愿重新了解需求,重新投入时间开发而不想去看一个方法有近千行代码,嵌套不少于50个if…else...逻辑,改程序的人,会一边改一边骂设计此程序的人~~~,感觉与主题扯远了,还是以系统界面部局为主题。我的一些改善措施:不以花哨的界面为主,先 阅读全文
-
单例模式——sington
摘要:单例模式——sington有一些对象其实我们只需要一个,比如:线程池、缓存、充当显卡等设备的驱动程序的对象。这类对象只能有一个实例,否则会出现很多问题,资源消耗过多、数据不一致等。定义 确保一个类只有一个实例,并提供一个全局的访问点。类图 说明:1.一个private static的Singleton实例变量instance. 2.一个public static 的getInstance方法,返回instance。 3.一个私有构造方法经典实现public class Singleton { private static Singleton instance = null; ... 阅读全文
-
设计时(Design-Time)和运行时(Run-Time)的区别
摘要:设计时(Design-Time)和运行时(Run-Time)的区别设计时和运行时的概念网上的中文资料很少,如果不是做第三方组件开发的或者跟设计器开发有关的,几乎用不到这些概念。为了迎合之前几篇博客,我想有必要说一下它两的概念和区别,以及用在什么地方。博客好久没更新,比较忙。 首先,我个人认为“设计时”和“运行时”是针对组件而言的(包括控件),也就是说,一个组件可以处在“运行时”也可以处在“设计时”两个状态,从字面上的意思来看,“设计时”当然是指处在开发阶段,开发人员在设计器中开发组件的时候,而“运行时”指程序处在运行阶段,比如一个button控件,在设计器中的窗体中时,它就处于“设计时”,当. 阅读全文
-
模板引擎开发(二)-值标签的处理
摘要:模板引擎开发(二)-值标签的处理前面发了一篇,看到一些朋友评论,我说明一下。我这个模板引擎不是为了MVC使用的,而是纯粹是为了供网页制作人员使用,通过一些简单的标签,能将网站后台填写的内容在前台展示出来,生成静态化的网页,类似于织梦CMS的思路。我之前也研究了一下NVelocity,它的确比我写的强大,我当初研究它只是研究它是以什么算法处理文档的,为什么这么快,不过没有研究出个明堂,呵呵。我这个处理引擎现在的执行速度只能算一般般,全站静态化生成的单线程处理需要二十几秒。当然也有数据库的原因,我测试时使用的是Access数据库。后续还要重构和优化代码,想办法提升执行速度。本文主要描述值标签的处理 阅读全文
-
Google文件系统(GFS)翻译学习
摘要:Google文件系统(GFS)翻译学习摘要我们设计并实现了Google文件系统,它是一个可扩展的分布式分局系统,用于大型分布式数据密集型应用。它运行在便宜的普通硬件上,提供了容错处理;并为大量的客户端提供了高性能。在与之前的分布式文件系统提供相同功能的同时,我们的设计是由对我们应用的工作和技术环境的观察驱动的,无论当前还是未来,都与之前的文件系统有明显的区别。这使我们重新测试了传统的文件系统,并探索出完全不同的设计。这个文件系统完全符合我们的存储需求。作为一个存储平台在Google中得到大范围部署,用于存储服务产生和处理的数据,如搜索和需要大数据集的研发工作。目前为止最大的集群拥有几百TB的数 阅读全文
-
模式驱动开发
摘要:模式驱动开发背景我非常喜欢各种模式(很多还都看不懂),几乎会购买关于模式的任何书籍,生怕有所遗漏,关于模式的优势以及如何使用好模式已经有很多文章在介绍了,我今天想给大家分享的是我的一个想法:模式驱动开发,即如何使用模式来进行真实的项目开发。思路关于模式我们已经有了足够的资源(甚至泛滥),目前缺乏的是将这些模式落地的具体框架、组件和工具(后面我简称为平台)。想做一个通用的平台确实不容易,但是我们可以将业务领域和技术领域进一步限定,甚至只限定在一个应用程序中,在这种限定的业务领域和技术领域内做一个平台应该不是很难了。以界面为例,在我做过的企业应用领域出现的界面模式还没有超过20种,如果这20种模式 阅读全文
-
使用Orachard与Bootstrap建站心得
摘要:使用Orachard与Bootstrap建站心得最近使用Orchard和Bootstrap为哥的ALinq做了个小网站,总得来说,很不错。比自己一行一行地写代码,有效率多了,而且页面也干净利落,当然,比起专业的网站的,还是有不少距离。选择Orchard,是因为从几年前,就一直在关注它,用的人相对来说也比较多,并且,采用的技术也是主流的。但免费的东西终究是免费,始终有着这样或那样的不足,不过,一旦想到它是免费的,也就安然接受了。其实,我是很想付费来做的,为什么最后还是自己做呢?1、沟通的成本太大了,花费在沟通上面的时间,不会比我动手开发的时间少。2、后期的维护,特别是些小的修改,这个还是自己动手 阅读全文
-
组织机构权限系统的实现(工作流)
摘要:组织机构权限系统的实现(工作流)在工作流管理系统中,业务流程的流转,每个节点的办理都是由人或组织共同参与和协作来完成的。工作流管理系统就是业务流程的自动化,通过计算机的相关技术手段将这些流程自动化,并对其进行有效的管理以提高企业运作的效率,降低开发和维护的成本,增加企业的竞争力。 在工作流管理系统中,企业的组织是系统执行活动和完成任务的载体,组织机构反映了企业人员的管理层次,同时也反映了人与工作,责任权限之间的关系。因此组织机构权限在工作流管理系统中具有相当重要的地位,是不可缺少的。在企业管理系统中,组织机构权限模型大部分都是遵循RBAC标准,对组织机构的划分有机构,部门,职位,职员。对权限的 阅读全文
-
也谈谈我对IoC的理解
摘要:也谈谈我对IoC的理解今天看到一篇帖子谈到了对IoC的理解,于是我自己也忍不住跳出来“理解”一番,其实我当年也被“依赖注入、控制反转”这八个字折腾的够呛,但是搞明白之后就会发现这几个字、包括IoC这个名字都纯粹是唬人的,于是今天准备用三张图来说明白这件事。 首先,IoC和DI说的是一件事,它们的中文名分别是IoC(控制反转)和DI(依赖注入),要说依赖注入,就要先说说依赖倒置原则。 以下是直接贴自百度知道的概念:所谓依赖倒置原则就是要依赖于抽象,不要依赖于具体。简单的说就是要求对抽象进行编程,不要对实现进行编程,这样就降低了客户与实现模块间的耦合。面向过程的开发,上层调用下层,上层依赖于下.. 阅读全文
-
NopCommerc MVC 插件机制分析
摘要:NopCommerc MVC 插件机制分析基本原理插件话的应用程序一般都是先定义插件接口,然后把插件编译的dll放到固定的目录中,应用程序主程序通过加载那些实现了插件接口的dll来实现插件的使用。NopCommerce也是这样,但作为MVC Web应用程序会有一些不一样,首先是不同信任级别(Full Trust,Medium Trust)的时候加载dll的策略会有不一样,另外就是怎样显示插件中的View的问题。放插件的文件夹NopCommerce的插件放在网站主目录的Plugins目录下,Plugins下面有很多文件夹,一个插件类库就是一个文件夹。在插件类库中修改编译输出的地址为网站主目录的P 阅读全文
-
离线悲观锁 之 过期策略支持
摘要:离线悲观锁 之 过期策略支持背景之前写了一篇文章防止并发修改 之 离线悲观锁代码示例(离线悲观锁),这篇文章回避了一个问题,就是如何处理用户直接关闭浏览器后导致的锁占用问题。本文就介绍一个思路。思路思路1这是之前已经提供过的思路,只是没有贴出来,就是:当会话结束的时候清除所有用户持有的锁,这会导致个别锁在会话期间被长时间占用(可能超过几个小时)。思路2引入一个后台线程,每隔指定的分钟就清理一下被长时间占用的锁,如:清理那些占用超过10分钟的锁,这回导致一定的线程成本,因为这个线程需要频繁的运行。思路3引入过期策略,是否被锁完全取决于两个条件:是否拥有锁以及是否过期,这个思路下过期的锁会成为一种 阅读全文
-
解决设计中的两难问题
摘要:解决设计中的两难问题设计,从来都不是件简单的事情,尤其是在产品越来越庞大,用户越来越多的时候,一些看似简单的设计或改变,很可能成为你全军覆没的致命伤. 程序员的成长大体上是这样的,首先,学习一门编程语言的使用,比如C#, 比如Java,因为是入门,必须要选择入门难度系数小点的,象C#及.net这样的东西,还是很受欢迎的.经过一段时间的学习后,基本的东西,概念开始了解了,就尝试着写一些小程序,小功能. 随着时间的流逝,致我们终将逝去的菜鸟青春,我们逐步变得成熟起来.(当然这里插点题外话,对于戏子们的致青春,是个越来越堕落的过程,当你堕落到底,青涩荡然无存,那么就可以致青春了.比如,你不再相信.. 阅读全文
-
一次重构
摘要:记我的一次重构——希望对新人有所帮助看过博客园里几篇关于重构的文章,感觉都不怎么实在。下面我来谈谈自己的一次重构经历,希望对新人能有所帮助。ALinq这个产品维护了将近五年的时间,最近对它进行了一次重构。为什么要重构?主要是为了适应业务的发展需要。产品是服务于业务,而重构是服务于产品,归根到底,重构是服务于业务。所以我一直强调,好的架构不是想出来的,而是做来的,经验积累下来的。很多时候业务的发展,往往会超出你出初的预期,所以在产品的前期想设计出一个完美的架构是不可能的事。这次的重构,出现了很多问题,一直陆续推出了好几个版本,才开始稳定下来,还好我的用户都是些忠实的用户,用ALinq好几年了,一 阅读全文
-
在应用层实现触发器
摘要:在应用层实现触发器背景企业应用开发过程中经常面对一些非功能型需求,如:自动收集和设置审计信息、索引和关系约束,有些非功能需求当然可以用数据库自带的功能,如索引约束,但是应用层视乎也有必要重复一次,因为当违背这种约束的时候我们希望提示给用户友好的信息,如:‘xxx已经存在,xxx必须唯一’,这篇文章我就介绍一个简单的方案应对这种需求。思路我觉得数据库的触发器是个好东西,应用层完全可以借用一下,我还认为如果我在应用层实现了触发器,像一些前置条件和后置条件验证也可以用触发器实现(这块我不是很清楚设计的是否合理,还是要引入另外一个继承体系)。实现核心类核心代码DefaultTriggerService 阅读全文
-
聚合根的批量删除是不是可以批量发送请求
摘要:DDD:聚合根的批量删除是不是可以批量发送请求背景搞了近五年的系统开发,总是抱着一种思维模式,用户的一个操作对应一个请求和一个事务,比如:用户选择了N条记录,我就会向服务器发生一个请求,服务器在一个事务中进行处理。前几天在群里一个前辈反问:批量操作难道真的要在一个事务中?这个问题让陷入了反思,谢谢前辈们(魏琼东)。DDD中有聚合的概念,一个聚合有且只有一个聚合根和一些其他实体,如:订单聚合中,订单是聚合根,订单明细是聚合内的实体。因为DDD中只能操作聚合根,这篇文章就介绍聚合根的批量删除问题。有人问聚合内的实体的删除咋弄?聚合内实体的删除必须伴随着聚合根的修改(这里不做详细介绍)。另外一点是需 阅读全文
-
准备抽象NHibernate和EntityFramework
摘要:准备抽象NHibernate和EntityFramework背景考虑到目前中小企业应用的主流是ORM,我准备在NHibernate和EntityFramework之间找到一个抽象层,也就是说我准备只支持NHibernate和EntityFramework。思路NH和EF都实现了“工作单元”和“主键映射”这两种企业应用模式,而这两种模式其实就是管理一种状态机,如下图:实现工作单元接口 1 using System; 2 using System.Collections.Generic; 3 using System.Linq; 4 using System.Text; 5 using ... 阅读全文
-
防止并发修改 之 离线悲观锁代码示例(离线悲观锁)
摘要:防止并发修改 之 离线悲观锁代码示例(离线悲观锁)背景系统会出现并发,上篇文章我介绍了如何使用“离线乐观锁”保证并发,离线乐观锁适合处理那些重新编辑成本不大的单据,如果某个单据用户花了10分钟进行编辑,提交时你告诉他出现并发了,他心里肯定会骂娘的,今天介绍的“离线悲观锁”就可以避免这种情况。思路小明签出了源代码,小强就不能签出了,我们目前的源代码系统就是用的这种悲观策略。实现核心代码离线悲观锁管理器接口 1 using System; 2 using System.Collections.Generic; 3 using System.Linq; 4 using System.Text; 5 阅读全文
-
联邦企业架构之FEA实施指南(上)
摘要:联邦企业架构之FEA实施指南(上)通过前面的论述,我们可以了解到在接管了FEA的开发之后,OMB先后制定了诸如参考模型、联邦过渡框架以及企业架构评估框架等标准用于为FEA的开发提供帮助。但是FEA的开发并不是最终的目的,美国联邦政府创建的FEA的初衷是为了提高政府整体的信息资源的利用率和效能,并改善政府针对信息技术的投资水平,因而如何开发和应用FEA并使其为上述目标提供价值才是目标所在。为了达到这一目标,OMB于2007年底发表了《FEA Practice Guidance》用以指导如何开发和利用联邦企业架构,从而实现联邦政府性能的改善。 不论是具有什么样职能的部门都需要寻找能够提升其职能效率 阅读全文