上一页 1 ··· 18 19 20 21 22 23 24 25 26 ··· 28 下一页

2013年5月29日

.NET:防止并发修改 之 离线乐观锁代码示例(菜鸟必读)

摘要: 背景小明和小强同时签出了源代码,如果小强先提交,那么提交成功是合理的,接着小明提交了修改,这时源代码服务器就会告诉小明有人在他读取之后做了修改,问他如何处理,源代码服务器会让小明把修改合并后再提交。这就是乐观锁策略,当然源代码服务也可以配置为悲观锁以避免并行修改。合理的规避并发修改是企业应用中不能回避的问题,但现实场景是,很多团队都回避这个问题。今天我介绍一下如何使用离线乐观锁处理并发修改。相关文章:再谈在线悲观锁、离线悲观锁、在线乐观锁和离线乐观锁。思路CAS:Compare And Swap,只有当要修改的值在我读取后没有被修改,才会被交换(修改)。CAS是多线程领域的术语,比如:无锁的环 阅读全文

posted @ 2013-05-29 08:26 幸福框架 阅读(3844) 评论(27) 推荐(4) 编辑

2013年5月28日

CQRS:实战最简单的CQRS

摘要: 背景有些刚接触CQRS的朋友容易被Event Sourcing带到沟里去,其实CQRS和Event Sourcing没有直接的关系,本篇文章我就介绍一种不用Event Sourcing的CQRS。最简单的CQRS架构架构图关键思路一、Comamnd和Query采用完全不同的组织思路。二、Command执行后如果希望返回数据给UI,同步的使用Query进行查询。三、Command和Query采用一个数据库。代码示例下载地址:http://yunpan.cn/Q5bkD3wmVXBpv (访问密码:9c16)。运行效果主要代码TestDynamicQueryController.cs 1 usin 阅读全文

posted @ 2013-05-28 08:27 幸福框架 阅读(9858) 评论(14) 推荐(3) 编辑

2013年5月27日

CQRS:CQRS + DDD + MDP 实现快速应用程序开发

