首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

VBA代码:拆分工作簿示例——将工作簿中每个工作保存为单独工作簿

标签:VBA 有时候,我们想将工作簿中每个工作都保存为一个单独工作簿。 你可以使用下面的操作逐个保存工作: 1.在工作标签中单击右键。 2.选取“移动或复制…”命令。...图1 这样,有多少工作,你就要操作上面的步骤多少次。 然而,如果存在很多个工作簿,这样重复工作使用VBA是最合适。...msoFileDialogFolderPicker) .InitialFileName =Application.DefaultFilePath & "\" .Title = "选择保存工作位置...Next wks Application.ScreenUpdating = True Application.DisplayAlerts = True End Sub 只需在要拆分工作簿中运行上述代码...,就可将该工作簿中所有工作全部保存为单独工作簿。

3.8K10

领域驱动设计学习之路—DDD原则与实践

模块模式:代表着以对象形式建模数据,数据驱动 活动记录模式:类似模块,数据驱动,关注行而非本身 贫血模式:类似领域模型,不包含任何行为,纯粹一个对象状态模型,需要一个单独服务类来实现行为...六、使用有界上下文维护领域模型完整性 ?   ...有界上下文就是划分和破除这种大模型有效方式,一个有界上下文就是一个语言边界,它可以隔离模型以避免领域术语在不同上下文歧义。...而我们常常提到微服务,个人感觉更像是有界上下文一种技术实现途径之一,有界上下文中具有较高自主性,拥有从展现层、领域逻辑层再到持久化层完整代码堆栈,正应对了我们每一个微服务应用程序,也具有较高独立性...书中还提到一个重要观点,那就是“并非所有有界上下文都共享相同架构模式”,换句话说就是可以将不同架构模式应用到不同有界上下文中。

1.9K50
您找到你想要的搜索结果了吗?
是的
没有找到

可视化微服务:设计微服务系统

DDD一些概念 - 最明显是“有界上下文概念 - 已经得到了普及,并启动了关于服务边界定义行业对话。...自助银行和客户以及卡片管理子域名被突出显示,因为它们已被确定为解决方案关键子域名。使用DDD“语言边界”概念,显然会有一些有界上下文出现在子域中。 在自助银行内部,有两种截然不同有界上下文。...核心客户信息 - 包括银行客户权威列表,他们联系信息以及他们产品库 - 形成了一个独特词汇,我们将其称为客户信息有界上下文。另一种不同语言被用来描述卡功能,这主要与支付活动有关。...最后,由于向客户帐户发布交易可以晚于授权决定发布时间,因此我们将创建与授权服务分离交易过帐服务。 对于产品子域,我们只会在每个有界上下文中引用单个同名服务。...事实上,人们可能想要模拟有界上下文之间相互作用,以便梳理出单个服务,但为了叠加视觉效果,我们将在最后描述这一步骤。

1.1K70

学习分享:DDD领域驱动设计指导微服务实践

