自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(72)
  • 资源 (1)
  • 收藏
  • 关注

翻译 正确使用Patch——部分更新

RFC 7396,引入了 JSON Merge Patch格式,其已创建。它可以被视为“只发送你需要的”格式。因此,,只要符合JSON Merge Patch格式,只需发送你需要更新的更改说明

2017-07-24 05:20:50 8589

翻译 RFC6902—JSON PATCH

HTTP PATCH [RFC5789]方法对资源进行部分修改,扩展了超文本传输协议(HTTP)[RFC2616]。JSON PATCH 是一种格式

2017-07-22 10:38:55 2220

翻译 SpringBoot安全

如果Spring Security在classpath中,那么web应用默认对所有的HTTP端点使用’basic’认证。为了给web应用添加方法级别(method-level)的安全性,你还可以添加@EnableGlobalMethodSecurity和你想要的设置,额外的信息可以在Spring Security Reference中找到。

2017-07-05 05:11:57 1463

原创 SpringBoot简介

采用固定的形式构建准产品的Spring应用程序。Spring Boot支持约定优于配置,旨在让你尽快地启动并运行Spring应用程序。SpringBoot很容易创建基于Spring的独立的、产品级的,可以“即时运行”的应用程序。我们对Spring平台和第三方库采用固定的形式,这样你就可以以最小的配置开始使用。大多数SpringBoot应用程序只需要很少的Spring配置。

2017-07-03 08:29:38 425

翻译 你的JWTs存储在哪里

如何存储这些令牌。如果你正在构建一个web应用程序,你有两种选择:HTML5 Web Storage (localStorage或sessionStorage)Cookies比较这两个,假设我们有一个虚构的AngularJS或单页应用(SPA)叫做galaxies.com,登录路由(/token)验证用户身份返回一个JWT。访问你的SPA其他API端点服务,客户端需要传递一个有效的JWT。

2017-07-01 06:26:48 6715

原创 IDDD领域、子域、限界上下文

领域:广义上讲,领域(Domain)即是一个组织所做的事件以及其中所包含的一切。每个组织都有它自己的业务范围和做事方式。这个业务范围以及在其中所进行的活动便是领域。领域既可表示整个业务系统,也可以表示其中的某个核心域或支撑子域。当谈及到业务系统中的某个方面时,使用”核心域“或”子域“以示区别。为整个业务系统创建一个单一的、内聚的、全功能式的模型。这并不是我们使用DDD的目的。

2017-06-30 06:05:33 4330

原创 实现DDD读书笔记1

什么是DDDDDD是英文Domain-Driven Design的简称,在2004年由Eric Evans提出的一套软件设计的概念和方法论。DDD并不是关于技术的,而是关于讨论、聆听、理解、发现业务价值的,而这些都是为了将知识集中起来。将领域专家引入到团队是大有好处的。领域专家不见得就知道所有的业务,他们也得学习。你向领域专家提出的问题有可能暴露出他们不知道的地方。

2017-06-29 06:04:00 801

翻译 AxonFramework,事件序列化器调优

XStream序列化器XStream是完全可配置和可扩展的。如果你只使用一个无格式XStreamSerializer,有一些速效方案随时取用。XStream允许你为包名称和事件类名称配置别名。别名通常更短(特别是如果你有长包名),使事件的序列化形式更小。由于我们讨论的是XML,所以每个字符从XML中移除是两次(一个开始标记,一个结束标记)。

2017-06-28 15:12:01 582

翻译 AxonFramework,高级定制

参数解析器你可以配置额外的ParameterResolvers,通过扩展ParameterResolverFactory类和创建一个名为/META-INF/service/org.axonframework.common.annotation.ParameterResolverFactory的文件,包含实现类的完全限定名称。

2017-06-27 05:26:31 1017

翻译 AxonFramework,SpringBoot自动配置

Axon支持的SpringBoot自动配置是迄今为止开始配置Axon基础设施组件最简单的选择。只需添加axon-spring-boot-starter依赖性,Axon会自动配置基础设施组件(命令总线,事件总线),以及运行和储存聚合和Saga所需的任何组件。根据在应用程序上下文中的其他组件,如果他们在应用程序上下文中不是已经明确定义,Axon将定义某些组件。这意味着只需要配置不同于默认值的组件。

2017-06-26 05:56:40 2517

翻译 AxonFramework,快照(Snapshotting)

