Newbe.Claptrap 框架如何实现 Claptrap 的多样性?最近整理了一下项目的术语表.今天就谈谈什么是 Claptrap Design 和 Claptrap Factory. 特别感谢 kotone 为本文提供的校对建议! Newbe.Claptrap 是一个用于轻松应对并发问题的分布式开发框架.如果您是首次阅读本系列文章.建议可以先从本文末尾的入门文章开始了解. Claptrap Design 实现 Claptrap 的高可定制性 Claptrap 拥有较高的可定制性.开发者可以…
Newbe.Claptrap 项目是笔者正在构建以反应式.Actor模式和事件溯源为理论基础的一套服务端开发框架.本篇我们将来了解一下框架在水平扩展方面的能力. 前情提要 时隔许久,今日我们再次见面.首先介绍一下过往的项目情况: 第一次接触本框架的读者,可以先点击此处阅读本框架相关的基础理论和工作原理. 日前,我们也编写了一些预热文章和工具,读者可以通过以下链接进行了解: 谈反应式编程在服务端中的应用,数据库操作优化,从 20 秒到 0.5 秒 docker-mcr 助您全速下载 dotnet…
让我们来实现一个简单的 “电商购物车” 需求来了解一下如何使用 Newbe.Claptrap 进行开发. 业务需求 实现一个简单的 “电商购物车” 需求,这里实现几个简单的业务: 获取当前购物车中的商品和数量 向购物车中添加商品 从购物车中移除特定的商品 安装项目模板 首先,需要确保已经安装了 .NetCore SDK 3.1 .可以点击此处来获取最新的版本进行安装. SDK 安装完毕后,打开控制台运行以下命令来安装最新的项目模板:   dotnet new --install Newbe.Cl…
Newbe.Claptrap 框架中为什么用 Claptrap 和 Minion 两个词?最近整理了一下项目的术语表.今天就谈谈为什么起了 Claptrap 和 Minion 两个名字. Claptrap 简单来说 Claptrap = Actor + 事件溯源 Claptrap 是本框架定义的一种特殊 Actor.除了上文中提到 Actor 两种特性之外,Claptrap 还被定义为具有以下特性: 状态由事件进行控制.Actor 的状态在 Actor 内部进行维护.Claptrap 同样也是如…
接上一篇 Newbe.Claptrap 框架入门,第一步 —— 创建项目,实现简易购物车 ,我们继续要了解一下如何使用 Newbe.Claptrap 框架开发业务.通过本篇阅读,您便可以开始尝试使用 Claptrap 实现业务了. 开篇摘要 本篇,我通过实现 “清空购物车” 的需求来了解一下如何在已有的项目样例中增加一个业务实现. 主要包含有以下这些步骤: 定义 EventCode 定义 Event 实现 EventHandler 注册 EventHandler 修改 Grain 接口 实现 G…
Newbe.Claptrap 框架非常适合于解决具有并发问题的业务系统.火车票售票系统,就是一个非常典型的场景用例. 本系列我们将逐步从业务.代码.测试和部署多方面来介绍,如何使用 Newbe.Claptrap 框架来构建一个简易的火车票售票系统. 吹牛先打草稿 让我们来首先界定一个这个简易的火车售票系统所需要实现的业务边界和性能要求. 业务边界 该系统仅包含车票的余票管理部分.即查询剩余座位,下单买票减座. 而生成订单信息,付款,流量控制,请求风控等等都不包含在本次讨论的范围中. 业务用例 查…
Newbe.Claptrap 框架中 State 和 Event 应该如何理解?最近整理了一下项目的术语表.今天就谈谈什么是 Event 和 State. Newbe.Claptrap 是一个用于轻松应对并发问题的分布式开发框架.如果您是首次阅读本系列文章.建议可以先从本文末尾的入门文章开始了解. 事件 Event Claptrap 是基于事件溯源的 Actor 模式.事件自然就起到了至关重要的作用. 想要操作 Claptrap 就需要对其传递事件.事件也是改变 Claptrap State 的…
Newbe.Claptrap 框架如何实现多级生命周期控制?最近整理了一下项目的术语表.今天就谈谈什么是 Claptrap Lifetime Scope. 特别感谢 kotone 为本文提供的校对建议! Newbe.Claptrap 是一个用于轻松应对并发问题的分布式开发框架.如果您是首次阅读本系列文章.建议可以先从本文末尾的入门文章开始了解. Claptrap 生命周期按照笔者的看法分为两大类进行阐述:运行时生命周期和设计时生命周期. 运行时生命周期 运行时生命周期是指 Claptrap 系统…
Newbe.Claptrap 框架如何实现在多种框架之上运行?最近整理了一下项目的术语表.今天就谈谈什么是 Claptrap Box. 特别感谢 kotone 为本文提供的校对建议! Newbe.Claptrap 是一个用于轻松应对并发问题的分布式开发框架.如果您是首次阅读本系列文章.建议可以先从本文末尾的入门文章开始了解. Claptrap Box 使 Claptrap 能够运行在更多框架之上 Claptrap 是基于 Actor 模式实现的一种对象.其仅具备处理事件和状态控制相关的能力.因此…
接上一篇 Newbe.Claptrap 框架入门,第二步 —— 简单业务,清空购物车 ,我们继续要了解一下如何使用 Newbe.Claptrap 框架开发业务.通过本篇阅读,您便可以开始学会添加一个全新的 Claptrap. Newbe.Claptrap 是一个用于轻松应对并发问题的分布式开发框架.如果您是首次阅读本系列文章.建议可以先从本文末尾的入门文章开始了解. 开篇摘要 本篇,我通过实现 “管理库存” 的需求来了解一下如何在已有的项目样例中定义一个 Claptrap. 结合前一篇的基本步骤…
接上一篇 Newbe.Claptrap 框架入门,第三步 —— 定义 Claptrap,管理商品库存 ,我们继续要了解一下如何使用 Newbe.Claptrap 框架开发业务.通过本篇阅读,您便可以开始学会在 Claptrap 框架中使用 Minion 进行异步的业务处理. Newbe.Claptrap 是一个用于轻松应对并发问题的分布式开发框架.如果您是首次阅读本系列文章.建议可以先从本文末尾的入门文章开始了解. 开篇摘要 本篇,我通过实现 “商品下单” 的需求来了解一下如何在已有的项目样例中…
Newbe.Claptrap 框架依托于一些关键性的基础组件和一些可选的辅助组件.本篇我们来介绍一下如何准备一个开发环境. Newbe.Claptrap 是一个用于轻松应对并发问题的分布式开发框架.如果您是首次阅读本系列文章.建议可以先从本文末尾的入门文章开始了解. 必要组件 这些组件是使用本框架进行开发是必须要安装的组件. Docker Desktop Docker Desktop 是以下所有组件运行的基础.开发可以通过以下链接下载对应操作系统的版本并进行安装: https://www.doc…
接上一篇 Newbe.Claptrap 框架入门,第一步 -- 开发环境准备 ,我们继续了解如何创建一个 Newbe.Claptrap 项目. Newbe.Claptrap 是一个用于轻松应对并发问题的分布式开发框架.如果您是首次阅读本系列文章.建议可以先从本文末尾的入门文章开始了解. 安装项目模板 打开控制台运行以下命令来安装最新的项目模板: dotnet new --install Newbe.Claptrap.Template 安装完毕后,可以在安装结果中查看到已经安装的项目模板. 创建项…
反应式编程在客户端编程当中的应用相当广泛,而当前在服务端中的应用相对被提及较少.本篇将介绍如何在服务端编程中应用响应时编程来改进数据库操作的性能. 开篇就是结论 接续上一篇<谈反应式编程在服务端中的应用,数据库操作优化,从 20 秒到 0.5 秒>之后,这次,我们带来了关于利用反应式编程进行 upsert 优化的案例说明.建议读者可以先阅读一下前一篇,这样更容易理解本篇介绍的方法. 同样还是利用批量化的思路,将单个 upsert 操作批量进行合并.已达到减少数据库链接消耗从而大幅提升性能的目的…
.Net Conf: Focus on Microservices 是 .Net Conf 社区在 2020 年 7 月 30 日举办的线上分享活动.整个活动视频长达近 10 个小时.今天我们来看看都发生了什么. 章节汇总 本次分享由十多位来自全球的资深技术专家在线分享,涵盖了当前 .Net 在微服务领域的利器.包括有以下这些内容: .Net 最新特性与微服务 为何关注微服务(Why You Should Care About Microservices) 保持技术敏锐(Stay Sharp)…
小孩子才做选择,成年人全都要.那么我们现在就来看看如何获得一台免费的 8 核 4G 公网 Docker 实验平台服务器. Play With Docker 直接打开 https://labs.play-with-docker.com/ 即可访问 Play With Docker 平台.注册一个 DockerHub 账号便可以访问这个站点,轻松地获得一台 8 核 4G 的公网服务器.接下来我们就来了解一下如何使用这台服务器进行一些 Docker 的操作. 部署 Nginx 本示例,我们部署一个 n…
最近在为 Newbe.Claptrap 做性能升级,因此将过程中使用到的 dotTrace 软件的基础用法介绍给各位开发者. Newbe.Claptrap 是一个用于轻松应对并发问题的分布式开发框架.如果您是首次阅读本系列文章.建议可以先从本文末尾的入门文章开始了解. 开篇摘要 dotTrace 是 Jetbrains 公司为 .net 应用提供的一款 profile 软件.有助于对于软件中的耗时函数和内存问题进行诊断分析. 本篇,我们将使用 Jetbrains 公司的 dotTrace 软件对…
最近正巧在进行 Newbe.Claptrap 新版本的开发,其中使用到了 Tye 来辅助 k8s 应用的开发.该系列我们就来简单了解一下其用法. Newbe.Claptrap 是一个用于轻松应对并发问题的分布式开发框架.如果您是首次阅读本系列文章.建议可以先从本文末尾的入门文章开始了解. 安装 Tye 首先,确保已经正确安装了 netcore 2.1 或以上版本的 dotnet SDK. Tye 目前还处于开发阶段,因此,目前只能安装预览版本进行使用.通过以下链接可以搜索到当前最新的版本,并复制…
续上篇,这篇我们来进一步探索 Tye 更多的使用方法.本篇我们来了解一下如何在 Tye 中使用服务发现. Newbe.Claptrap 是一个用于轻松应对并发问题的分布式开发框架.如果您是首次阅读本系列文章.建议可以先从本文末尾的入门文章开始了解. 服务发现 - 微服务开发不可缺少的部件 服务发现,就是新注册的这个服务模块能够及时的被其他调用者发现.不管是服务新增和服务删减都能实现自动发现.<深入了解服务注册与发现> https://zhuanlan.zhihu.com/p/161277955…
续上篇,这篇我们来进一步探索 Tye 更多的使用方法.本篇我们来了解一下如何在 Tye 中如何对数据库进行链接. Newbe.Claptrap 是一个用于轻松应对并发问题的分布式开发框架.如果您是首次阅读本系列文章.建议可以先从本文末尾的入门文章开始了解. 中间件链接 绝大多数服务都需要用到外部中间件来支持应用程序的正常运行,通常来说,就包含有数据库.缓存中间件.消息队列和文件系统等等. 因此,在开发过程中需要在应用程序中管理对这些中间件的链接字符串. Tye 提供了一种方式以便更加容易的管理这…
续上篇,这篇我们来进一步探索 Tye 更多的使用方法.本篇我们来了解一下如何在 Tye 中如何进行日志的统一管理. Newbe.Claptrap 是一个用于轻松应对并发问题的分布式开发框架.如果您是首次阅读本系列文章.建议可以先从本文末尾的入门文章开始了解. 必不可少的日志管理 对应用进行日志记录和分析是诊断排查线上问题的重要手段.而简单基于控制台或者文件的直接记录既不利于开发者直接读取也不利于大规模分析. 因此,开发者往往会选择一些诸如 Exceptionless 或者 ELK 之类的日志管理…
续上篇,这篇我们来进一步探索 Tye 更多的使用方法.本篇我们来了解一下如何在 Tye 中实现对分布式链路追踪. Newbe.Claptrap 是一个用于轻松应对并发问题的分布式开发框架.如果您是首次阅读本系列文章.建议可以先从本文末尾的入门文章开始了解. 我是谁?我在哪儿?我咋了? 分布式系统纷繁复杂,特别以现在微服务架构的出现,使得应用系统中的应用实例变得更加多变难以捉摸. 那么如何在如此繁杂的系统中找到一条业务调用链的上下游关系.性能细节.业务数据等等成为了一项开发者必然要面对的挑战. 使…
续上篇,这篇我们来进一步探索 Tye 更多的使用方法.本篇我们将进一步研究 Tye 与分布式应用程序运行时 Dapr 如何碰撞出更精彩的火花. Newbe.Claptrap 是一个用于轻松应对并发问题的分布式开发框架.如果您是首次阅读本系列文章.建议可以先从本文末尾的入门文章开始了解. 巧了,巧了,真是巧了 今天正值 dapr 1.0 发布的日子.如果你暂时还不了解什么是 dapr. 那不如通过以下简短的视频来了解一下什么是 dapr: https://www.bilibili.com/vide…
本文是关于 Newbe.Claptrap 项目主体内容的介绍,读者可以通过这篇文章,大体了解项目内容. 轮子源于需求 随着互联网应用的蓬勃发展,相关的技术理论和实现手段也在被不断创造出来.诸如 “云原生架构”.“微服务架构”.“DevOps” 等一系列关键词越来越多的出现在工程师的视野之中.总结来看,这些新理论和新技术的出现,都是为了解决互联网应用中出现的一些技术痛点: 更高的容量扩展性要求.在商业成功的基础前提下,互联网应用的用户数量.系统压力和硬件设备数量等方面都会随着时间的推移出现明显的增…
Newbe.Claptrap 项目周报 1,第一周代码写了一点.但主要还是考虑理论可行性. 第一次接触本框架的读者,可以先点击此处阅读本框架相关的基础理论和工作原理. 周报是啥? 成功的开源作品,离不开社区贡献者的积极参与.作为一个新启动的轮子项目,项目联合创始人[月落]有交代: “我知道你代码能力也不怎么样,你就把你的想法每周的交代清楚.让他人看到项目的价值.等待越来越多的人发现项目价值所在的时候,自然就会给予更多的关注,甚至于参与的项目的开发当中.所以你要每周都写一下周报.周报最好侧重于讲解…
Newbe.Claptrap 0.4.4 发布,模型验证器上线. 更新内容 完全基于表达式树的模型验证器 本版本,我们带来了基于表达式树实现的模型验证器.并实现了很多内置的验证方法. 我们罗列了与 FluentValidation 比较的情况: Build in Validators FluentValidation 9.X Newbe.ObjectVistor NotNull ️ ️ NotNull; class NotEmpty ️ ️ NotEmpty; string,enumerable…
之前写了一系列关于.NET Core/ASP.NET Core的文章,但是大都是针对RC版本.到了正式的RTM,很多地方都发生了改变,所以我会将之前发布的文章针对正式版本的.NET Core 1.0进行改写.除此之外,我还会撰写一系列与此相关的文章,这些文章以ASP.NET Core为核心,我个人将它们分成三个主要的部分,即编程基础.支撑框架和管道详解.其中编程基础主要涉及与ASP.NET Core独特的编程模型和相关编程技巧.支撑框架则介绍支撑ASP.NET Core的多个独立的框架,比如依赖…
预筹备之 JavaScript 今朝支流的 JavaScript 框架排名中,jQuery 和 Ext 可算是佼佼者,得到了用户的普遍好评.海内的一些框架许多也是模仿 jQuery 对 JavaScript 停止了包装,不外这些框架的开山祖师 YUI 照样坚持用自己的 JavaScript 类库. jQuery 是今朝用的最多的前端 JavaScript 类库,据初步统计,今朝 jQuery 的占有率曾经跨越 46%,它算是比拟轻量级的类库,对 DOM 的操纵也比拟便利到位,支撑的后果和控件也许…
本文为微信公众号[深度学习大讲堂]特约稿,转载请注明出处 虚拟框架杀入 从发现问题到解决问题 半年前的这时候,暑假,我在SIAT MMLAB实习. 看着同事一会儿跑Torch,一会儿跑MXNet,一会儿跑Theano. SIAT的服务器一般是不给sudo权限的,我看着同事挣扎在编译这一坨框架的海洋中,开始思考: 是否可以写一个框架: import xx.tensorflow as tensorflow import xx.mxnet as mxnet import xx.theano as th…
简介 Apworks是一款基于Microsoft .NET的面向领域驱动的企业级应用程序开发框架,它适用于以领域模型为核心的企业级系统的开发和集成.Apworks不仅能够很好地支持经典的分层架构,而且还能支持基于事件驱动的命令查询职责分离(Command-Query Responsibility Segregation, CQRS)架构. 随着软件系统日趋复杂,构建一套可用的.稳定的.可扩展的.安全的以及高效的系统变得越来越困难.为了解决这样的困难,人们在多年的软件开发过程中积累了不少经验,由其…