语言静听戏曲经典 传承非遗文化——河北梆子

对照其它的人情技术来说,河北梆子的现状算是比较开朗的,根据我们针对其他组调研传统技艺的问询情况,别的传统技术大多还濒危,后继无人,甚至需要被学员倒贴学费为她们求学。而商演的会非常少,几乎从来不收入,濒临失传。对于这种状况,我们打点滴个点证实的错过对:

3.1. 空洞事件源

事件起源应该至少含有事件来的年华跟点事件之靶子。我们领到IEventData接口来封装事件起源:

/// <summary>
/// 定义事件源接口,所有的事件源都要实现该接口
/// </summary>
public interface IEventData
{
    /// <summary>
    /// 事件发生的时间
    /// </summary>
    DateTime EventTime { get; set; }

    /// <summary>
    /// 触发事件的对象
    /// </summary>
    object EventSource { get; set; }
}

通过兑现IEventData咱得以因自己的得丰富自定义之轩然大波性质。

每当共青团河北大学委员会的团体下,抱在对雄安新区的异以及非物质文化遗产的志趣,我们跟随雄安新区非遗调研队于7月11日奔赴安新县城,深入雄安新区,实地考察了雄安新区的非物质文化遗产。

5. 事件存储和波源自

有关事件存储(Event Store)和事件源自(Event
Sourcing)是一个比较复杂的概念,我们这边就是简单介绍下,不开过多展开,后续还要章详述。
语言 1

事件存储,顾名思义,即事件之持久化。那为什么要持久化事件?

  1. 当事件公布失败时,可用来更颁布。
  2. 经消息中间件去分发事件,提高系统的吞吐量。
  3. 用于事件起源。

源代码管理工具我们还因此了,如Git、TFS、SVN等,通过记录文件每一样糟糕的改记录,以便我们跟每一样蹩脚对源代码的改动,从而我们得以随时回滚到文件的指定修改版。

事件本源的实质也凡这样,不过她存储的并非聚合每次变更的结果,而是存储应用在拖欠集上之史领域事件。当用恢复某个状态时,需要拿利用在集的领域事件按序“重放”到要回升状态对应之天地事件结束。

这次调研活动,让对本国非物质文化遗产有了越来越浓厚的知。在这次调研过程中产生的困窘都用改为我们美好的记得。对于人情文化的存续与提高,我们也发了更加深切的考虑与理解。被非遗调研队选中,我们是幸运的,这次走反了俺们原先对民俗文化的见解。而对那些精彩之民俗文化,我们坚信它们是一定非会见不复存在的,它们以永久的存吃雄安新区即片沃土之上,存在人民的记得和历史的进程间,散发着属于自己的亮光。

DDD理论学习系列——案例和目录

心想和记录

3.建模领域事件

怎样行使领域事件来解耦呢?
当然是包裹不移,应针对万变。那对地方的用例,不更换的凡啊,变的以是啊?不转换的凡订单支付成功这波;变化之凡针对性此事件的两样处理招数。

苟我们如果怎样封装呢?
这儿我们尽管使理清波的本质,事件时有发生盖自然有果然,事件是由于事件源和事件处理组合而成的。通过波来我们来分辨事件的源,事件处理来代表事件致使的下一样步操作。

语言 2

及了村口,张老师就热情地来接村口我们了,张老师为丁和善,笑眯眯地将我们提了村委办公室,村干部等同热情地同我们从了看,对咱们表示欢迎,并且全程陪同在解答一些题目。其后我们虽开了专业的集,张老师和蔼可亲,十分耐心地逐一为咱做出对,讲解了光淀村河北梆子的来发展以及现状,以及讲河北梆子的门、特点。

1. 引言

A domain event is a full-fledged part of the domain model, a
representation of something that happened in the domain. Ignore
irrelevant domain activity while making explicit the events that the
domain experts want to track or be notified of, or which are
associated with state change in the other model objects.
领域事件是一个天地模型中极其重要之有的,用来表示领域受到发出的风波。忽略不系的世界走,同时明确领域专家要跟或期待给打招呼之业务,或和另外模型对象吃的状态更改相关联。

本着官方释义,我们得理出以下几个中心:

  1. 天地事件视作世界模型的最主要部分,是领域建模的家伙之一。
  2. 就此来捕获领域受到就生的事体。
  3. 连无是世界面临享有来的工作还如建模为世界事件,要不经意无业务价值之风波。
  4. 领域事件是领域专家所关切的(需要跟的、希望给通之、会引起其他模型对象改变状态的)发生在领域受到的片业务。

