2013年5月10日

NET:工作流中如何动态解析路由规则 之 T4 + 动态编译

摘要: 背景在上篇文章中我介绍了如何用动态语言解释器执行路由规则,有很多朋友都给出了他们的选项,如下:集成解释器(Iron、Javascript等)。动态编译。解析为Lamda表达式。模板引擎。因为我觉得动态编译很有意思,结合T4可能会更舒服,这篇文章就用这个思路重新实现一下如何解析路由规则。思路T4 + 动态编译 = 无限可能如何使用动态编译解析这条规则(“LeaveDays>=5 && LeaveType=='病假'”)呢?思路有很多种,我立马想到的的有两种,将Leave的属性解析为某个方法的本地变量或方法所有类型的成员变量,下面就是动态编译后的方法:1 pu 阅读全文

posted @ 2013-05-10 09:03 幸福框架 阅读(2369) 评论(16) 推荐(5) 编辑

2013年5月9日

.NET:工作流中如何动态解析路由规则,你肯定用得着

摘要: 背景做流程引擎最终避免不了一个问题:如何动态解析路由规则?几乎所有的审批流程都要求支持条件路由,比如:请假天数大于xx天时某个领导审批,否则其它人审批。常见的解决方法有:一、动态编译;二、解释执行。这篇文章就讲解如何使用Javascript引擎解释执行。思路静态语言集成动态语言解释器这种模式,在业界已经有很多惯例,如:很多C++开发者都用Lua在运行时修改配置。因为我对Javascript比较熟悉,所以准备搜索一下Javascript的解释器。在NuGet中用Javascript关键字进行搜索,搜索到了第2页就找到了一个解释器,安装一下,准备尝试吧。实现代码下载:http://yunpan.c 阅读全文

posted @ 2013-05-09 06:51 幸福框架 阅读(3217) 评论(26) 推荐(9) 编辑

2013年5月8日

NodeJs:基于Provider模式的推送服务器实现

摘要: 背景企业应用中会有这样的需求,显示最新的xxx信息,如:销售信息、考核信息和公告信息等等。大的方向有两种模式:push和polling。因为刚学NodeJs,因此就用NodeJs简单的实现一下。思路整个系统可以分为两部分:一、通信;二、最新消息获取。通信部分可以采用:http://socket.io/。最新消息获取部分为了支持一定的可扩展性,可以定义一个Provider接口,接口签名如下:1、method:getFreshMessage(callback),示例:1 provider.getFreshMessage(function (message) {2 socket.emit(' 阅读全文

posted @ 2013-05-08 00:36 幸福框架 阅读(2875) 评论(5) 推荐(5) 编辑

2013年5月7日

NodeJs:module.exports 和 exports 解惑