当聚合存活很长一段时间,它们的状态不断变化,它们会生成大量的事件。不得不加载所有这些事件去复原一个聚合的状态,可能会有很大的性能影响。快照事件是一个有着特殊用途的领域事件:它将任意数量的事件归纳为单个事件。通过定期创建和存储快照事件,事件存储不必返回长的事件列表。只返回最后一个快照事件和在快照之后发生的所有事件例如,库存物品往往会经常变化。每销售一件物品,事件就减少一件库存。

2017-06-25 06:40:55 1164

翻译 AxonFramework,事件向上转换(Event Upcasting)

由于软件应用程序的不断变化的性质,很可能事件定义也随着时间而变化。由于事件存储被认为是只读和只追加(没有修改和删除)的数据源,所以应用程序必须能够读取所有事件,而不管它们何时添加。这时upcasting 出现了。最初是面向对象编程的一个概念,“一个子类在需要的时候自动转换成超类”,upcasting 概念也可以应用于事件溯源。upcast一个事件意味着将它从原来的结构转换成新的结构。

2017-06-24 05:39:27 690

翻译 AxonFramework,EventStore实现

事件溯源存储库需要一个事件存储(event store)从聚合中存储和加载事件。事件存储提供了一个事件总线的功能,增加了持久化已发布的事件,并能够基于聚合标识符检索事件。Axon提供了一个开箱即用的事件存储,EmbeddedEventStore。它委托事件实际的存储和检索到EventStorageEngine。

2017-06-23 06:31:34 4203

翻译 AxonFramework,存储库

存储库是提供对聚合访问的机制。存储库充当了用于保存数据的实际存储机制的网关。在CQRS中,存储库只需要能够根据他们的惟一标识符找到聚合。任何其他类型的查询,应该在查询数据库中执行。在Axon Framework中,所有存储库必须实现Repository接口。这个接口规定了三种方法:load(identifier, version), load(identifier)和newInstance

2017-06-22 06:32:36 1040

翻译 AxonFramework,分发事件

在某些情况下,有必要发布事件到外部系统,比如消息broker。Spring AMQPAxon提供了开箱即用的支持从一个AMQP message broker中转递事件和传递事件到broker中,比如Rabbit MQ。将事件转发到AMQP EchangeSpringAMQPPublisher将事件转发给一个AMQP Exchange。

2017-06-21 06:08:29 1359 1

翻译 AxonFramework,事件发布和处理

由应用程序生成的事件需要被分发到更新查询数据库的组件,搜索引擎或其他需要它们的资源:事件处理程序(Event Handlers)。事件总线(Event Bus)的职责是分发事件消息到所有感兴趣的组件。接收端,事件处理器(Event Processors)负责处理这些事件,其中包括相应的事件处理程序(Event Handlers)的调用。

2017-06-20 05:31:22 1690

翻译 AxonFramework,分布式命令总线连接器

JGroupsConnector JGroupsConnector使用(正如它的名字已经说明)JGroups作为底层发现和调度机制。描述JGroups的特性有太多的参考指南,请参阅JGroups用户指南以了解更多的细节。因为JGroups既处理节点的发现又处理它们之间的通信,所以JGroupsConnector既充当CommandBusConnector也充当CommandRouter。

2017-06-19 05:36:50 1364

翻译 AxonFramework命令拦截器

使用命令总线的优点之一,是能够基于所有传入的命令采取相应的行动。例子是,不论哪种命令类型,你都希望去做日志记录或身份验证。这是使用拦截器来完成的。有不同类型的拦截器:Dispatch拦截器和Handler拦截器。前者在命令被分发到命令处理程序之前被调用。在那时,它甚至不能确定该命令有任何处理器的存在。后者在命令处理程序被调用之前调用。

2017-06-18 06:19:37 859

翻译 AxonFramework命令总线

命令总线是将命令分发给各自的命令Handler的机制。每个命令总是被精确发送到一个命令Handler。如果没有可用的命令Handler为已分发的命令,将会抛出NoHandlerForCommandException异常。对同一命令类型订阅多个命令Handler将导致订阅互相取代。在这种情况下,最后一个订阅获胜。

2017-06-17 06:02:20 1336

翻译 AxonFramework命令分发

使用显式的命令分发机制有许多优点。首先,有一个单独的对象,清楚地描述了客户端的意图。通过记录的命令,你可以存储意图和相关资料备查。命令处理也很容易将你的命令处理组件暴露给远程客户端,例如通过web服务。测试也变得更容易,只需定义起始情境(given),就可以定义测试脚本,通过列出一些事件和命令,命令去执行(when)并且预期结果(then)。

