2013年4月11日

OSGI:从面向接口编程来理解OSGI

摘要: 接口的种类(API和SPI)从接口的被调用方式和被实现方式看,接口有API和SPI之分,见下图:API和SPI在物理组织方式上的建议(可根据情况选择其一)位于独立的Assembly中。位于调用方的Assembly中。API和SPI的演化方式:API可以增加功能,最好保持稳定。SPI可以减少功能,最好保持稳定。API和SPI的交互方式见下图:如何实例化接口(避免不了的问题)简单工厂(三种工厂模式都引入了新的抽象,因此最终还是要用简单工厂创建抽象的。适用于根据上下文实例化不同实例的场景)。服务定位器(适用于实例化边界对象或根对象的场景)。依赖注入容器(适用于多数场景,推荐用这种方式)。从面向接口编 阅读全文

posted @ 2013-04-11 23:40 幸福框架 阅读(3143) 评论(3) 推荐(3) 编辑

2013年4月10日

技术人生:向李林锋学习,写文章不过是用更高层次的语言编程

摘要: 李林锋给我的印象是:幽默、大度、务实、注重细节。幽默的表现在于敢于自嘲和自我否定。大度的表现在于发自内心的接受不同的意见和想法。务实的表现在于其思考和实践的技术都有所针对,而非屠龙之技。我真正想学习的还是他对细节的处理,我俩没见过面,只是网友而已,我如何知道他注重细节呢?我是看他的博客知道的,他的博客内容组织风格和编排方式很是漂亮。所谓文如其人,一个文章写的好的程序员,没有理由写不好程序。前几天一直在思考如何像写文章一样的写代码,思来想去一直没有找到思路,我想今天我找到思路了,思路就是"先把文章写好,写文章不过是用更高层次的语言编程"。 阅读全文

posted @ 2013-04-10 23:56 幸福框架 阅读(1336) 评论(0) 推荐(1) 编辑

2013年4月9日

幸福框架:如何阅读幸福框架的代码

摘要: HappyFramework是一个支持DDD、CQRS、OSGI、EPC、EventDriven、MetadataDrivenProgramm理念的开源框架,而且她是可以实战的。不要被上边的话给欺骗了,当然了,其实也没有欺骗大家,只是HappyFramework的CQRS、OSGI、EPC、EventDrivent、MetadataDrivenProgramming都是实现的很简单,全是限制在AppDomain内和仅支持单线程。这并不代表不可以跨越AppDomain甚至无理进程,或者支持多线程,只是如果想做到这一步,已经有很多的框架提供此类功能了,如:NServiceBus之类的框架。而Hap 阅读全文

posted @ 2013-04-09 16:12 幸福框架 阅读(3311) 评论(7) 推荐(2) 编辑

幸福框架:应当如何使用和处理异常