简单易行,领域事件是因此来捕获领域被生的具备业务价值的部分业务。它的精神就是事件,不要以那个复杂化。在DDD中,领域事件视作通用语言的一模一样种植,是为了清晰表达领域面临产生的轩然大波概念,帮助我们深刻明领域模型。

咱俩这次担负相之是安新县光淀村底河北梆子。说自河北梆子,在省内基本每个市、每个县城、每个村子还传出,甚至在有些处其风头盖过了“国粹”——京剧。作为河北地方戏种,河北梆子在河北最流行,乃至于可以和京剧、豫剧等强势戏种分庭抗礼,由此我们可见到,其所有坚实的民众根基。河北梆子由流入河北之山陕梆子蜕变而成为,形成为清道光年间。山陕梆子流入河北继,在漫漫的上演过程中,为了博当地民众的赏爱,根据本地民众之言语习惯、情趣、爱好等,在章程上开展持续革新、创造,融合了河北地区底风俗和特征,形成了河北梆子。韩愈于《送董邵南序》说:“燕赵古称多感慨悲歌之士”,河北立片土地义士的多,也影响了河北梆子具有高、激越、慷慨、悲忍的表征。

6.总结

经地方的分析,我们知道引入世界事件之目的根本有少独,一凡解耦,二是动世界事件展开工作的拆分,通过引入事件存储,来贯彻多少的终极一致性。

末段,对于世界事件,我们可以这么懂:
经以世界中所发出的位移打模成一文山会海的离散事件,并将每个事件都因此世界对象来表示,来跟世界面临出的业务。
为可以简单理解为:天地事件 = 事件发表 + 事件存储 + 事件分发 +
事件处理

如上,仅是个人理解,DDD水挺酷,剪不绝,理还乱,有问题或者见,欢迎指正交流。

参考资料:
于微服务中以世界事件
动用聚合、事件起源和CQRS开发事务型微服务
什么样了解数据库事务中的一致性的概念?
Eventual Consistency via Domain Events and Azure Service
Bus

那些泛黄的镇剧本是文化的厚度

3.2. 华而不实事件处理

对事件处理,我们提一个IEventHandler接口:

 /// <summary>
 /// 定义事件处理器公共接口,所有的事件处理都要实现该接口
 /// </summary>
 public interface IEventHandler
 {
 }

事件处理要同事件起源进行绑定,所以我们更来定义一个泛型接口:

 /// <summary>
 /// 泛型事件处理器接口
 /// </summary>
 /// <typeparam name="TEventData"></typeparam>
 public interface IEventHandler<TEventData> : IEventHandler where TEventData : IEventData
 {
     /// <summary>
     /// 事件处理器实现该方法来处理事件
     /// </summary>
     /// <param name="eventData"></param>
     void HandleEvent(TEventData eventData);
 }

上述,我们就做到了世界事件的抽象。在代码中我们由此落实一个IEventHandler<T>来发表领域事件的定义。

一方水土养育一正文化

3.3. 世界事件的揭晓以及订阅

天地事件不是凭空产生的,它来一个发布方。同理,它为使起一个订阅方。

这就是说怎么跟订阅和发布领域事件吧?
领域事件的发表可以下披露–订阅模式来促成。而比宽泛的兑现方式尽管是事件总线

语言 3

事件总线是一模一样种植集中式事件处理机制,允许不同之零部件之间展开相互通信而又无需相互依赖,达到同等种植解耦的目的。Event
Bus就相当给一个在乎Publisher(发布方)和Subscriber(订阅方)中间的桥。它隔离了Publlisher和Subscriber之间的直依赖,接管了装有事件的披露以及订阅逻辑,并背事件的转账。

此虽大概说明一下风波总线的贯彻的要义:

  1. 事件总线维护一个轩然大波源于及事件处理的投射字典;
  2. 经过单例模式,确保事件总线的绝无仅有入口;
  3. 使用反射或倚靠注入完成事件来与事件处理的初始化绑定;
  4. 提供合的波注册、取消注册和沾接口。

末尾,我们看下事件总线的接口定义:

public interface IEventBus
 {
    void Register < TEventData > (IEventHandler eventHandler);

    void UnRegister < TEventData > (Type handlerType) where TEventData: IEventData;

    void Trigger < TEventData > (Type eventHandlerType, TEventData eventData) where TEventData: IEventData;
}

每当应用服务和天地服务受到,我们且足以直接调用Register道来就领域事件的报,调用Trigger计来形成领域事件之揭晓。

假如有关事件总线的切实落实,可参考我之马上篇博文——事件总线知多少。

