CQRS体系结构模式
摘要:CQRS体系结构模式http://www.chensj.cn/article/cqrs-model/本文转载自:http://www.cnblogs.com/daxnet/archive/2010/08/02/1790299.htmlCQRS体系结构模式本文将对CQRS(Command Query Responsibility Segregation,命令查询职责分离)模式做一个相对全面的介绍。可以这么说,CQRS打破了经典的领域驱动设计实践,在应用CQRS的整个过程中,你将会以另一种不同的角度去考虑问题并寻求解决方案。比如,CQRS是事件驱动的体系结构,事件是如何产生如何分发又是如何处理的?
阅读全文
什么是CQRS架构
摘要:什么是CQRS?这个问题网上可以找到很多资料,未接触过的童鞋请先查看Udi Dahan,Grey Young,Rinat Abdullin,园子里dax.net,以及Jdon社区上的相关文章。例如下面几篇文章:1.http://www.cnblogs.com/daxnet/archive/2011/01/06/1929099.html1.http://www.udidahan.com/2009/12/09/clarified-cqrs/2.http://www.jdon.com/jivejdon/thread/37891这里只通过Udi Dahan的《Clarified CQRS》文章中的一张
阅读全文
分享iOpenWorks插件仓库中非常简单强大的定时调度插件的使用
摘要:分享iOpenWorks插件仓库中非常简单强大的定时调度插件的使用目前iOpenWorks平台已经集成了一个定时调度器插件,它基于流畅接口编程快速实现各种定时任务的实现,比系统自动的Timer类功能强大且好用。下面我们来看看这个示例如何使用这个插件。1 准备工作1.1 安装iOpenWorks插件开发平台首先安装iOpenWorks插件开发框架,你可以从http://www.iopenworks.com/Products/SDKDownload下载插件框架,这个插件框架是免费的,适合于.NET平台下ASP.NET、MVC、WinForm、WPF等任意应用,支持.NET Frameworks 2
阅读全文
深度剖析Byteart Retail案例:基于MongoDB的仓储实现
摘要:深度剖析Byteart Retail案例:基于MongoDB的仓储实现今天花了半天时间,向Byteart Retail案例加入了基于MongoDB的仓储实现,读者朋友可以直接从Byteart Retail的代码库克隆最新代码来使用基于MongoDB的仓储实现。实现步骤1、重构ByteartRetail.Domain.Repositories目录结构本来这一步是不需要做的,但是因为之前没有把结构规划好,所以所有基于Entity Framework的仓储实现都放在了根目录下。现在把这些仓储的实现都移到了EntityFramework目录中,同时修改了命名空间和ByteartRetail.Servi
阅读全文
领域驱动设计中面向经典分层架构的领域事件的设计与实现
摘要:领域驱动设计中面向经典分层架构的领域事件的设计与实现在我开发的《Byteart Retail》案例中,已经引入了领域事件(Domain Events)的实现部分,详情请见之前我写的一篇文章:《深度剖析Byteart Retail案例:领域事件(Domain Events)》。经过一段时间的学习和思考,对于领域事件的设计与实现也有了新的认识。在本文中,首先让我们一起了解一下Byteart Retail案例中领域事件的实现有哪些弊端,然后再对领域驱动设计中领域事件的设计与实现进行讨论。由于文中有不少地方都是出自Byteart Retail案例,因此,本文仍然可以看成是《深度剖析Byteart Re
阅读全文
企业架构与企业架构框架概论
摘要:企业架构与企业架构框架概论 通过企业架构的发展历程我们可以看出,经过几十年的发展业界已经涌现出了很多企业架构以及企业架构框架理论。在本章中,笔者将挑选几种主要的企业架构和企业架构框架理论进行详细阐述。需要注意的是,虽然本章定名为“企业架构与企业架构框架”,但是由于企业架构的特性所致,其真实形态在不同的企业之间差异很大,即便是联邦企业架构也只是提供了五层参考模型而已,所以对于企业架构的总结无法逐一进行,而作为指导企业架构创建的方法论,亦即企业架构框架,由于其具备标准化的特性,将被作为本章内容的重点。当然,即便企业架构框架具有其标准性的一面,也并不意味着每个企业都要削足适履,摒弃自己的真实需求和特
阅读全文
框架
摘要:ESFramework强悍的通信框架、P2P框架、群集平台。OMCS简单易用的 网络语音视频 框架。MFile语音视频录制组件。https://nopcommerce.codeplex.com/nopCommerce is the best open source online shop e-commerce solution. nopCommerce is available for free.
阅读全文
ESBasic 可复用的.NET类库
摘要:ESBasic 可复用的.NET类库SBasic 开源ESBasic 可复用的.NET类库(28) -- TCP代理服务器 TCPProxy摘要: 1.缘起: 本文所描述的TCP代理服务器工作于网络协议层次中的应用层,位于传输层之上。只要是以TCP的方式为客户提供服务的(包括我们的HTTP服务器,HTTP底层走的仍然是TCP),我们都可以在真正的TCP服务器前面增加代理服务器。 TCP代理服务器可以隐藏背后真正TCP服务器,如此便可以起到保护真正TCP服务器的作用。由于TCP代理服务器工作于应用层,所以,黑客对应用层以下级别的协议栈的攻击(比如TCP半连接攻击)就无法穿过TCP代理服务器,这.
阅读全文
OMCS 语音视频框架
摘要:OMCS 语音视频框架OMCSOMCS使用技巧 -- 摄像头及其动态能力摘要: 在开发类似视频聊天的应用时,我们经常需要获取摄像头的相关信息;而在进行视频聊天时,我们可能还希望有一些动态的能力。比如,在不中断视频聊天的情况下,切换一个摄像头、或者修改摄像头采集的分辨率或编码质量等等。OMCS提供了很多有用的特性以支持上述需求。阅读全文posted @2012-08-06 09:46zhuweisky 阅读(309) |评论 (0)编辑OMCS开发手册(04) -- 二次开发流程摘要: 本文将介绍在基于OMCS构建网络多媒体应用时,最基本的开发流程。阅读全文posted @2012-08-06
阅读全文
ESFramework4.x
摘要:ESFramework4.x广播与P2P通道(下) -- 方案实现摘要: 在上篇文章中,我们已经找到了最优的模型,即将广播与P2P通道相结合的方案,这样能使服务器的带宽消耗降到最低,最大节省服务器的宽带支出。本文我们将实现这个最优模型。阅读全文posted @2013-04-27 09:35zhuweisky 阅读(732) |评论 (1)编辑广播与P2P通道(上) -- 问题与方案摘要: 当客户端需要广播一个消息给同一个组中的其它客户端时,是经过服务器中转?还是经P2P通道传送?服务器带宽的占用如何?最优的方案是什么?阅读全文posted @2013-04-25 20:19zhuweisky
阅读全文
自己写框架 - 实践 (Event Framework)
摘要:自己写框架 - 实践 (Event Framework)要想性能高,缓存是关键,缓存处理更是关键最近一直在关注性能方面,回想起以前写cache的场景,纠结啊,一坨一坨的同步代码,都写在了业务方法中,更要命的是由于涉及到取缓存代码导致了多个方法中同时牵涉了很多处理缓存的代码、结构性基本上没有。由此粗略写了这个EventFramework,还没有优化,由于用到了反射,所以效率不高,还需要优化(今天刚搞出来的。。。)代码下载这个EventFramework能够将业务方法和相关event分离开(事件订阅),比如:事件订阅:Order.Add函数调用后,EventFramework能根据订阅的event
阅读全文
DDD:主键映射,你一直在使用的企业应用模式
摘要:DDD:主键映射,你一直在使用的企业应用模式名称解释主键映射是为了保证一个业务事务(请求)内只访问或修改一份领域模型。基本的思路是在内存中维护一个映射表,映射表的键为领域模型的主键,值为加载的领域模型。工作原理如下:根据主键加载:先判断映射中有没有,有就直接从映射中返回,没有就从数据库加载,然后添加进映射再返回。根据查询加载:先从数据库加载所有满足条件的领域模型集合,然后遍历这个集合,用1的算法处理每个加载的领域模型,返回新的集合(集合.Map算法)。总之,主键映射会保证整个业务事务发生的过程你只会引用到一个内存引用,你自己实现主键映射也要保证这个语义。图片示意不用主键映射会出现什么问题??1
阅读全文
深度剖析Byteart Retail案例:仓储(Repository)及其上下文(Repository Context)
摘要:深度剖析Byteart Retail案例:仓储(Repository)及其上下文(Repository Context)在领域驱动设计(DDD)的案例中,仓储及其上下文都是开发人员学习和讨论的重点。对这两个内容的讨论,大致包含两个方面:第一个方面是有关仓储及其上下文在整个应用程序架构中的位置;第二个方面,则是仓储及其上下文的设计与具体技术实现。我将在本文中,结合Byteart Retail案例,对这两个内容进行讨论。仓储及其上下文在整个应用程序架构中的位置仓储是DDD中管理对象生命周期的一个重要组件。在面向对象的世界里,不仅仅是DDD,甚至是整个软件设计和开发过程,都离不开对象生命周期的管理:
阅读全文
自己封装的内存缓存类DotNet.Caches.Bytecached
摘要:自己封装的内存缓存类DotNet.Caches.BytecachedBytecached类是DSS.NET(Distributed State Service分布式状态服务)、DFS.NET(Distributed File System分布式文件系统)中的一个核心内存缓存类。在DSS.NET中用于保存和管理网站用户的Session数据。在DFS.NET中用于缓存使用频率较高的文件数据。特性:1、使用读写锁实现多线程并发控制2、多种过期数据清理方式3、精准的容量控制4、以最小的系统开销进行数据清理在一个对性能要求比较高的系统中,都需要用缓存来保存一临时数据。也许你正在寻找。。。View Cod
阅读全文
DDD:DDD+CQRS+高伸缩性的分布式架构
摘要:DDD:DDD+CQRS+高伸缩性的分布式架构物理架构物理架构优势WEB服务器可以单独做负载平衡(独立伸缩)。应用服务可以单击做负载平衡(独立伸缩)。容易引入“后台任务服务器”(正在做这方面的支持)。支持混合部署(一部分业务逻辑运行在WEB服务器,一部分业务逻辑运行在应用服务器),部署方式对开发人员几乎透明。如何选择部署模型当用户数少(自己测试)的时候可以不用应用服务器,只做WEB负责平衡。当用户数多(自己测试)的时候,将频繁执行的业务逻辑分离部署到应用服务器上。对于那些长时间(自己测试)执行的任务,将它们部署到后台任务服务器上。示例代码项目结构WEB服务器代码 1 using System;
阅读全文
DDD:管理“工作单元实例”的两种模式
摘要:DDD:管理“工作单元实例”的两种模式当前标签: 架构续--请思考: 模式的学习和应用--架构是什么?Ambit 2013-04-17 22:51 阅读:296 评论:0请思考: 模式的学习和应用Ambit 2013-04-16 09:27 阅读:691 评论:3软件开发非功能性需求Ambit 2013-04-14 22:03 阅读:39 评论:0概念介绍类图如下:在常见的用例场景下,类图的对象图如下:问题在一个用例执行过程中,如何保证同一个界限上下文内的所有仓储实例可以共享同一个工作单元实例?解决方案1仓储采用依赖注入模式 + 使用IOC管理工作单元的生命周期(PerRequest或其它)。
阅读全文
.NET:处理数据库事务中的并发
摘要:.NET:处理数据库事务中的并发概述几乎所有的企业应用程序都有多个用户和后台线程,它们可以同时更新数据库。两个数据库处理事务同时访问同一份数据的情形很常见,但是这样很可能导致数据库的不一致,或者引起应用程序行为异常。大部分应用程序必须处理多个事务并发访问同一份数据的情况,而这会影响业务层和表示层的设计。悲观锁你可以利用事务的隔离级别实现悲观锁,一般用“可重复读”和“串行化”就可以满足悲观锁的要求。从表面上看,这种方法看似非常简单,但是这类事务也存在问题,由于隔离事务如何实现完全由平台或数据库提供,因此有时他们会导致性能降低,令人无法接受 。鉴于此,许多应用程序都避免使用这类事务,转而采用乐观锁
阅读全文
请思考: 模式的学习和应用
摘要:请思考: 模式的学习和应用来自:http://www.cnblogs.com/raol/archive/2013/04/16/thinking_in_pattern.html很久之前就看到这张图, 貌似来自于新浪的架构演变, 反思, 一直苦苦追求系统有好的架构, 假设现在有个公司让你去做架构, 你能套上最后一个版本的架构吗? 有必要去套上最后一个版本吗?反思学习设计模式: 在你对模式没有概念的时候,有没有必要去苦苦去套GOF的设计模式? 有没有必要逢人就问你用了什么模式?架构是什么?标签:架构
阅读全文
在C#中使用访问者(Visitor)模式对组合(Composite)对象进行验证
摘要:在C#中使用访问者(Visitor)模式对组合(Composite)对象进行验证在应用程序的开发过程中合理使用设计模式,不仅能够解决实际问题,提高开发效率,而且还能够让程序结构更为清晰合理,对达到“低耦合、高内聚”的设计目的有着很大的帮助。目前网上有很多介绍设计模式的文章,有的也自成体系,基本涵盖了GoF的所有模式,但大多数类似文章都以一些较为简单的类型设计为例(比如Animal、Cat、Dog、Fruit、Apple、Banana等),虽然浅显易懂,但读完之后发现离实际应用还是存在一定的距离。鉴于这样的现状,我也打算总结一些我在项目中碰到的模式应用案例,通过对实际问题进行分析描述,来把握模式
阅读全文
Portal-Basic Java Web 应用开发框架示例工程发布
摘要:【☆公告☆】Portal-Basic Java Web 应用开发框架(Portal-Basic v3.1.1 beta-1 示例工程发布) portal-basic 3.1.1 已开发完成,正在编写帮助文档,将于近期发布。现在先发布 portal-basic 3.1.1-BETA-1 的示例工程供大家下载试用,体验新特性。同时希望收集一些意见反馈。谢谢 *_^ 注:本示例工程增加了 “异步 Action” 和 “异步 REST Action” 示例。 Portal-Basic Java Web应用开发框架(简称 Portal-Basic)是一套功能完备的高性能Full-Stack W...
阅读全文