摘要: 常见异常使用场景:以写(有副作用)为目的的方法尽量将返回值标记为void,用异常来表示失败,这样你的代码会非常简洁,不会出现大量的条件语句。简洁的版本 1 public void ChangeUsername(Guid userId, string newUsername) 2 { 3 var user = _userRepository.get(userId); 4 5 if(_UsernameRule.Validate(newUsername)) 6 { 7 throw new UsernameInvalidException("用户名不符合规则"... 阅读全文

posted @ 2013-04-09 14:35 幸福框架 阅读(1653) 评论(2) 推荐(4) 编辑

2013年4月8日

技术人生:和胡祝峰(一个有完美主义情结,很注重细节的人)聊天

摘要: 胡祝峰,一个有完美主义情结,很注重细节的人。聊天的内容基本是围绕如何创业来进行的,但是在此想分享的是他的这段谈话:祝峰:进金蝶做销售以后,一直都很顺利,去年还做到了销售第一名,我希望多遇到些问题,这样才能更成熟。光伟:你之所以很少遇到问题,不能归结为“顺利”,“顺利”太过于依赖“天命”了,而应当归结于你的核心价值观“追求完美”,这种价值观让你很注重自己的行为、习惯和很小的细节,让你时时刻刻都在解决小问题,不会积累成大问题。祝峰注重细节的举例:邮件写的比代码还好(之前他也是做技术的)。用Flash做的PPT。给客户送的是自己写的对联。着装一直很讲究。关于“完美主义情结”,有些人天生就具备,有些人 阅读全文

posted @ 2013-04-08 09:43 幸福框架 阅读(1234) 评论(2) 推荐(3) 编辑

2013年4月7日

DDD:DDD+CQRS架构中的数据库访问技术

摘要: 从数据采集和使用的角度可以将系统分为OLTP和OLAP两类,这样的划分正好对应了CQRS架构下的Command(OLTP)部分和Query(OLAP)部分。 Query的组织方式多采用ViewModel+RawSql。 Command的组织方式多采用DDD+ORM,其中Command执行的操作可以细分为单个操作和批量操作,单个操作使用ORM肯定不成问题,批量操作可以采用RawSql或后台任务的形式。判定树OLAP(Query)RawSqlOLTP(Command)Single OperationORMBatch OperationRawSqlORM in Background备注即使是... 阅读全文

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

2013年4月6日

幸福框架:元数据驱动开发

摘要: 名称解释元数据:描述数据的数据。元编程:运行时写程序的程序。代码生成器:编译时写程序的程序。元数据驱动开发的步骤定义元数据格式。定义元数据的存储方式。运行时编辑元数据。使用元数据。编译时用元数据。运行时用元数据。运行时影响代码。运行时修改代码。元数据驱动开发的常见使用场景代码生成器。界面配置管理器。工作流引擎。状态机引擎。元编程。备注:让元数据驱动你的开发,幸福框架中会大量用到这种开发模式。 阅读全文

posted @ 2013-04-06 14:21 幸福框架 阅读(2121) 评论(1) 推荐(0) 编辑

2013年4月5日

技术原则:将构造和使用分开的优点

摘要: 有利于关注对象之间的关系和职责。有利于面向接口编程。有利于系统的维护和升级。 阅读全文

posted @ 2013-04-05 23:08 幸福框架 阅读(328) 评论(0) 推荐(0) 编辑

幸福框架:我是如何使用日志的

摘要: 日志的用途跟踪,监控应用程序的执行(框架开发人员需要关注这点)。审计,监控用户的行为(应用开发人员需要关注这点)。日志的使用原则使用或不适用日志,不应当对系统行为产生影响。可以通过配置修改日志的记录方式和记录哪些日志。适合AOP的日志场景记录“某些”异常。性能监控。操作日志。不适合AOP的场景执行跟踪。SQL监控。下边介绍一下“幸福框架”中的日志API和使用原则日志接口拷贝了Log4Net 1 using System; 2 using System.Collections.Generic; 3 using System.Linq; 4 using System.Text; 5 using S 阅读全文

posted @ 2013-04-05 15:12 幸福框架 阅读(891) 评论(0) 推荐(0) 编辑

2013年4月4日

技术人生:每天进步一点点

摘要: 今天你进步了吗?每日一篇博客。每日阅读别人的博客。每日去群里聊一个主题。每日坚持编程。每日坚持锻炼。每日坚持读书。 阅读全文

posted @ 2013-04-04 22:25 幸福框架 阅读(189) 评论(0) 推荐(0) 编辑

2013年4月3日

技术人生:写代码要“害羞”,为人事要“大方”,代码要“宅”,做人不“宅”

摘要: 写代码要“害羞”尽量使用低的访问修饰符。尽量使用封闭类。尽量使用只读字段。尽量使用常量。为人事要“大方”不要害怕交流。不要害怕被批评。学会自我批评。学会倾听。学会问问题。一点想法我们知道无数个“大道理”、“大原则”,其实只要坚持一个,就会自然而然的找到突破点,坚持一个,坚持下去。10000个小时才足以造就一个顶级人才,每天3小时,我需要10年。我要坚持的原则:“养成良好的生活和编码习惯”。 阅读全文

posted @ 2013-04-03 17:11 幸福框架 阅读(1099) 评论(7) 推荐(4) 编辑

2013年4月2日

OSGI:OSGI集成ASP.NET MVC4.0

摘要: OSGI能动态的加载、启动和停止Bundle,之前我实现了和Ioc的集成以动态的注册和取消注册Bundle中公开的服务。今天简单的实现了和MVC的集成以动态的管理Controller。ASP.NET MVC默认只识别BIN目录下的程序集,当然你可以修改一些配置让他支持其它目录,我采用的策略时重写DefaultControllerFactory+OSGI插件,插件动态管理ControllerType的注册和取消注册,ControllerFactory根据注册的信息获取ControllerType。 1 using System; 2 using System.Collections.Generi 阅读全文

posted @ 2013-04-02 15:06 幸福框架 阅读(2271) 评论(4) 推荐(1) 编辑

2013年4月1日

DDD:策略模式如何结合动态表达式

摘要: 企业应用中我们经常会遇到各种业务规则,针对这种规则,我们多数情况会采用策略模式,每种策略对应一个具体类和一个具体的配置界面。但是企业业务的规则经常变化,现有的策略随着时间的推移而不能满足要求,针对这种情况我们可以用动态表达式来解决。动态表达式:在静态语言中动态的执行代码,目前可选的技术有:动态编译、Iron、Roslyn、内嵌小语言。今天来测试一下内嵌Javascript:代码如下: 1 using System; 2 using System.Collections.Generic; 3 using System.Linq; 4 using System.Text; 5 using Syst 阅读全文

posted @ 2013-04-01 17:49 幸福框架 阅读(1028) 评论(0) 推荐(0) 编辑

2013年3月31日

EHR:对人力资源信息系统的认识

摘要: EHR以组织结构管理和职位管理为基础,以记录和管理员工在企业的一切活动为内容,以薪酬的支付为终点。人力资源作为企业的四大资源(人、财、物、信息)之一,与财和物的管理相比,有很多类似之处,如:人力资源供需管理和人力资源盘点。以库存管理为例,其需要跟踪仓库产品的整个生命周期与当前状态,如:入库、调库、出库和仓位调整,对应到人力资源管理就是:入职、调职、离职和调职。以上说的基本的人力资源管理模型,具体的考勤模型、绩效模型、薪酬模型、招聘模型和培训模型根据不同的企业可能就有所不同,不过应该还是可以抽象出一个不变的部分。 阅读全文

posted @ 2013-03-31 09:27 幸福框架 阅读(598) 评论(0) 推荐(0) 编辑

2013年3月30日

OSGI:C#如何实现简单的OSGI

摘要: 我对OSGI的认识面向接口编程在组件(DLL)级别的体现。插件机制的一种扩展。动态管理组件(DLL)的生命周期(加载、启动、停止、卸载)。回调和插件的支持,在Bundle的生命周期中,允许通过插件和回调进行拦截。Ioc容器的集成(非必须),如:Bundle启动时自动将服务注册到Ioc中,停止时自动取消服务注册。Ioc管理服务的生命周期,OSGI管理组件的生命周期。代码示例(下载地址)项目结构及他们的依赖关系Program.cs 中的代码 1 using System; 2 using System.Collections.Generic; 3 using System.Linq; 4 usin 阅读全文

posted @ 2013-03-30 14:59 幸福框架 阅读(3084) 评论(5) 推荐(1) 编辑

2013年3月29日

DDD:我的购书清单(欢迎借读,邮费自理)

摘要: 重构与模式(修订版)当当网¥42.50(77折)2013-01-30 00:09:155615274300发表评价代码阅读(权威精选植根于开发实践的最佳读...当当网¥61.10(77折)2012-12-30 10:59:105465865000发表评价代码质量(权威精选植根于开发实践的最佳读...当当网¥71.20(80折)2012-12-30 10:59:105465865000发表评价面向对象分析与设计(第3版)(权威精选植...当当网¥78.10(79折)2012-12-30 10:59:105465865000发表评价敏捷技能修炼:敏捷软件开发与设计的最佳实...当当网¥44.40( 阅读全文

posted @ 2013-03-29 17:17 幸福框架 阅读(971) 评论(9) 推荐(1) 编辑

2013年3月28日

技术人生:关于语言和业务的一点理解

摘要: 我相信优秀的语言能带给我们不同的思维能力和表达能力,我也相信对业务模型的正确理解才是软件成功与否的根本原因。我对语言的关注多于对业务模型的关注,可以说是因为需求层次导致的,静下心来思考,才发现是因为是自己的懒惰,其实理解业务模型的难度要大于理解语言,想成为一名优秀的程序员,就要勇敢的面对挑战,不能再逃避难的事情。 阅读全文

posted @ 2013-03-28 10:56 幸福框架 阅读(275) 评论(0) 推荐(0) 编辑

2013年3月27日

DDD:应用层的三种组织风格

摘要: 第一种1 public class ApplicationService2 {3 public void Create(string username, string password);4 5 //xxx其它方法 6 }第二种1 public class ApplicationService2 {3 public CreateUserResponse Create(CreateUserRequest request);4 5 //xxx其它方法 6 }第三种1 public class CreateUserCommand {}2... 阅读全文

posted @ 2013-03-27 09:24 幸福框架 阅读(2161) 评论(1) 推荐(0) 编辑

2013年3月26日

DDD:实体如何处理外部依赖

摘要: 场景修改用户名时,要验证用户名的唯一性。实现11 public class User2 {3 public void ChangeUsername(string newUsername)4 { 5 //使用服务定位器获取IUsernameUniqueService ,执行验证。6 }7 }实现2 1 public class User 2 { 3 public void ChangeUsername(string newUsername) 4 { 5 EventBus.Se... 阅读全文

posted @ 2013-03-26 09:28 幸福框架 阅读(1107) 评论(0) 推荐(0) 编辑

2013年3月25日

技术人生:技术之路,需要的是热情和梦想

摘要: 我需要的是热情和梦想,不需要坚持,坚持有点勉强的意思。对于梦想,我之前太过急功近利,希望能短时间实现梦想,这种想法让自己有些许的疲惫,最主要是会导致适得其反的效果,从此要怀着恬淡自然的想法去追逐梦想,不懈怠也不着急。梦想:希望快乐的编程到100岁。 阅读全文

posted @ 2013-03-25 17:51 幸福框架 阅读(314) 评论(0) 推荐(0) 编辑

导航

我要啦免费统计