摘要: 背景企业需要“快速的”和“高质量的”交付应用,采用传统的三层架构+数据驱动开发可以带来快速交付,但是高质量视乎无从保证,这篇文章我谈谈我准备如何应对这种需求。思路CQRS + DDD + MDP(元数据驱动编程)看图解说从读和写的角度思考一些问题。UI层的编码量占据了整体的50%-80%(我自己的经验)之间。UI层的主要目的是展示,即读取。UI层团队的开发人数比例不符合他们的编码量(企业应该加大对UI层人才的投资和引进)。UI层团队的编码水平相对较差(我自己的经验,我见过好的UI人员,月薪2W)。UI层在代码级别相对容易抽象和重用(企业应用)。UI是用户关注的重点。写操作是实现读取的前提,(数 阅读全文

posted @ 2013-05-27 08:39 幸福框架 阅读(5321) 评论(10) 推荐(3) 编辑

2013年5月26日

DDD:Evans 开始关注NOSQL + 用户体验(转载)

摘要: 原文链接:http://dddcommunity.org/events/ddd-summit-2012/。Left to right: Rinat Abdullin, Jimmy Nilsson, Vaughn Vernon, Cameron Purdy, Dan Berg Johnsson, Randy Stafford, Daniel Gackle, Patrik Fredriksson, Eric Evans, Paul Rayner, Alberto Brandolini, Rebecca Wirfs-Brock, Andreas Brink, and our photographer 阅读全文

posted @ 2013-05-26 23:55 幸福框架 阅读(738) 评论(0) 推荐(0) 编辑

2013年5月25日

幸福框架:元数据驱动界面,支持三级配置(生成期、运行期和开发期)

摘要: 背景信息系统开发中,配置表格、树和表单的过程占据了开发的近一半的时间(可能更多),如果要支持运行期间修改配置,如:修改表格布局、表单布局、查询面板,就会更加花费时间。这篇文章我就介绍一下如何使用元数据驱动UI的开发。思路支持三级元数据配置:生成期配置:使用代码生成器生成,只能由生成器修改。运行期配置:使用配置修改器修改,运行期由维护或实施人员修改。开发期配置:由开发人员维护。三级配置,由上到下优先级越来越高,下级继承上级同时覆盖上级。如下图所示:实现配置 + 代码生成器生成器项目结构generated/Metadata.ejs生成后的应用项目结构user/app/view/Grid.js 1 阅读全文

posted @ 2013-05-25 08:54 幸福框架 阅读(3373) 评论(1) 推荐(2) 编辑

2013年5月24日

CQRS:Introduction to CQRS(转载)

摘要: 原文地址:http://www.codeproject.com/Articles/555855/Introduction-to-CQRS。What is CQRSCQRS means Command Query Responsibility Segregation. Many people think that CQRS is an entire architecture, but they are wrong. CQRS is just a small pattern. This pattern was first introduced by Greg Young and Udi Dahan 阅读全文

posted @ 2013-05-24 23:56 幸福框架 阅读(982) 评论(0) 推荐(1) 编辑

2013年5月23日

CQRS:CQRS+AJAX架构 之 查询(Q)模型设计

摘要: 背景准备采用CQRS架构,之前也简单的应用过(只是把读和写在程序级别进行了分离),这篇文章是我最近几天的思考,写下来希望大家多提意见。这篇文章不会涉及Command端的设计,重点关注如何设计查询。真心的希望大家看完后能给出你们的意见和想法。什么是CQRSCQRS:Command Query Responsibility Separation。我喜欢职责分离,这也是我采用这种架构的原因,确实能带来单一职责的优点。简单的CQRS复杂的CQRSCQRS的常见查询需求下面是系统的一些查询需求:查询面板高级查询数据行级别的权限如:个人、部门、分公司、品种。固定约束如:启用、合法、租户ID。需求总结CQR 阅读全文

posted @ 2013-05-23 08:57 幸福框架 阅读(2985) 评论(14) 推荐(3) 编辑

2013年5月22日

幸福框架:可扩展的应用程序 “启动引导” 框架

摘要: 背景应用程序引导经常要做如下这些事情:动态加载DLL(或各种插件)。注册IOC容器。设置其他全局配置。尤其以注册IOC容器的代码最烦人,看一个我昨天写的烦人代码: 1 using System; 2 using System.Collections.Generic; 3 using System.Linq; 4 using System.Text; 5 using System.Threading.Tasks; 6 using System.Threading; 7 8 using Microsoft.Practices.ServiceLocation; 9 using Mi... 阅读全文

posted @ 2013-05-22 08:35 幸福框架 阅读(1991) 评论(10) 推荐(3) 编辑

2013年5月21日

NodeJs:基于Node的代码生成器 之 入门教程

摘要: 背景为了方便团队和其它朋友使用我开发的这款代码生成器,特此写一篇入门教程。环境要求Node:http://nodejs.org/。.Net4.5:http://www.microsoft.com/zh-cn/download/details.aspx?id=30653。happy.node:http://happy.codeplex.com/SourceControl/latest。目录结构模板文件和最终生成的代码文件生成程序app.js 1 var _ = require('underscore'); 2 3 var DatabaseSchemaReader = requir 阅读全文

posted @ 2013-05-21 18:57 幸福框架 阅读(7039) 评论(8) 推荐(2) 编辑

幸福框架:发布订阅模式 之 同步订阅、异步订阅和离线订阅

摘要: 背景事件驱动解除了发布者和订阅者之间的耦合,在UI层面,我明经常采用这种编程理念。服务器端最近也开始流行起来了,我也一直小范围的在采用。今天就跟大家分享一下我写的一个小框架。框架原理一张图片胜过前言万语。代码示例下载地址:http://yunpan.cn/Q5SUcWdiA2mmk。项目结构关键代码TestEvent.cs 1 using System; 2 using System.Collections.Generic; 3 using System.Linq; 4 using System.Text; 5 using System.Threading.Tasks; 6 7 using . 阅读全文

posted @ 2013-05-21 06:43 幸福框架 阅读(2952) 评论(22) 推荐(4) 编辑

2013年5月20日

技术人生:真的要注意身体了,坚持锻炼

摘要: 有生以来第一次感到身体这么难受,前半夜冷的不行,喝完柴胡口服液后热的不行。估计是这一周都没去健身房,每晚写代码写久了导致的。坚持锻炼,不希望没有成就就当机了。 阅读全文

posted @ 2013-05-20 03:32 幸福框架 阅读(255) 评论(1) 推荐(0) 编辑

2013年5月19日

.NET:再谈在线悲观锁、离线悲观锁、在线乐观锁和离线乐观锁。

摘要: 在线:读取和修改在一个线程中。离线:读取和修改不在一个线程中。在线悲观锁概念:A和B依次读取了数据,先读取的执行修改会成功,后读取的执行修改回失败。思路:事务隔离级别或数据库锁。离线悲观锁概念:A打开了编辑界面,B就不能打开编辑界面了。思路:自己实现锁。在线乐观锁概念:A和B依次读取了数据,先执行修改的会成功,后执行修改的会失败。思路:版本字段。离线乐观锁概念:A和B依次打开了编辑界面,先执行修改的会成功,后执行修改的会失败。思路:版本字段。备注针对乐观锁和悲观锁,后面我会详细写文章。 阅读全文

posted @ 2013-05-19 22:27 幸福框架 阅读(1106) 评论(2) 推荐(1) 编辑

2013年5月18日

技术人生:坚持,每日一博

摘要: 由于种种原因,周六和周日的博客又没有写,回忆一下,不是没有时间写,也不是没有内容写,主要还是懒惰。坚持下去,老段!!! 阅读全文

posted @ 2013-05-18 20:37 幸福框架 阅读(212) 评论(0) 推荐(0) 编辑

2013年5月17日

NodeJs:Happy代码生成器,重构了代码,更新了文档,完善了示例,欢迎下载使用

摘要: 背景利用现有的开源框架,做了一个代码生成工具,因为以后都打算用这个工具,就重构了代码、更新了文档和完善了示例。这篇文章简单介绍一下工具的组成和API文档的使用。一则:为了我的团队成员;二则:为了让需要的朋友可以下载使用。为什么要使用这个工具简单:核心就2个类+四个API方法、asp的模板语法(ejs)、为了方便代码生成,数据库元数据做了预处理(如:可空类型、C#类型的字符串表示)。快捷:比如:你按照三层架构定义了3个模板,且你的数据库有10个表,一个方法调用会生成30个文件(目标可以自定义)。文档齐全:中文文档,不懂英文也OK。容易DIY:没有限制、没有升级。元数据定义方便:动态类型,想咋弄咋 阅读全文

posted @ 2013-05-17 00:02 幸福框架 阅读(2318) 评论(14) 推荐(2) 编辑

2013年5月16日

NodeJs:module.filename、__filename、__dirname、process.cwd()和require.main.filename 解惑

摘要: 背景一直存在一个疑惑,require()坐标路径是啥?fs.readFile()的坐标路径又是啥?总之,需要路径的方法,我总有这样的疑问。今天就实验一下,给弄清楚。实验实验素材app.js 1 //执行 node E:\node_study\file_path_study\app.js 2 3 console.log('*** app start ***'); 4 5 console.log('*** module.filename = ' + module.filename + ' ***'); 6 console.log('*** _ 阅读全文

posted @ 2013-05-16 06:47 幸福框架 阅读(8027) 评论(1) 推荐(2) 编辑

2013年5月15日

NodeJs:用 nodejs + edge + ejs + c#,打造属于自己的代码生成器(下篇)

摘要: 背景最近有一个任务,为第三放系统的需要公开WCF服务接口,需求就是:根据需要访问的数据(表)和访问使用的协议自动生成WCF项目。本来打算用T4的,因为最近刚好开始学习Node,就用Node实现了一个简答的代码生成器工具。上篇地址:http://www.cnblogs.com/happyframework/archive/2013/05/11/3072387.html。因为如何实现已经在上篇文章做了介绍,这篇文章就介绍一下如何使用。如何使用?第一步:环境要求Node + .Net4.5 + 我的项目第二步:文件夹结构test_database:存放测试数据库(可以自定义)。templates:存 阅读全文

posted @ 2013-05-15 17:13 幸福框架 阅读(2185) 评论(2) 推荐(1) 编辑

2013年5月14日

.NET:可扩展的单据编号生成器 之 基于缓冲区的顺序号

摘要: 背景我在上篇文章“.NET:可扩展的单据编号生成器 之 顺序号(防止重复)”中介绍了如何使用“种子表”和“悲观锁”解决顺序号的问题。昨天找朋友讨论,说这种速度不够高,今天就稍微改进一下,引入一个内存缓冲区,提高生成的速度。思路引入内存缓冲区后,顺序号的生产流程变为:在内存中维护一个顺序号区间,在这个区间内,就直接查内存,否则更新种子表并重新更新内存区间。还是直接看代码吧。实现代码下载:http://yunpan.cn/Q5jj5yedRAtk5。SeedCodeRuleProvider.cs 1 using System; 2 using System.Collections.Generi.. 阅读全文

posted @ 2013-05-14 08:39 幸福框架 阅读(2411) 评论(19) 推荐(3) 编辑

2013年5月13日

.NET:可扩展的单据编号生成器 之 顺序号(防止重复)

摘要: 背景我在上篇文章“.NET:可扩展的单据编号生成器 + 简单的解释器”中介绍了一个简单的单据编号框架。有朋友留言问如何实现“顺序号,且不能重复”,本篇文章就针对这个问题用上篇介绍的框架进行实现。思路顺序号 = 上次顺序号 + 步长根据上面的公式,问题可以化解为:如何获取上次顺序号?获取上次顺序号有两种方式:扫描单据表,找出最新的一条记录。引入种子表,种子表记录了最新的顺序号。因为生成的顺序号不能重复,这里就有了并发的要求,为了最大限度的提高并发性,我选择2(引入种子表)。并发处理可以选择:悲观锁或乐观锁,这里为了简单,我选择悲观锁。实现代码下载:http://yunpan.cn/Q5KMUTA 阅读全文

posted @ 2013-05-13 00:03 幸福框架 阅读(3852) 评论(12) 推荐(6) 编辑

2013年5月12日

.NET:可扩展的单据编号生成器 + 简单的解释器

摘要: 背景在企业应用中单据编号的自定义是一个很常见的需求,能不能抽象一个通用的框架呢?之前写个一篇自定义密码强度的博文,感觉他们两个思路应该很相似。就让我们试试吧。思路这里的难点在于实现"解释器",比如将"前缀_"解释为“工号生成器”,而且“解释器”的“规则”允许动态增加。实现代码下载类图核心代码CodeRuleGenerator.cs 1 using System; 2 using System.Collections.Generic; 3 using System.Linq; 4 using System.Text; 5 using System.Thre 阅读全文

posted @ 2013-05-12 09:38 幸福框架 阅读(3161) 评论(19) 推荐(4) 编辑

2013年5月11日

NodeJs:用 nodejs + edge + ejs + c#,打造属于自己的代码生成器

摘要: 背景自从第一次接触代码生成器,就爱上她了。用过ComeSmith和T4,这些代码生成器确实很优秀,为何我还要DIY自己的呢?有如下几点理由:T4的元数据定义太麻烦,还要定义强类型的元数据类型。一直希望用一款动态语言作为工具。今天就介绍一下,如何用 nodejs + edge + ejs + c#,打造属于自己的代码生成器。核心外部库介绍:edge:允许在nodejs中调用c#代码。ejs:基于nodejs的模板引擎。思路常见的代码生成器都支持从数据库生成代码,因此思路可以分为两大步骤:一、读取数据库元数据;二、基于模板生成代码。读取数据库元数据可以用 edge + c#的一个开源类库。基于模板 阅读全文

posted @ 2013-05-11 09:15 幸福框架 阅读(4075) 评论(10) 推荐(1) 编辑

上一页 1 ··· 18 19 20 21 22 23 24 25 26 ··· 28 下一页

导航

我要啦免费统计