从此以后,张老师以热情地出管我们提外的家,为咱展示以前长乐会(即当地最好特别的剧组织)唱戏的一味照片,老剧本,乐谱。大部分肖像还是黑白的,透露出怪年代特有的质感。照片及之丁定格于四方内,但以能感受及外立马演戏之动作以及态度,仿佛方块的照片或者荧幕,他曾经演出了数十年相似。老剧本的纸页已经泛黄,这些本子有的是从明清污染下来的,依然保存完好,纸张为转移的薄如蝉翼,历史没有砺去了它们的厚薄,却只要后人文化的薄厚积累起来,达到任何一个可观,文化才未见面断层。手抄的乐谱上就此底差不多是繁体字,竖排排版,充满了古典气息。光淀村之河北梆子流传与封存状况比好,没有出现濒危的情景,平时上演吧不丢,村里老少都喜爱看,在周围县也来影响力。


“对于光淀村河北梆子的下提高,您是获取在怎么的意?”

2. 认识世界事件

当用户在购物车点击结算时,生成待付款订单,若支付成功,则更新订单状态也已经支出,扣减库存,并推送捡货通知消息及捡货中心。

每当是用例中,“订单支付成功”就是一个世界事件。

考虑一下,在公从未接触领域事件或者EDA(事件驱动架构)之前,你晤面怎么兑现这用例。肯定是略直接的主意调用,在一个政工中分别去调用状态更新方法、扣减库存方法、发送捡货通知方法。这无可厚非,毕竟之前还是这样提到的。

那么这样设计来什么问题?

  1. 试想一下,若现在要求开成功后,需要分外发送一条付款成功通知到微信公众号,我们怎么落实?想必我们要分外定义发送微信通知的接口并封装参数,然后还补充加对艺术的调用。这种做法虽然好解决急需的变动,但生明确不够利索耦合性强,也背了OCP。
  2. 将大半单操作放在和一个事情中,使用工作一致性可以管多独操作还是全部成功或者全部黄。在一个作业中拍卖多单操作,若其中一个操作失败,则通砸。但是,这在业务上是无允的。客户成功开发了,却发现订单依然呢用会,这会招纠纷的。
  3. 背了集的相同非常条件:在一个政工中,只针对一个会合进行修改。在斯用例中,很显我们以一个业务中针对订单聚合和库存聚合进行了修改。

那什么缓解这些问题?我们得依靠领域事件的能力。

  1. 解耦,可以由此公布订阅模式,发布领域事件,让订阅者自行订阅;
  2. 经世界事件来达到最后一致性,提高系统的安澜以及总体性;
  3. 事件本源;
  4. 等等。

下面我们尽管来平等平深切。

四十度的烈日下,张老师还坚持而送我们去。他积极为我们寻找了同部车,还叮嘱我们,有空得要是常常回来看看。就这样,我们了了这次的可靠调研。

4. 末段一致性

说到一致性,我们如果先期来懂下面几乎个概念。

业务一致性
事务一致性是是数据库事务的季独特征有,也不怕是ACID特性之一:

原子性(Atomicity):事务作为一个完好无缺为实施,包含在中的针对数据库的操作还是全部被实施,要么都不履。
一致性(Consistency):事务应保证数据库的状态从一个一样状态转变为任何一个一律状态。
隔离性(Isolation):多只工作并发执行时,一个事情之执行不承诺影响外事情的施行。
持久性(Durability):已让交付的事情对数据库的改该永久保存于数据库中。

俺们就此同一张图来掌握一下:

语言 4
在业务一致性的包下,上面的图示只会来三三两两单结果:

  1. A和B两只操作都成了。
  2. A和B两个操作都未果了。

数一致性
推个大概的事例,假而10个人口,每人出100单虚拟币,虚拟币仅会于这10人数外流通,不管怎么流通,最终的虚拟币总数都是1000只,这便是数据一致性。

领域一致性
概括了解就是是于天地被之操作而满足领域面临定义之政工规则。比如您转账,并无是若余额充足就可以转化的,还求账户的状态为非挂失、锁定状态。

返回我们的案例,当支付成功后,更新订单状态,扣减库存,并发送捡货通知。按照我们往底做法,为了保障订单和库存的数量一致性,我们用即刻三独操作放到一个应用服务去做(因为应用服务管理工作),事务之一致性可以确保要么全部遂或者全部惜败。但是,试想一下,客户开发成功后,订单仍吧用会状态,这会引起纠纷。另外,由于库存没有这扣减,很可能会见招致库存超卖。怎么处置吧?
拿事情拆解,使用世界事件来齐最后一致性。