2017-06-16 06:08:51 1412

翻译 AxonFramework,测试带注解的Saga

与命令处理组件类似,saga有一个明确定义的接口:它们只对事件作出响应。另一方面,saga通常具有时间概念,并且可以作为事件处理过程的一部分与其他组件交互。Axon Framework的测试支持模块包含帮助你编写saga测试的固件。 每个测试固件包含三个阶段,类似于前面部分描述的命令处理组件固件。

2017-06-15 05:21:15 1247

翻译 AxonFramework测试

CQRS最大的好处之一,尤其是事件溯源就事件和命令而言,单纯地表达测试是可能的。这两个功能组件,事件和命令对领域专家或业务所有者都有明确的含义。这不仅意味着测试表达就事件和命令而言有明确的功能含义,这也意味着他们不依靠任何实现选择。本章描述的特性需要axon-test模块,可通过配置maven依赖(使用axon-test 和test本章中描述的固件可用于任何测试框架,如JUnit和TestNG。

2017-06-14 05:33:28 767

翻译 AxonFramework,Saga的基础设施

事件需要被重定向到适当的saga实例。为此,一些基础设施类是必需的。最重要的组件是SagaManager和SagaRepository。Saga Manager与处理事件的任何组件一样,processing也是由事件处理器完成的。然而,因为saga不是单例实例处理事件,但是有独特的生命周期,它们需要管理。Axon通过AnnotatedSagaManager来支持生命周期管理,这是提供给一个事件Pro

2017-06-13 06:06:33 1957 1

翻译 Axon Framework跟踪最后期限

当有事发生时,很容易使一个saga采取行动。毕竟,有一个事件要通知saga。但是如果你想让你的saga,在什么事情都没发生的情况下做些什么呢?这就是最后期限。在发票中,通常是几周,而信用卡支付的确认可能在几秒钟内。在Axon中,你可以使用一个EventScheduler计划发布一个事件。在发票的例子中,你希望发票在30内付清。

2017-06-12 05:44:03 715

翻译 Axon Framework事件处理

saga中的事件处理非常接近一个普通的事件监听器。上述的对于方法和参数解析的规则在这里是有效的。不过,有一个主要区别。虽然存在事件监听器只有单个实例处理所有传入事件,但也存在一个saga有多个实例,每个实例都对不同的事件感兴趣。例如,关于Order的id为1的管理业务Saga对Order“2”的事件不感兴趣,反之亦然。

2017-06-11 06:47:09 1163

翻译 Axon Framework管理复杂的业务事务

并不是每个命令都能够在一个ACID事务中完全执行。现金转账事务是一个很常见频繁出现的例子,用来作为论据。通常认为,把钱从一个账户转移到另一个账户,绝对需要原子性和一致性。其实并非如此,相反,这是完全不可能的。如果钱从A银行的帐户转移到B银行的帐户怎么办?A银行要获得B银行数据库的锁吗?如果转账正在进行的时候,A银行已经扣除了金额,但B银行并没收到它,这不是很奇怪吗?事

2017-06-10 07:08:36 1272

翻译 Axon Framework在聚合中处理命令

建议在包含处理状态命令的聚合中直接定义命令处理器,因为命令处理器有可能需要该集合的状态来执行其任务。要在一个聚合上定义一个命令处理器,只需用@CommandHandler注解命令处理方法即可。带@CommandHandler注解方法的规则和其他处理方法都是一样的。然而,命令不仅通过他们的有效载荷(payload)进行路由。命令消息携带一个名字,该名称默认为命令对象的完全限定类名。AxonFramework

2017-06-09 05:27:00 1631

翻译 Axon Framework聚合事件溯源

除了存储一个聚合的当前状态,还可以根据过去发布的事件恢复一个聚合的状态。为此,所有状态的更改必须由一个事件来表示。主要部分,事件溯源聚合类似于“有规律”聚合:他们必须声明一个标识符并可以使用apply函数发布事件。然而,事件溯源聚合中状态的变化(也就字段的任何变化)必须在@EventSourcingHandler注解的方法中被排他地执行。这包括设置聚合标识符。注意,聚合标识必须被设置在聚合发布的第一

2017-06-08 06:22:13 2154

翻译 Axon Framework命令模型

在一个基于CQRS的应用程序中,领域模型(由Eric Evans和Martin Fowler定义)可以是一个非常强大的机制,来驾驭在验证和执行状态的变化时所涉及的复杂性,虽然典型的领域模型提供了大量的构建块,但当在CQRS中应用命令处理时有一个构件起着主导性的作用:聚合。应用程序中的一个状态的改变,始于一个命令。命令不但是表达意图(描述你想要做什么)的组合,而且是基于这一意图采取行动所需的信息。命令

2017-06-07 05:33:47 1163

翻译 Axon Framework配置

获得一个默认的配置是非常容易的: Configuration config = DefaultConfigurer.defaultConfiguration().buildConfiguration();这个配置为分发消息提供了在线程上处理消息、分发它们的实现。显然,这种配置不会很有用。你必须将你的命令模型对象和事件处理器注册到该配置中。为此,通过.defaultConfiguration()方法

2017-06-07 05:32:03 986

翻译 Axon Framework工作单元,The Unit of Work

工作单元The Unit Of Work

2017-06-06 06:02:00 1511

翻译 Axon Framework消息、命令和事件

Axon 消息、命令和事件的概念

2017-06-05 15:02:41 1927

翻译 Axon Framework架构概述

CQRS本身是一个非常简单的模式。它只规定了处理命令的应用程序的组件应该与处理查询 的组件分离。 虽然这种分离本身非常简单,但它与其他模式结合时提供了许多非常强大的功 能。Axon 提供的构建块更容易实现不同的模式与CQRS的结合。下图显示了一个示例,一个基于CQRS的事件驱动的架构图示。 左侧显示的是UI组件, 通过 两种方式与应用程序的其余部分进行交互:它向应用程序发送命令 (显

2017-06-04 22:29:20 12559 8

翻译 Axon Framework简介

Axon是一个轻量级框架,能够帮助开发者通过在架构层面构建可扩展和可伸缩的应用。(注:以DDD面向领域驱动设计为基础的CQRS框架)Axon Framework

2017-06-04 05:59:13 2770

转载 欢迎使用CSDN-markdown编辑器

欢迎使用Markdown编辑器写博客本Markdown编辑器使用StackEdit修改而来,用它写博客,将会带来全新的体验哦:Markdown和扩展Markdown简洁的语法代码块高亮图片链接和图片上传LaTex数学公式UML序列图和流程图离线写博客导入导出Markdown文件丰富的快捷键快捷键加粗 Ctrl + B 斜体 Ctrl + I 引用 Ctrl

2017-02-03 22:33:23 238

原创 Ext4.2官方例子TabCloseMenu.js的BUG

具体BUG是Tab右键菜单中的“Close Tab”点击之后没有反应,点击“Close Other Tabs”关闭所有。通过fireBug调试,原来是在点击菜单命令后,菜单会先隐藏,然后执行关闭Tab页的操作,而在onHideMenu事件中将当前右击的Tab页即me.item设置为空,这样就导致在关闭时找不到当前右击的菜单,注释掉就正常了。onHideMenu: function () {

2014-02-10 17:08:49 2440 2

原创 BIEE Go Path 过滤器汉字编码

BIEE 中Go Path访问分析报表加过滤器有汉字时需要对汉字进行特殊的编码处理,例:Action=Navigate&P0=1&P1=eq&P2="DIM_NEWSPAPER_SEGMENT_TAB"."STATION_NAME"&P3=1+北京URL中的P2为:表名.字段

2011-08-09 16:30:13 1848 2

原创 ssl 客户端无法显示证书

IIS设置“要求客户端证书选项”时 如果已经安装了客户端证书,却不弹出“选择证书”对话框,或者弹出了对话框,但是没有证书让你选择。原因:IIS所在服务器不信任你的客户端证书的颁发机构。解决办法:1.  任一台安装了客户端证书的机器(重要提示:最终导出的文件要上

2011-08-05 10:58:23 3226

原创 MOSS

 MSDN其实是一个好东西,哈哈,MOSS学习中。

2009-11-23 01:46:00 603

原创 下雪天打雷

 今天郑州下了很大的雪,刚才在写博客的时候,听到外面叮哐响,还以为是谁放炮,又过一会就一个大的雷在屋外炸开,还打着闪,我晕,原来是第一个就是打雷,没反应过来,下雪天打雷,平生第一次经历,哈哈

2009-11-11 22:04:00 1022

android程序设计基础郝玉龙源码

android程序设计基础光盘源码,作者郝玉龙

2013-11-06

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除