摘要: 背景NodeJs引入了模块化机制,只有显式声明为导出的对象才会被外部访问到,导出语法有两种:module.exports 和 exports,这两种到底有何区别呢?这是我今天试验的目的。试验材料module1.js 1 this.hi = function () { 2 console.log('hi in module1'); 3 }; 4 5 exports.say = function () { 6 console.log('haha in module1'); 7 }; 8 9 module.exports.hello = function () {10 阅读全文

posted @ 2013-05-07 18:18 幸福框架 阅读(1854) 评论(5) 推荐(0) 编辑

NodeJs:“require” 函数详解,懂这个你就懂NodeJs了

摘要: 背景这篇文基本都是反对的,反对的很有道理,不是说我这篇文章的内容错误,因为这篇文章是我在健身房学习node的时候写的,这些知识都很粗糙,后来发现官方的稳定更详细:地址:http://nodejs.org/api/modules.html。一直想在服务器端使用一种语言,ruby、phthon和php也都学过,对于我来说使用这三种语言需要一定的上下文切换成本。正在我纠结的时候,NodeJs出现了,而且我自信对Javascript还是比较熟悉的,因此就准备学习一下NodeJs。这样我的语言组合为:C#、Javascript和NodeJs,全是C Style,几乎没有切换成本。NodeJs网上关于No 阅读全文

posted @ 2013-05-07 14:04 幸福框架 阅读(81917) 评论(9) 推荐(0) 编辑

ExtJS4.2:Sencha Cmd 介绍

摘要: 背景本来不打算写这篇文章的,但是按照官方文档的介绍,还是会出现一些问题。该文章就是简洁的介绍一下如何使用Sencha Cmd及其注意事项。官方文档Introduction to Sencha CmdUsing Sencha Cmd with Ext JS 4.2+Compiler-Friendly Code GuidelinesWorkspaces in Sencha Cmd环境要求Java Run-time Environment or JRE,版本>=6.0。Ruby,不要下载最新版,Ruby 1.9.3-p392可以。Sencha Cmd。Ext JS SDK。创建一个worksp 阅读全文

posted @ 2013-05-07 06:44 幸福框架 阅读(4754) 评论(6) 推荐(1) 编辑

2013年5月6日

.NET:Microsoft.Practices.ServiceLocation 之 动态单例模式

摘要: 背景框架开发中,经常会用到“单例模式”,但是传统的单例模式不支持多态和运行时变化,在关注测试的今天,这种模式是不可行的。为了应对这种情况,微软又提供了另外一种模式,暂且将其称为“动态单例模式”。 我也想统一我的框架对单例的使用模式,因此就写了这篇文章。Microsoft.Practices.ServiceLocation 核心代码看完代码,如何使用这种模式就不用我多介绍了。IServiceLocatorView Code 1 using System; 2 using System.Collections.Generic; 3 4 namespace Microsoft.Practices.. 阅读全文

posted @ 2013-05-06 12:30 幸福框架 阅读(6570) 评论(14) 推荐(1) 编辑

DDD:如何保证聚合的一致性

摘要: 聚合一致性从时间维度考虑,一致性分为“实时一致性”和“最终一致性”。在企业应用中,多数情况都是使用实时一致性。在WEB应用中,为了最大限度的提高系统的吞吐量,经常使用最终一致性,如:博客园的积分和排名计算。从聚合的维度考虑,一致性分为“内部一致性”和“外部一致性”。内部一致性是指一个聚合实例本身状态的一致性。外部一致性是指多个聚合实例之间状态的一致性。代码示例需求订单要记录订单原始总额。(内部一致性)订单有两种状态,未提交和提交,不能修改已提交的订单。(内部一致性)订单要记录订单的总额,总额 = 原始总额 * 折扣,如果客户是VIP就打8折。(外部一致性)客户信用评级。(最终一致性)类图核心代 阅读全文

posted @ 2013-05-06 00:06 幸福框架 阅读(2612) 评论(3) 推荐(1) 编辑

2013年5月5日

.NET:在ASP.NET中如何进行IP限制

摘要: 背景为了增强系统的安全,很多信息系统都提供了“IP限制”功能。功能虽然简单,但是从业五年来从来没有是实现过,因此就以博文的形式记录下来。思路实现应该很简答,功能可以分解为如下这三个问题:判断当前请求是否应用IP限制,有些请求不用应用IP限制的。当前客户IP是否包含在限制列表中。如何以AOP的形式应用IP限制1和2可以抽象为一个接口 1 using System; 2 3 namespace IpLimit.Codes 4 { 5 interface IIpLimitService 6 { 7 bool IsInExcludeUrl(string url); 8... 阅读全文

posted @ 2013-05-05 08:37 幸福框架 阅读(2705) 评论(8) 推荐(2) 编辑

2013年5月4日

.NET:可扩展的 “密码强度” 代码示例

摘要: 场景在企业应用中,我们经常需要限制用户的密码强度。问题如何以可扩展的方式支持不同企业应用的密码强度要求?思路算法思路:密码强度 = 求和(每个规则的强度 * 权重)。可扩展思路:以聚合的形式管理各种规则,让用户可以扩展自定义规则。实现设计类图示例代码PasswordStrengthService 1 using System; 2 using System.Collections.Generic; 3 using System.Linq; 4 using System.Text; 5 using System.Threading.Tasks; 6 7 namespace PasswordSt. 阅读全文

posted @ 2013-05-04 07:45 幸福框架 阅读(1953) 评论(10) 推荐(2) 编辑

2013年5月3日

.NET:在WEB程序中小心使用 “ThreadStatic”

摘要: 场景在WEB系统开发中,我们经常面对这样的需求:如何在一个请求中共享数据或对象实例?之前我都会用HttpContext.Current.Items。然而有一天我发现了两个事实:一、每个请求都是在一个线程中执行的;二、[ThreadStatic]可以标注某个静态字段为每个线程提供独立的存储。面对这两个发现,我得出了这个结论:可以用[ThreadStatic]替换HttpContext.Current.Items。问题可以用[ThreadStatic]替换HttpContext.Current.Items吗?实验实验素材 1 using System; 2 using System.Collect 阅读全文

posted @ 2013-05-03 13:17 幸福框架 阅读(3849) 评论(18) 推荐(5) 编辑

TDD:MS自带的单元测试 之 线程模型和执行顺序

摘要: 背景我一直在呼喊“不要靠假设编程”,可是我却常常这么做。我用单元测试就是一种基于假设进行编程的反面教材,今天就下决心弄明白它。主要想弄明白两个问题:执行的所有单元测试方法的线程模型,是单线程?是多线程?执行的一个类型的所有单元测试方法会创建一个实例?还是一个单元测试方法创建一个实例?执行的所有单元测试方法的执行顺序,哪些是随机?哪些是固定?实验实验材料实验结果 1 第1步,AssemblyInitialize in Thread:16,the unittest hashcode is: 2 第2步,单元测试类C__ClassInitialize in Thread:16,the unittes 阅读全文

posted @ 2013-05-03 00:14 幸福框架 阅读(1398) 评论(6) 推荐(5) 编辑

2013年5月2日

设计原则:为什么需要“IOC”

摘要: 背景知识控制反转反转传统的控制逻辑,常见的传统控制逻辑有:一、客户类型负责创建依赖。反转后的结构是:由IOC负责创建。二、客户类型调用框架。反转后的结果是:框架调用客户类型。依赖注入客户类型需要显式的声明其依赖,不要在客户类型中管理依赖的创建。IOC中文可以翻译为:控制反转容器或依赖注入容器。参考资料Inversion of Control Containers and the Dependency Injection patternInversionOfControl设计原则:我是如何使用“依赖注入”的.NET:在ASPX、ASHX和MVC中使用IOC容器(菜鸟必看)DDD:管理“工作单元实 阅读全文

posted @ 2013-05-02 15:03 幸福框架 阅读(4795) 评论(11) 推荐(1) 编辑

Javascript:继续实现继承,支持:this.callParent(arguments)

摘要: 背景在上篇文章中,我简单的介绍了如何实现单继承。只是在子类中调用父类方法的方式让人感觉不是很爽:1 var Animal = function () {2 Animal.super().constructor.apply(this, arguments);3 };今天这篇文章的目的就是简化这种调用方式,期望的调用方式如下:1 var Animal = function () {2 this.callParent(arguments);3 };如何实现callParent呢?只要做到如下几点,实现callParent就不是问题了,要求如下:callParent必须知道哪个方法调用... 阅读全文

posted @ 2013-05-02 06:35 幸福框架 阅读(8799) 评论(4) 推荐(0) 编辑

2013年5月1日

Javascript:图形解释如何实现“ 单继承 、多继承 、掺入 “

摘要: 前提知识Javascript:必须知道的Javascript知识点之“原型链”Javascript:必须知道的Javascript知识点之“this指针”Javascript:用 "脑图软件" 学习 “面向对象”几个内置核心方法学习代码示例 1 var Base = function (name) { 2 this.name = name; 3 }; 4 5 var base = new Base(); 6 7 console.log((base instanceof Object));//true 8 console.log((base instanceof Base)) 阅读全文

posted @ 2013-05-01 09:19 幸福框架 阅读(2297) 评论(3) 推荐(1) 编辑

2013年4月30日

Javascript:用 "脑图软件" 学习 “面向对象”

摘要: 面向对象面向对象思维导图默认情况下,Javascript支持如下特性(红色代表默认支持):通过框架层面的支持,Javascript可以支持所有这些特性。重点概念介绍鸭子类型如果一个东西(对象)看起来像鸭子(符合接口定义),走起路来也像鸭子(行为也符合期望),那么这个东西就是鸭子。如所有动态语言一样,Javascript天生就支持“鸭子类型”。从“多态”的维度考虑,Javascript是通过“鸭子类型”支持的“多态”。代码示例 1 var Rectangle = function (name) { 2 this.name = name; 3 }; 4 5 Rectangle.proto... 阅读全文

posted @ 2013-04-30 11:01 幸福框架 阅读(2206) 评论(11) 推荐(2) 编辑

2013年4月29日

.NET:在ASPX、ASHX和MVC中使用IOC容器(菜鸟必看)

摘要: 前言程序开发的一个良好原则就是:“将使用和创建分开”。5年前有多少人采用这种风格呢?几乎没有。在IOC流行甚至泛滥的今天,还有一些团队没有使用IOC容器,有些是由于历史原因,有些是由于团队的文化。没有采用IOC的团队,找个机会拥抱一下吧。我一直在用IOC容器,在此介绍一下如何将IOC集成到WebForm和WebMvc的应用系统中。自动注入到ASPX和ASHX框架支持 1 using System; 2 using System.Collections.Generic; 3 using System.Linq; 4 using System.Text; 5 using System.Thread 阅读全文

posted @ 2013-04-29 09:59 幸福框架 阅读(2843) 评论(4) 推荐(4) 编辑

2013年4月28日

.NET:自动将请求参数绑定到ASPX、ASHX和MVC(菜鸟必看)

摘要: 前言刚开始做AJAX应用的时候,经常要手工解析客户端传递的参数,这个过程极其无聊,而且代码中充斥着:Request["xxx"]之类的代码。这篇文章的目的就是告诉初学者如何自动将客户端用AJAX发送的参数自动绑定为强类型的成员属性或方法参数。自动绑定到ASPX和ASHX框架支持 1 using System; 2 using System.Collections.Generic; 3 using System.Linq; 4 using System.Text; 5 using System.Threading.Tasks; 6 7 namespace Happy.Web 阅读全文

posted @ 2013-04-28 10:24 幸福框架 阅读(3359) 评论(29) 推荐(13) 编辑

2013年4月27日

ExtJS4.2:AJAX提交数据的三种方式,80%人都没用过第三种

摘要: 参考资料HTTP:https://zh.wikipedia.org/wiki/HTTPMIME:https://zh.wikipedia.org/wiki/MIME国内博文:http://blog.csdn.net/gueter/article/details/1524447第一种方式示例代码 1 var data = { 2 name: '段光伟', 3 email: 'shijiucha@qq.com' 4 }; 5 6 Ext.Ajax.request({ 7 url: '../handlers/GetData.ashx', 8 metho 阅读全文

posted @ 2013-04-27 16:32 幸福框架 阅读(5820) 评论(6) 推荐(3) 编辑

算法:“森林的遍历” 在 “企业应用” 的常见场景

摘要: 森林的两种遍历方法前序(先根)遍历森林找到森林中的所有的根结点。前序遍历森林中的每个根节点对应的树。后序(后根)遍历森林找到森林中的所有的根结点。后序遍历森林中的每个根节点对应的树。树的两种遍历方法前序(先根)遍历树访问树的根结点。找到根节点的所有子节点。前序遍历每个子节点。后序(后根)遍历树找到根节点的所有子节点。后续序遍历每个子节点。访问树的根结点。企业应用场景 之 前序遍历效果图代码示例 1 /// <reference path="Ext/ext-all-debug-w-comments.js" /> 2 3 function arrayToTree(a 阅读全文

posted @ 2013-04-27 07:29 幸福框架 阅读(2105) 评论(11) 推荐(1) 编辑

导航

我要啦免费统计