随笔分类 -  架构设计

.net 架构设计
Asp.net MVC 基于规则的权限设计(续)-- 扩展微软企业库安全模块
摘要:在上篇讲Asp.net MVC权限设计的文章中,利用了微软企业库的安全模块。该设计可以适用于其他winform,asp.net程序。http://www.cnblogs.com/huyq2002/archive/2012/01/17/2324609.html但是它有一个问题,所有规则都保存在配置文件-web.config或app.config中。在生产环境中,系统需要从数据库中加载规则,并允许在运行时修改安全规则。下面详细绍如何扩展安全模块 Microsoft Enterprise Library Security Application Block,从SQL Server数据库加载权限规则。 阅读全文
posted @ 2012-03-22 13:22 胡以谦 阅读(2266) 评论(1) 推荐(2) 编辑
Asp.net MVC 基于规则的权限设计
摘要:上面一篇文章我们简单介绍了一个一级菜单的应用。在实际的设计中菜单的的信息基本存储在sitemap的xml文件中,菜单还涉及到权限问题。本章将介绍并举例说明如何设计基于规则的MVC应用程序的安全性。基于角色的授权在计算机系统的安全,基于角色的访问控制(RBAC)是一个系统访问限制授权用户的方法。在一个组织内,角色创建的各项工作职能。来执行某些操作的权限分配给特定的角色。业务上我们必须定义一套针对不同的业务功能的角色体系,例如管理员,数据管理员,普通用户的角色... ...基于规则的访问控制以规则为基础的授权框架,一般利用XML文档存储简单的规则设置,来控制系统访问权限。(也可以存储在数据库中,读 阅读全文
posted @ 2012-01-17 14:13 胡以谦 阅读(6406) 评论(7) 推荐(6) 编辑
构建快速数据交易系统的思考(2)利用UnitOfWork和Repository模式-下
摘要:在上一篇文章中,我们利用Entity framework来针对UnitOfWork,Repository设计模式做了一个非常简单的实现。但是这个实现有很多问题。我们现在逐步解决问题,形成一个具有好的扩展性的方案。新的类图(不包含两个Repository,我们暂时不考虑Repository的问题):现在解释一下新的设计中各个类的职责:名称类型描述IUnitOfWork接口UnitOfWork模式的核心接口,客户端代码将与IUnitOfWork打交道,主要调用Commit方法,例如以下代码:public CustomerInfo Insert(CustomerInfo customer){ ... 阅读全文
posted @ 2011-08-18 14:49 胡以谦 阅读(4082) 评论(11) 推荐(4) 编辑
构建快速数据交易系统的思考(2)利用UnitOfWork和Repository模式-上
摘要:摘要:在上一篇文章中,我们比较了ADO.net和其他Data Provider,以提高应用程序数据访问层的性能。下面我们的主题将是采用一些常用的设计模式来使用ORM(通常是N-hibernate和EF)建立数据访问层---UnitOfWork,Repository设计模式和SOA。其实ORM不应该属于这个系列的范围,因为它不会帮助改善我们的第一个应用程序的性能。ORM并不适合快速数据交易系统(要求有很好的实时性)。我们经常会遇到一个数据库事务,在不同的数据表上有操作需要,UnitOfWork结合Repository模式是通用的设计方法,例如:我们需要建立一个订单服务,其中有一个方法名为Crea 阅读全文
posted @ 2011-08-16 16:00 胡以谦 阅读(3808) 评论(1) 推荐(6) 编辑
构建快速数据交易系统的思考(1)使用DataDirect
摘要:<<构建快速数据交易系统的思考>>系列将从软件架构设计的各个层面对提高系统性能方法和策略进行研究。本文是系列“构建快速数据交易系统”的第一篇文章,将就如何从数据访问机制层面来改善系统性能的方法进行探讨。架构决定了应用程序的性能。软件架构师经常相信,只要提高软件基础设施的性能(比如硬件资源)将足以解决一个应用程序的性能挑战,但不幸的是它已被证明在许多实际情况下都以失败而告终。系统性能是应用程序一个重要的指标,应当在整个项目生命周期的初始阶段就开始考虑,它将贯穿于整个生命周期和系统的各个组成部分。Data provider是应用程序和数据源之间的桥梁,主要用于从数据源检索数 阅读全文
posted @ 2011-08-08 15:44 胡以谦 阅读(2117) 评论(3) 推荐(1) 编辑
基于微软并行计算的工作流解决方案 (4) Cancellation, MaxDegreeOfParallelism 和CacheMetadata
摘要:上面的列子我们实现了基于System.Threading.Tasks下面的组件封装的异步并行活动AsyncParallelActivity。为了完善这个例子我们还要实现一些并行工作流活动的基本功能1)设定MaxDegreeOfParallelism (并行数目控制)2)支持Cancellation (子任务取消)3)实现CacheMetaData (性能优化)我们先解释一下为什么需要Asynchronous Programming Model (APM)模式来实现并行,简单理解主要原因是同步执行会在同一个线程里面执行(InProcess),可以说.net framework中的异步编程都是利用 阅读全文
posted @ 2011-06-15 12:43 胡以谦 阅读(2189) 评论(10) 推荐(3) 编辑
基于微软并行计算的工作流解决方案 (3) AsyncParallelActivity
摘要:此篇文章得到微软并行计算平台的Cristina Manu的热心帮助和大力支持,在此表示感谢。本系列的一些观点来自于她的发表的文章。Special thanks to Cristina for her great support on this article. Some ideas of this series come from her paper"WORKFLOW AND PARALLELEXTENSIONS IN .NET FRAMEWORK 4".Cristina Manu is SDET at Microsoft, working for Parallel Com 阅读全文
posted @ 2011-05-28 13:57 胡以谦 阅读(1483) 评论(2) 推荐(0) 编辑
基于微软并行计算的工作流解决方案 (2) Tasked based Parallel Activity
摘要:上一节我们做了个简单的测试证明了Parallel并不是真正意义上的并行工作流,并且分析了它的缺陷。在.net framework 4里面有很多关于并行计算的组件,现在我们就要利用微软TPL(The Task Parallel Library)中的System.Threading.Tasks.Task类型来实现并行的分支。要定制异步工作流活动,我们的新类必须继承于.net WF中的基类AsyncCodeActivity我们重写一下PartDBReplicationActivity,public class PartDBReplicationAsyncActivity : AsyncCodeAct 阅读全文
posted @ 2011-05-25 14:38 胡以谦 阅读(1475) 评论(11) 推荐(2) 编辑
基于微软并行计算的工作流解决方案 (1) Parallel Activity
摘要:在微软WF4中有一个Parallel活动,它可以模拟并行执行,但可惜的是Parallel活动并不是一个真正意义上的并行计算方案,实际上Parallel利用了一个线程去分时间段执行下面的各个分支。今天,我们要做的就是基于Parallel活动和微软.net framework 4中的并行任务Task,构造一个实际的并行工作流。并将它扩展为通用的并行工作流解决方案。我们首先构造一个虚拟的订单处理流程,它包含主要三个活动 (1) 订单初始化(2) 将订单有关信息拷贝到零件数据库(Part DB)(3) 将订单有关信息拷贝到车辆数据库(Vehicle DB)(4) 结束订单传统的做法是构造一个服务,顺序 阅读全文
posted @ 2011-05-25 14:11 胡以谦 阅读(2084) 评论(0) 推荐(1) 编辑
微软objectBuilder解读:构造一个轻量级的Dependency Injection容器(3) Locator
摘要:在上一节我们做了一个简单的容器,基本实现了类型/对象的注册和查询,main里面的代码现在比较稳定,无需再与各种工厂实例打交道,也无需了解各种接口和工厂的对应关系,但是我们实现的容器存在一些问题:1) 每种接口类型只能注册一个对应组件实例(接口的类型就是Dictionary里面的key, key不能重复,微软ObjectBuilder的Locator利用了键/组件Id来注册key)2) Container只有一个层次,微软ObjectBuilder的Locator实现了多层次的链表结构的Container,后面我们再来分析这样的层次结构的Container的优缺点 3) Container里面引 阅读全文
posted @ 2011-05-23 11:44 胡以谦 阅读(520) 评论(2) 推荐(1) 编辑
微软objectBuilder解读:构造一个轻量级的Dependency Injection容器(2) 工厂和容器
摘要:微软objectBuilder解读:构造一个轻量级的Dependency Injection容器(2) 工厂和容器我们利用简单工厂继续对示例进行修改为public class CreatorFactory{ public static IMessageCreator GetCreator() { return new ConsoleMessageCreator(); }}public class ProcessorFactory{ public static IMessageProcessor GetProcessor(string message) { if (message == &quo 阅读全文
posted @ 2011-05-20 14:17 胡以谦 阅读(681) 评论(9) 推荐(1) 编辑
微软objectBuilder解读:构造一个轻量级的Dependency Injection容器(1) 依赖倒置
摘要:Dependency Injection或Inverse of Control(控制反转)设计模式来源于架构设计的一个基本原则: 1. Dependency Inverse Policy (依赖倒置/依赖反转)什么是依赖倒置/依赖反转,看一个简单的例子:一个控制台程序读入用户从键盘输入的字符串输出到屏幕。static void Main(string[] args){ Console.WriteLine("Demo DIP "); string s = Console.ReadLine(); Console.WriteLine("your input is&quo 阅读全文
posted @ 2011-05-20 10:54 胡以谦 阅读(873) 评论(2) 推荐(1) 编辑