最终一致性
“最终一致性”是一模一样种植设计艺术,可以透过将或多或少操作的施行延迟到稍后底时空来增强应用程序的只是扩展性和性能。

语言 5

对于广于分布式系统的最后一致性工作流中,客户同样于系受实施一个令,但此系统只也掩护工作中之圈子一致性运行有的操作,剩余的操作以同意延后推行。针对上图的结果:

  1. A操作实践成功,B操作将延后执行。
  2. A操作失败,B操作将非会见实施。

假使针对性我们的案例,我们怎样使领域事件来进展作业拆分呢?我们看下下面这张图你就明白了。

语言 6

解析一下,针对我们案例,我们发现一个用例需要改多只聚合根的景,并且不同的聚合根还处在不同之疆界上下文中。其中订单和库存均为聚合根,分别属于订单系统及库存系统。我们可如此做:

  1. 于订单所于的聚合根中创新订单支付状态,并公布“订单成功开发”的天地事件;
  2. 然后库存系统订阅并拍卖库存扣减逻辑;
  3. 照会系统订阅并拍卖捡货通知。

透过这种艺术,我们即便确保了集聚的极,又确保了数码的结尾一致性。

随着张先生带我们错过矣村里专门放戏剧行头的房子,并还呢咱展示了衣物与道具。作为一个民营的、完全不赢利的业余社团,其所拥有的行头数量的多、种类之重远跳我们想象。蟒袍、官衣、箭衣、褶子等等,不胜枚举。张先生怀着兴奋的心思,用骄傲的语气也咱各个讲解戏服的历史及渊源,还有她所制成的素材。其中有机绣的,有手绣的,甚至还发苏绣的。这些昂贵之衣显然都是国民们团结掏钱所请,从侧又体现了当地平民对河北梆子这个戏种深深的热衷之情。我们逐一看去,不得不说衣服制作的精彩,看见戏服就可知想象到演员以台上的行云流水般的表演,唱念做打之姣好。使我们更同潮被了动。

我们此次调研地处于白洋淀的不过深处,三迎环水,水面及发出大片大片的莲花和荷叶,大来“接天莲叶无穷碧,映日荷花别类红”的景点,村子里也根本清爽,不像一些农村泥泞遍地,灰尘漫天。这里的庄稼汉绝大部分都疼爱河北梆子,甚至为京剧在此地都尚未什么“市场”。本来认为光淀村四面环水,会坐船过去,徜徉荷花淀里头,后来发觉发陆路直达,乡下的路程为够呛颠簸,一路之上除了发了有略带场面之外,还是比较顺利的,沿途的风光也突然的好看。

其呢,对于那些理想的风俗习惯技术来说,我们政府当加大力度去扶,去放,去宣传。有的东西流传至今真的不应被废弃,它们的随身具有民族之血液和烙印。同时我们青年是未是也相应别自己之思想意识,去押同样关押我们传统的方,接受传统文化之熏陶呢?当我们见到那些濒危技艺传承人们失落惆怅但依旧岿然不动地坚持在好的硬挺的时节,当我们看见那些传统技术里的光明和中华民族技艺时候,我们的中心会不见面产生雷同丝震撼,一丝感动呢?

提起河北梆子生存的现状,张老师告诉我们,首先学玩的人数越来越少,因为这个演出是匪扭亏的。年轻人们也越发不便于下苦功钻研,很多绝活都守失传。比起以前的时河北梆子的情景不容乐观,但是同别的地方比,光淀村里仍是一致片沃土。全国梆子专业社团里的片段正式演员,都是由光淀村走出去的。说交此地,张老师开心地笑笑了。

“我本着河北梆子的进化状况还是老大达观的,它以咱们这同一切开(指雄城、安新、任丘等地)是可怜流行的。但是再过一个四五十年也?我们尽管不得而知。”

一样是事物总起一个发出向上消灭的长河,有有传统文化中的东西发展至今,已没大高之承受价值,随着城市化的促进,本来就以聊范围里流传的事物的毁灭也是向上规律的一律绕,有的文化长期并未发展改善,甚至现在还是沿袭几百年前的模式,与当代社会之点子不相容,被淘汰掉是肯定的,与那个死拉硬拽,“苟延残喘”,只相当于公立救济,哭诉苦衷,不如自己开展改制,适应社会之腾飞,不然其灭失是不可避免的,“堡垒往往是自里边攻克之”,内盖不转移,何以传承。

发表评论

电子邮件地址不会被公开。 必填项已用*标注

网站地图xml地图