博客园 - 胡以谦
uuid:24b78886-0ed1-41c2-8670-e3f31dcf42c4;id=21521
2012-04-11T10:24:57Z
胡以谦
https://www.cnblogs.com/huyq2002/
feed.cnblogs.com
https://www.cnblogs.com/huyq2002/archive/2012/03/22/2411443.html
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数据库加载权限规则。
2012-03-22T05:22:00Z
2012-03-22T05:22:00Z
胡以谦
https://www.cnblogs.com/huyq2002/
【摘要】在上篇讲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数据库加载权限规则。 <a href="https://www.cnblogs.com/huyq2002/archive/2012/03/22/2411443.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/huyq2002/archive/2012/01/19/2326177.html
Asp.net MVC 多语言问题的解决方案 - 胡以谦
上篇文章我们就Asp.net MVC权限问题做了一个较为全面的解决方案,这篇我们就多语言问题进行探讨。全球化在IT行业,具有全球化和本地化特性的计算机软件,可以适应不同的语言,地区差异和目标市场的业务要求。如果一个网站的目标来自 世界不同地区的的用户,这些用户可能会希望看到自己的语言的网站内容。达到全球化,我们的应用程序,将满足以下要求:(1)它可以用不同的语言显示信息内容。(2)自动检测用户的浏览器的语言。(3)允许用户方便的更改系统的默认语言,并且系统记住客户的选择。Culture和UICulture在传统的.net程序中,全球化主要依靠Culture和UICulture两个概念。Cult
2012-01-19T02:48:00Z
2012-01-19T02:48:00Z
胡以谦
https://www.cnblogs.com/huyq2002/
【摘要】上篇文章我们就Asp.net MVC权限问题做了一个较为全面的解决方案,这篇我们就多语言问题进行探讨。全球化在IT行业,具有全球化和本地化特性的计算机软件,可以适应不同的语言,地区差异和目标市场的业务要求。如果一个网站的目标来自 世界不同地区的的用户,这些用户可能会希望看到自己的语言的网站内容。达到全球化,我们的应用程序,将满足以下要求:(1)它可以用不同的语言显示信息内容。(2)自动检测用户的浏览器的语言。(3)允许用户方便的更改系统的默认语言,并且系统记住客户的选择。Culture和UICulture在传统的.net程序中,全球化主要依靠Culture和UICulture两个概念。Cult <a href="https://www.cnblogs.com/huyq2002/archive/2012/01/19/2326177.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/huyq2002/archive/2012/01/17/2324609.html
Asp.net MVC 基于规则的权限设计 - 胡以谦
上面一篇文章我们简单介绍了一个一级菜单的应用。在实际的设计中菜单的的信息基本存储在sitemap的xml文件中,菜单还涉及到权限问题。本章将介绍并举例说明如何设计基于规则的MVC应用程序的安全性。基于角色的授权在计算机系统的安全,基于角色的访问控制(RBAC)是一个系统访问限制授权用户的方法。在一个组织内,角色创建的各项工作职能。来执行某些操作的权限分配给特定的角色。业务上我们必须定义一套针对不同的业务功能的角色体系,例如管理员,数据管理员,普通用户的角色... ...基于规则的访问控制以规则为基础的授权框架,一般利用XML文档存储简单的规则设置,来控制系统访问权限。(也可以存储在数据库中,读
2012-01-17T06:13:00Z
2012-01-17T06:13:00Z
胡以谦
https://www.cnblogs.com/huyq2002/
【摘要】上面一篇文章我们简单介绍了一个一级菜单的应用。在实际的设计中菜单的的信息基本存储在sitemap的xml文件中,菜单还涉及到权限问题。本章将介绍并举例说明如何设计基于规则的MVC应用程序的安全性。基于角色的授权在计算机系统的安全,基于角色的访问控制(RBAC)是一个系统访问限制授权用户的方法。在一个组织内,角色创建的各项工作职能。来执行某些操作的权限分配给特定的角色。业务上我们必须定义一套针对不同的业务功能的角色体系,例如管理员,数据管理员,普通用户的角色... ...基于规则的访问控制以规则为基础的授权框架,一般利用XML文档存储简单的规则设置,来控制系统访问权限。(也可以存储在数据库中,读 <a href="https://www.cnblogs.com/huyq2002/archive/2012/01/17/2324609.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/huyq2002/archive/2012/01/06/2314838.html
Asp.net MVC 利用PartialView 构造自定义菜单 - 胡以谦
在VS2010中利用Asp.net MVC自带的模板生成的菜单是固定的,没办法更改,下面利用PartialView实现简单的一级菜单。1) 修改_Layout.cshtml,在<nav>部分改成@{ Html.RenderAction("Menu", "Home");} <div class="float-right"> <section id="login"> @Html.Partial("_LogOnPartial") </section> &
2012-01-06T08:35:00Z
2012-01-06T08:35:00Z
胡以谦
https://www.cnblogs.com/huyq2002/
【摘要】在VS2010中利用Asp.net MVC自带的模板生成的菜单是固定的,没办法更改,下面利用PartialView实现简单的一级菜单。1) 修改_Layout.cshtml,在<nav>部分改成@{ Html.RenderAction("Menu", "Home");} <div class="float-right"> <section id="login"> @Html.Partial("_LogOnPartial") </section> & <a href="https://www.cnblogs.com/huyq2002/archive/2012/01/06/2314838.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/huyq2002/archive/2011/12/16/2289795.html
Asp.net MVC3 CSS 模板 - 胡以谦
如果你现在正在用asp.net mvc 3 开发web程序,想让自己的页面有比较好的效果但是对CSS不熟悉的话,可以参考以下视频。很简单的设置可以做出比较不错的效果。http://www.youtube.com/watch?v=0O0gi2m_p_o&feature=player_embedded免费模板网址http://www.freecsstemplates.org/我做了几个比较简单的例子示例代码如下:http://files.cnblogs.com/huyq2002/CSSTemplate.zip如果要替换模板1)把下载下来的images拷贝到对应的image目录2)拷贝sty
2011-12-16T02:09:00Z
2011-12-16T02:09:00Z
胡以谦
https://www.cnblogs.com/huyq2002/
【摘要】如果你现在正在用asp.net mvc 3 开发web程序,想让自己的页面有比较好的效果但是对CSS不熟悉的话,可以参考以下视频。很简单的设置可以做出比较不错的效果。http://www.youtube.com/watch?v=0O0gi2m_p_o&feature=player_embedded免费模板网址http://www.freecsstemplates.org/我做了几个比较简单的例子示例代码如下:http://files.cnblogs.com/huyq2002/CSSTemplate.zip如果要替换模板1)把下载下来的images拷贝到对应的image目录2)拷贝sty <a href="https://www.cnblogs.com/huyq2002/archive/2011/12/16/2289795.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/huyq2002/archive/2011/08/18/2144208.html
构建快速数据交易系统的思考(2)利用UnitOfWork和Repository模式-下 - 胡以谦
在上一篇文章中,我们利用Entity framework来针对UnitOfWork,Repository设计模式做了一个非常简单的实现。但是这个实现有很多问题。我们现在逐步解决问题,形成一个具有好的扩展性的方案。新的类图(不包含两个Repository,我们暂时不考虑Repository的问题):现在解释一下新的设计中各个类的职责:名称类型描述IUnitOfWork接口UnitOfWork模式的核心接口,客户端代码将与IUnitOfWork打交道,主要调用Commit方法,例如以下代码:public CustomerInfo Insert(CustomerInfo customer){ ...
2011-08-18T06:49:00Z
2011-08-18T06:49:00Z
胡以谦
https://www.cnblogs.com/huyq2002/
【摘要】在上一篇文章中,我们利用Entity framework来针对UnitOfWork,Repository设计模式做了一个非常简单的实现。但是这个实现有很多问题。我们现在逐步解决问题,形成一个具有好的扩展性的方案。新的类图(不包含两个Repository,我们暂时不考虑Repository的问题):现在解释一下新的设计中各个类的职责:名称类型描述IUnitOfWork接口UnitOfWork模式的核心接口,客户端代码将与IUnitOfWork打交道,主要调用Commit方法,例如以下代码:public CustomerInfo Insert(CustomerInfo customer){ ... <a href="https://www.cnblogs.com/huyq2002/archive/2011/08/18/2144208.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/huyq2002/archive/2011/08/16/2140721.html
构建快速数据交易系统的思考(2)利用UnitOfWork和Repository模式-上 - 胡以谦
摘要:在上一篇文章中,我们比较了ADO.net和其他Data Provider,以提高应用程序数据访问层的性能。下面我们的主题将是采用一些常用的设计模式来使用ORM(通常是N-hibernate和EF)建立数据访问层---UnitOfWork,Repository设计模式和SOA。其实ORM不应该属于这个系列的范围,因为它不会帮助改善我们的第一个应用程序的性能。ORM并不适合快速数据交易系统(要求有很好的实时性)。我们经常会遇到一个数据库事务,在不同的数据表上有操作需要,UnitOfWork结合Repository模式是通用的设计方法,例如:我们需要建立一个订单服务,其中有一个方法名为Crea
2011-08-16T08:00:00Z
2011-08-16T08:00:00Z
胡以谦
https://www.cnblogs.com/huyq2002/
【摘要】摘要:在上一篇文章中,我们比较了ADO.net和其他Data Provider,以提高应用程序数据访问层的性能。下面我们的主题将是采用一些常用的设计模式来使用ORM(通常是N-hibernate和EF)建立数据访问层---UnitOfWork,Repository设计模式和SOA。其实ORM不应该属于这个系列的范围,因为它不会帮助改善我们的第一个应用程序的性能。ORM并不适合快速数据交易系统(要求有很好的实时性)。我们经常会遇到一个数据库事务,在不同的数据表上有操作需要,UnitOfWork结合Repository模式是通用的设计方法,例如:我们需要建立一个订单服务,其中有一个方法名为Crea <a href="https://www.cnblogs.com/huyq2002/archive/2011/08/16/2140721.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/huyq2002/archive/2011/08/08/2131021.html
构建快速数据交易系统的思考(1)使用DataDirect - 胡以谦
<<构建快速数据交易系统的思考>>系列将从软件架构设计的各个层面对提高系统性能方法和策略进行研究。本文是系列“构建快速数据交易系统”的第一篇文章,将就如何从数据访问机制层面来改善系统性能的方法进行探讨。架构决定了应用程序的性能。软件架构师经常相信,只要提高软件基础设施的性能(比如硬件资源)将足以解决一个应用程序的性能挑战,但不幸的是它已被证明在许多实际情况下都以失败而告终。系统性能是应用程序一个重要的指标,应当在整个项目生命周期的初始阶段就开始考虑,它将贯穿于整个生命周期和系统的各个组成部分。Data provider是应用程序和数据源之间的桥梁,主要用于从数据源检索数
2011-08-08T07:44:00Z
2011-08-08T07:44:00Z
胡以谦
https://www.cnblogs.com/huyq2002/
【摘要】<<构建快速数据交易系统的思考>>系列将从软件架构设计的各个层面对提高系统性能方法和策略进行研究。本文是系列“构建快速数据交易系统”的第一篇文章,将就如何从数据访问机制层面来改善系统性能的方法进行探讨。架构决定了应用程序的性能。软件架构师经常相信,只要提高软件基础设施的性能(比如硬件资源)将足以解决一个应用程序的性能挑战,但不幸的是它已被证明在许多实际情况下都以失败而告终。系统性能是应用程序一个重要的指标,应当在整个项目生命周期的初始阶段就开始考虑,它将贯穿于整个生命周期和系统的各个组成部分。Data provider是应用程序和数据源之间的桥梁,主要用于从数据源检索数 <a href="https://www.cnblogs.com/huyq2002/archive/2011/08/08/2131021.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/huyq2002/archive/2011/06/15/2081395.html
基于微软并行计算的工作流解决方案 (4) Cancellation, MaxDegreeOfParallelism 和CacheMetadata - 胡以谦
上面的列子我们实现了基于System.Threading.Tasks下面的组件封装的异步并行活动AsyncParallelActivity。为了完善这个例子我们还要实现一些并行工作流活动的基本功能1)设定MaxDegreeOfParallelism (并行数目控制)2)支持Cancellation (子任务取消)3)实现CacheMetaData (性能优化)我们先解释一下为什么需要Asynchronous Programming Model (APM)模式来实现并行,简单理解主要原因是同步执行会在同一个线程里面执行(InProcess),可以说.net framework中的异步编程都是利用
2011-06-15T04:43:00Z
2011-06-15T04:43:00Z
胡以谦
https://www.cnblogs.com/huyq2002/
【摘要】上面的列子我们实现了基于System.Threading.Tasks下面的组件封装的异步并行活动AsyncParallelActivity。为了完善这个例子我们还要实现一些并行工作流活动的基本功能1)设定MaxDegreeOfParallelism (并行数目控制)2)支持Cancellation (子任务取消)3)实现CacheMetaData (性能优化)我们先解释一下为什么需要Asynchronous Programming Model (APM)模式来实现并行,简单理解主要原因是同步执行会在同一个线程里面执行(InProcess),可以说.net framework中的异步编程都是利用 <a href="https://www.cnblogs.com/huyq2002/archive/2011/06/15/2081395.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/huyq2002/archive/2011/05/28/2060652.html
基于微软并行计算的工作流解决方案 (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
2011-05-28T05:57:00Z
2011-05-28T05:57:00Z
胡以谦
https://www.cnblogs.com/huyq2002/
【摘要】此篇文章得到微软并行计算平台的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 <a href="https://www.cnblogs.com/huyq2002/archive/2011/05/28/2060652.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/huyq2002/archive/2011/05/25/2056641.html
基于微软并行计算的工作流解决方案 (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
2011-05-25T06:38:00Z
2011-05-25T06:38:00Z
胡以谦
https://www.cnblogs.com/huyq2002/
【摘要】上一节我们做了个简单的测试证明了Parallel并不是真正意义上的并行工作流,并且分析了它的缺陷。在.net framework 4里面有很多关于并行计算的组件,现在我们就要利用微软TPL(The Task Parallel Library)中的System.Threading.Tasks.Task类型来实现并行的分支。要定制异步工作流活动,我们的新类必须继承于.net WF中的基类AsyncCodeActivity我们重写一下PartDBReplicationActivity,public class PartDBReplicationAsyncActivity : AsyncCodeAct <a href="https://www.cnblogs.com/huyq2002/archive/2011/05/25/2056641.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/huyq2002/archive/2011/05/25/2056603.html
基于微软并行计算的工作流解决方案 (1) Parallel Activity - 胡以谦
在微软WF4中有一个Parallel活动,它可以模拟并行执行,但可惜的是Parallel活动并不是一个真正意义上的并行计算方案,实际上Parallel利用了一个线程去分时间段执行下面的各个分支。今天,我们要做的就是基于Parallel活动和微软.net framework 4中的并行任务Task,构造一个实际的并行工作流。并将它扩展为通用的并行工作流解决方案。我们首先构造一个虚拟的订单处理流程,它包含主要三个活动 (1) 订单初始化(2) 将订单有关信息拷贝到零件数据库(Part DB)(3) 将订单有关信息拷贝到车辆数据库(Vehicle DB)(4) 结束订单传统的做法是构造一个服务,顺序
2011-05-25T06:11:00Z
2011-05-25T06:11:00Z
胡以谦
https://www.cnblogs.com/huyq2002/
【摘要】在微软WF4中有一个Parallel活动,它可以模拟并行执行,但可惜的是Parallel活动并不是一个真正意义上的并行计算方案,实际上Parallel利用了一个线程去分时间段执行下面的各个分支。今天,我们要做的就是基于Parallel活动和微软.net framework 4中的并行任务Task,构造一个实际的并行工作流。并将它扩展为通用的并行工作流解决方案。我们首先构造一个虚拟的订单处理流程,它包含主要三个活动 (1) 订单初始化(2) 将订单有关信息拷贝到零件数据库(Part DB)(3) 将订单有关信息拷贝到车辆数据库(Vehicle DB)(4) 结束订单传统的做法是构造一个服务,顺序 <a href="https://www.cnblogs.com/huyq2002/archive/2011/05/25/2056603.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/huyq2002/archive/2011/05/23/2054189.html
微软objectBuilder解读:构造一个轻量级的Dependency Injection容器(3) Locator - 胡以谦
在上一节我们做了一个简单的容器,基本实现了类型/对象的注册和查询,main里面的代码现在比较稳定,无需再与各种工厂实例打交道,也无需了解各种接口和工厂的对应关系,但是我们实现的容器存在一些问题:1) 每种接口类型只能注册一个对应组件实例(接口的类型就是Dictionary里面的key, key不能重复,微软ObjectBuilder的Locator利用了键/组件Id来注册key)2) Container只有一个层次,微软ObjectBuilder的Locator实现了多层次的链表结构的Container,后面我们再来分析这样的层次结构的Container的优缺点 3) Container里面引
2011-05-23T03:44:00Z
2011-05-23T03:44:00Z
胡以谦
https://www.cnblogs.com/huyq2002/
【摘要】在上一节我们做了一个简单的容器,基本实现了类型/对象的注册和查询,main里面的代码现在比较稳定,无需再与各种工厂实例打交道,也无需了解各种接口和工厂的对应关系,但是我们实现的容器存在一些问题:1) 每种接口类型只能注册一个对应组件实例(接口的类型就是Dictionary里面的key, key不能重复,微软ObjectBuilder的Locator利用了键/组件Id来注册key)2) Container只有一个层次,微软ObjectBuilder的Locator实现了多层次的链表结构的Container,后面我们再来分析这样的层次结构的Container的优缺点 3) Container里面引 <a href="https://www.cnblogs.com/huyq2002/archive/2011/05/23/2054189.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/huyq2002/archive/2011/05/20/2051940.html
微软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
2011-05-20T06:17:00Z
2011-05-20T06:17:00Z
胡以谦
https://www.cnblogs.com/huyq2002/
【摘要】微软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 <a href="https://www.cnblogs.com/huyq2002/archive/2011/05/20/2051940.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/huyq2002/archive/2011/05/20/2051782.html
微软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
2011-05-20T02:54:00Z
2011-05-20T02:54:00Z
胡以谦
https://www.cnblogs.com/huyq2002/
【摘要】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 <a href="https://www.cnblogs.com/huyq2002/archive/2011/05/20/2051782.html" target="_blank">阅读全文</a>