以火车为例,每个车厢都要符合承重要求,行李车厢承重能力要高于其他车厢,车厢间连接要牢固且易于拆解,有足够灵活性方便转弯。...举个例子,从北京到上海出差,可以先理解为使用交通工具前往,但不需要一开始就想清楚到底是高铁还是飞机,以及乘坐他们需要注意什么 3、知识 通过知识手段抽象出限界上下文以及如何去分治 二、DDD概览 DDD...全称为“Domain Driven Design”,意思是领域驱动设计,基于业务知识设计系统,代码反映业务,它将真实业务概念和业务规则转换为软件系统中概念和规则,在一个个有界上下文中发挥其作用,完成用户要求功能...需要在有界上下文中验证 举个例子:假如有父亲和儿子这两个,生成 POJO 应该是 public class Father{…} public class Son{ //son 表里有 fatherId...,以数据库作为系统导向,但是DDD建议应该先着眼于业务本身,减少对数据库结构依赖,避免业务发生变化,把我们打得措手不及,它把你思考起点从技术角度拉到了业务上。

95840

微服务之间最佳调用方式

DDD中有一个很重要概念,有界上下文(Bounded Context),可以用有界上下文来划分微服务,每个有界上下文都可以是一个微服务。下面是有界上下文示例。...有界上下文一个关键是如何处理共享成员, 在图中是“Customer”和“Product”。...在不同有界上下文中,共享成员含义、用法以及他们对象属性都会有些不同,DDD建议这些共享成员在各自有界上下文中都分别建自己类(包括数据库),而不是共享。...DDD(Domain-Driven Design)建议不要共享这个类,而是在每一个有界上下文(模块)中都建一个新类,并拥有新名字。...虽然它们数据库中数据应该大致相同,但DDD建议每一个有界上下文中都建一个新,它们之间再进行数据同步。

3.3K11

微服务之间最佳调用方式

DDD中有一个很重要概念,有界上下文(Bounded Context),可以用有界上下文来划分微服务,每个有界上下文都可以是一个微服务。下面是有界上下文示例。...有界上下文一个关键是如何处理共享成员, 在图中是“Customer”和“Product”。...在不同有界上下文中,共享成员含义、用法以及他们对象属性都会有些不同,DDD建议这些共享成员在各自有界上下文中都分别建自己类(包括数据库),而不是共享。...DDD(Domain-Driven Design)建议不要共享这个类,而是在每一个有界上下文(模块)中都建一个新类,并拥有新名字。...虽然它们数据库中数据应该大致相同,但DDD建议每一个有界上下文中都建一个新,它们之间再进行数据同步。

77800

聊聊 微服务之间几种调用方式

DDD中有一个很重要概念,有界上下文(Bounded Context),可以用有界上下文来划分微服务,每个有界上下文都可以是一个微服务。下面是有界上下文示例。...有界上下文一个关键是如何处理共享成员, 在图中是“Customer”和“Product”。...在不同有界上下文中,共享成员含义、用法以及他们对象属性都会有些不同,DDD建议这些共享成员在各自有界上下文中都分别建自己类(包括数据库),而不是共享。...DDD(Domain-Driven Design)建议不要共享这个类,而是在每一个有界上下文(模块)中都建一个新类,并拥有新名字。...虽然它们数据库中数据应该大致相同,但DDD建议每一个有界上下文中都建一个新,它们之间再进行数据同步。

39911

领域驱动设计实践:支付系统建模

这些模式包括有界上下文上下文映射、实体、聚合体、领域事件、领域服务、应用服务和基础设施。这些战术模式将帮助你设计既松散耦合又有凝聚力微服务 。...定义解决方案空间中有界上下文有界上下文中,应用战术性DDD模式来定义实体、聚合、领域服务、领域事件等。 使用上一步结果来确定你团队中微服务。 以下是分析结果。...付款视图:一个聚合付款细节视图,包含与一个付款有关所有数据。 解决方案空间 有界上下文 有界上下文(BC)限定了一个领域模型范围。从问题空间分析结果来看,我们可以定义以下有界上下文。...从领域模型到微服务 现在,我们已经为支付系统定义了一组有边界上下文,并在每个有边界上下文中确定了一组实体、集合体和领域事件服务。 下一步就是要从领域模型到应用微服务设计。...在这里,我们选择将一个有界上下文映射到一个微服务。 结论 在这篇博客中,当我们试图对支付系统进行建模时,我们触及了领域驱动设计(DDD)模式各种概念和策略。

1.2K10

微服务设计模式

解决 对于“神类”问题,DDD(领域驱动设计)可以解决。它使用子域和有界上下文概念来解决此问题。DDD将为企业创建整个域模型分解为子域。每个子域都有一个模型,该模型范围称为有界上下文。...每个微服务将围绕有界上下文进行开发。 注意:确定子域并非易事。它需要对业务了解。像业务功能一样,通过分析业务及其组织结构并确定不同专业领域来标识子域。...每个微服务应具有一个单独数据库ID,以便可以给予单独访问权限以设置障碍并防止其使用其他服务。...每个服务共享数据库 问题 我们已经讨论了每个服务一个数据库是微服务理想选择,当应用程序是未开发并且要使用DDD开发时,这是可能。...解决 Saga代表由几个子请求组成高级业务流程,每个子请求在单个服务中更新数据。每个请求都有一个补偿请求,该请求在请求失败时执行。

61950

聊聊有界上下文

在深入探讨有关DDD(领域驱动设计)方面的有界上下文之前,我们先来了解一下它在现实世界中意义。我们知道人类是最聪明物种,并创造了不同国家来统治。...在同一个国家,每个公民都遵循一些预定义规则、语言和风格。他们懂得共同语言、法律、货币和风格,所以我可以说,在一个国家里,公民之间是同步,那个国家有一个统一文化,每个公民都遵循和理解。...通知系统:它会通知老师和学生关于时间和时间间隔信息。 所以,有四个有界上下文:注册,付款,调度和通知。 现在,让我们深入了解每个模块如何表示教师,学生和课程模型。...无处不在语言概念在这里交织在一起,使用无处不在语言DDD来创建一个统一系统,在这个系统中,每个参与者都能根据上下文理解语言。 现在,常见问题是为什么有界上下文术语在微服务中如此流行?...业务域将业务逻辑分解为多个有界上下文每个有界上下文都是一个单独代码库,并通过上下文映射进行通信。

1.9K30

领域驱动设计简介(上篇)

类似地,开发人员不会讨论数据库数据列以及新字段类型。 DDD严格要求我们开发出一种无处不在语言。...DDD称之为有界上下文(BC)。每个域模型都只存在于一个BC中,BC只包含一个域模型。 我必须承认,当我第一次读到关于BC时,我看不出重点:如果BC与领域模型一样,为什么要引入一个新术语?...图2:有界上下文关系谱 然而,当我们走向跟从模式时,我们只是一起调用和被调用; 一个BC明显屈服于另一个。如果我们必须与购买megabucks总分类帐系统集成,那可能就是我们所处情况。...图3显示了我过去5年左右一直在研究系统上下文映射。 图3:上下文映射示例 所有这些关于有界上下文图和BC讨论有时被称为战略性DDD,并且是有充分理由。...如果表现层有单独存储空间中(比如手机终端),应用层也充当表现层和领域层之间中介。表现层通常处理领域对象或其他对象(数据传输对象或DTO)可序列化表示,通常每个“视图”一个。

38820

如何构建基于 DDD 领域驱动微服务?

例如,自动化测试,持续集成和持续交付 简而言之,我们可以将这种体系结构样式总结如下: 松耦合面向服务体系结构,其中每个服务都包含在定义明确有界上下文中,从而可以快速,频繁且可靠地交付应用程序。...领域驱动设计(DDD)是关键,在我们看来,这是设计微服务时必不可少工具,无论是打破整体还是实施未开发项目。...子域属于问题空间,即您企业如何看待问题,而受限上下文属于解决方案空间,即我们将如何实施问题解决方案。从理论上讲,每个子域可能具有多个有界上下文,尽管我们努力为每个子域提供一个有界上下文。...微服务与有限上下文如何相关 现在,微服务在哪里适合?可以说每个有界上下文都映射到微服务吗?是的,我们将明白为什么。在某些情况下,有界上下文边界或轮廓可能很大。 考虑上面的例子。...购物车上下文负责订单在线授权;订单上下文流程过帐付款后付款流程;联络中心会处理所有例外情况,例如重试付款和更改用于订单付款方式 为了简单起见,让我们假设所有这些上下文都是作为单独服务实现 所有这些上下文封装了相同模型

41510

函数式编程后期架构

Sperber 给出了一个将系统代码划分为不同构建块例子。这是一种特别重要架构决策,可以单独处理不同构建块,也可以与不同团队一起协作。...实现这一点一种方法是对粗粒度构建块(有界上下文)使用领域驱动设计(DDD): DDD 是指,我们应该在开始时就通过上下文映射来识别有界上下文。...在探索和开发这些领域模型时,函数式程序员经常利用数学提供丰富词汇。由此产生抽象从根本上说是由函数语言所提供高级抽象设施实现。...因此,这些决策很有可能是错误。 InfoQ:在上下文之间移动边界变得如此困难原因是什么?...Sperber:在架构界,我们似乎忘了如何在有界上下文或单体中实现模块化,这就是为什么会有“模块化”这个新术语原因,这意味着常规单体在默认情况下是非模块化,其内部是紧密耦合

14810

为什么DDD难以教授?

这是一套技术工具,可以在最重要地方具体应用DDD方法。这些模式以与良好实践相同速度快速发展。一个众所周知例子是存储库模式。战术模式有助于了解如何构建业务每个部分。 ?...它们允许将域(业务)分类为子域,以便了解如何围绕它构建应用程序上下文每个上下文都有一个特定通用业务语言(无处不在语言),并使用精确通信方式。上下文是否将一些事情强加给另一个上下文?...根本原因分析 在我DDD教学领域,我认为有两个子领域:一个是战术,另一个是战略。 教授DDD有效实施将为战略模式绘制一个有界上下文,为战术模式绘制一个上下文。...这是我核心领域,是我在教授DDD时想要分享核心价值观。我上下文之间存在明显依赖关系。战术模式很重要,但如果我单独教他们带来价值不大。...但是在为新手教授DDD领域,我会强调战略模式,主要是有界上下文,因为这是可以导致所有其他模式模式。

73120

领域驱动设计

这有利于设计向前推进,取得足够进展,而不是掉进“我模型被强制转化成石头”这一陷阱。 在DDD中,这些小模型存在于上下文边界,这些有界上下文相互关联方式称为上下文映射。...上下文边界 对于每一个模型,应该有意和明确地去定义其所处上下文。创建上下文并没有特定规则,但重要是让每个人都能理解上下文边界条件。...上下文映射 上下文映射是针对连接点设计过程,同时有界上下文之间转义关系应该被明确反应出来。我们应该着重于处理现有界限之间映射关系,之后再去处理实际转换。 ?...HOT TIP:在单个有限上下文中使用持续集成,以缓解由于不同理解产生过多碎片矛盾。频繁代码合并,自动化测试,使用通用语言都会加剧促使有界上下文中碎片产生。...消费者/生产者开发团队 当一个有界上下文服务于或者消费另一个有界上下文,那么下游上下文将会依赖于上游上下文。明确上下文处于上游或者下游能使其提供者或者消费者身份变得更加清晰。 ?

96590

「第二部:容器和微服务架构」(8) 识别每个微服务领域模型边界

在确定每个微服务模型边界和大小时,目标并不是尽可能实现最细粒度分离,尽管如果可能的话,您应该倾向于使用较小微服务。相反,您目标应该是在您领域知识指导下实现最有意义分离。...Sam Newman是公认microservices发起人,也是《构建microservices》一书作者,他强调应该根据前面介绍有界上下文(BC)模式(领域驱动设计一部分)来设计microservices...你可能需要推翻康威法律,按照你希望公司组织方式建立边界,倾向于业务流程咨询。 要识别有界上下文,可以使用称为上下文映射模式DDD模式。使用上下文映射,可以标识应用程序中各种上下文及其边界。...例如,每个子系统都有不同上下文和边界。上下文映射是定义和明确域之间边界一种方法。BC是自治,包含单个详细信息(如域实体),并定义与其他BC集成合同。...这类似于微服务定义:它是自治,实现了一定域功能,并且必须提供接口。这就是为什么上下文映射和有界上下文模式是识别微服务域模型边界好方法。

36321

【翻译】函数式编程中领域驱动设计

战略模式 vs 战术模式 战略模式 vs 战术模式 领域驱动设计(DDD)分为战略模式和战术模式。 战略模式由限界上下文、通用语言和上下文映射等模式组成; 战术模式由值类型、实体和聚合等模式组成。...它们主要涵盖更高级别的软件设计,例如有界上下文上下文映射、反腐败层、有界上下文集成模式。 这些模式不依赖于所使用编程语言或框架。 然而,战术模式依赖于编程语言结构和范式。...关于代码库中实体位置任何假设可能不再有效; 在单个事务中更新多个实体任何尝试都将进入分布式事务不稳定领域。 因此,要避免这些陷阱,请遵循以下三个准则。 聚合作为事务边界:每个聚合用作事务边界。...消息用于聚合:无论您是构建微服务还是单体应用程序,你都不应该对其他聚合位置做出任何假设。每个聚合通过向其地址发送消息与另一个聚合进行通信 — 通过聚合唯一ID。...Lens 允许您更新深度嵌套值,并获取整个更新后聚合。 使用 Monoid 来表示值对象:本文档很好地解释了 DDD 上下文 Monoid。 使用基于属性测试来测试领域不变量。

96920

微服务设计模式

解决方案 对于“God Classes”问题,DDD(领域驱动设计)来拯救。它使用子域和有界上下文概念来解决这个问题。DDD 将为企业创建整个域模型分解为子域。...每个子域都有一个模型,该模型范围称为有界上下文每个微服务都将围绕有界上下文开发。 注意:识别子域并非易事。这需要对业务了解。...每个微服务都应该有一个单独数据库 ID,以便可以提供单独访问权限来设置障碍并防止它使用其他服务。...每个服务共享数据库 问题 我们已经讨论过每个服务一个数据库是微服务理想选择,但是当应用程序是未开发并使用 DDD 开发时,这是可能。...解决方案 一个 Saga 代表一个由多个子请求组成高级业务流程,每个子请求都更新单个服务中数据。每个请求都有一个在请求失败时执行补偿请求。

41720

在微服务中使用领域事件|洞见

在微服务(Microservices)架构实践中,人们大量地借用了DDD概念和技术,比如一个微服务应该对应DDD一个限界上下文(Bounded Context);在微服务设计中应该首先识别出DDD...显然,我们需要在订单和积分之间维护数据一致性,通常做法是在同一个事务中同时更新两者,但是这会存在以下问题: 违背DDD中"单个事务修改单个聚合根"设计原则; 需要在不同系统之间采用重量级分布式事务...如果JTA不是你选项,那么可以考虑采用事件方式。这种方式首先将事件保存到聚合根所在数据库中,由于事件和聚合根同属一个数据库,整个过程只需要一个本地事务就能完成。...然后,在一个单独后台任务中读取事件中未发布事件,再将事件发布到消息中间件中。 ?...另外,我们需要考虑到聚合更新和事件发布之间原子性,可以考虑使用XA事务或者采用单独事件。为了避免事件重复带来问题,最好方式是将事件消费方创建为幂等。 ----

74780

DDD 被高估了吗?

但我生气是,最近,似乎任何时候,当有人谈论如何设计系统或服务边界,或者只是提到非技术设计时,每个人都感觉不得不引进 DDD 专家——好像他们是唯一可以设计这些东西超级英雄。...在 DDD 战略维度中,最常用工具是“有界上下文概念——一个给定模型通常可以,而且应该被细分为更小单元,每个单元为特定概念赋予符合它们自己上下文特定含义。好主意!...这(当然)也不是 DDD 发明:它只是简单模块化设计,已经被设计大型系统的人们应用了几十年。 这是否意味着有界上下文概念有问题呢?不,事实上,该模式目的是为已经存在并证明了其价值东西命名。...我并不是说有界上下文有什么问题,我只是想指出,有些人可能在没有使用或甚至不知道这个特定称谓情况下做了出色系统设计。 在战术层面,人们忽略了一个更重要方面,特别是当他们将 DDD 作为设计入门时。...DDD 强调命名重要性,并建议你在设计中尽量使用一种通用、普遍存在语言。但对于系统设计领域,它也使用自己语言——诸如有界上下文、聚合、实体、值对象等概念。

31920
领券