Beef

Beef

加速企业API开发的高效框架

Beef是一个面向工业化API开发的框架,旨在提高开发效率和质量。它提供实体管理、数据验证、CRUD操作、分页等核心功能,同时支持事件驱动架构和自动化测试。通过标准化流程和丰富工具,Beef帮助开发团队更快速地交付高质量、低成本的企业级API。

Beef框架API开发微服务代码生成事件驱动架构Github开源项目
<br/>

Logo

<br/>

简介

Beef 框架主要是为了支持API开发的工业化而创建的。

一种让软件开发人员直接专注于加速交付业务价值的方式;以更高的质量和更低的总体成本持续产出。

主要的工业化目标是:

  1. 价值 - 专注于业务价值,而不是样板代码
  2. 加速 - 提高速度;降低成本和缩短上市时间
  3. 简单 - 提高有效使用率并最小化学习成本
  4. 标准化 - 增加知识资源池
  5. 一致性 - 提高整体质量和可维护性
  6. 灵活性 - 随时间推移轻松实现创新和演进
  7. 信心 - 缩短交付时间和降低风险
<br/>

演示

以下视频(包含声音)提供了 Beef 及其功能的高级演示。

https://github.com/Avanade/Beef/assets/12836934/693d4839-dfde-4360-9994-33f8dc10e3a1

<br/>

第5版

注意: Beef 的一个新的主要版本 第5版2023年1月26日发布。示例已相应更新,相关文档也已更新。因此,之前的版本(v4.x)的开发将在很大程度上停止;只会解决重大问题(一段时间内)。新版本主要是对底层运行时的重大重构(改进和简化),尽管努力将从v4升级的影响降到最低,但这不可避免。我们提供了指导,以帮助在适用的情况下从v4.2.x升级到v5.x

<br/>

组成

Beef 本质上是代码生成引擎和解决方案编排,最终依赖于以下功能以标准化(尽管有些固执己见)的方式实现最终功能和测试:

  • CoreEx - 提供核心运行时功能(扩展.NET core);
  • UnitTestEx - 提供扩展的单元和域内集成测试;
  • DbEx - 提供扩展的数据库管理功能;
  • OnRamp - 提供底层代码生成引擎功能。

在5.x版本之前,Beef 包罗万象。这些功能已被提取、简化并重构为独立的一流框架,并制作成上述列出的存储库。这允许它们独立于 Beef 使用和维护;因此,提供了更多的重用机会,而不是全有或全无。

<br/>

快速企业级API开发

由于 Beef架构、支持的框架和包含的代码生成功能,企业级API可以在几个小时内以标准化和一致的方式开发,而不是几天。

创建的API将具有以下开箱即用的功能,开发人员只需付出很少的努力,因此开发人员可以专注于关键的业务价值:

要实现这些包含的功能,实际上需要花费数月/年的时间来构建和测试;这些功能可供开发人员立即使用,如果愿意,也可以贡献回来。这些功能和实现受到了Microsoft云应用程序最佳实践的影响;具体来说:

开始使用,提供了一个.NET Core模板功能,使您能够在几分钟内启动并运行解决方案。

<br/>

架构

Beef 的开发旨在鼓励应用程序架构中微服务(API)的分层和分层的标准化和工业化。

<br/>

基于API的领域驱动、渠道无关的架构

概念架构如下; Beef 专门针对API层的实现。

Domains

主要概念如下:

  • 渠道无关 - API基于关键实体及其可执行的操作:

    • API代表关键信任边界;因此,它们不对消费者做任何假设。API将始终验证请求数据,并包含应用程序的功能业务和编排规则。
    • API不应该开发来服务特定的用户界面交互;因为API对消费者是不可知的。消费者有责任协调API调用。
  • 基于领域 – API基于并封装了功能领域的功能:

<br/>

微服务

创建基于领域的API的架构模式:

  • 是一种软件架构风格,其中复杂的应用程序由小型、独立的进程组成,这些进程使用与语言无关的API相互通信。
  • 这些服务很小、高度解耦,专注于完成一小部分任务,有助于模块化系统构建方法。
  • 实现独立性:
    • 松耦合 – 应该有自己的持久性存储库;数据是复制(同步)的,而不是共享的;最终一致性;没有分布式事务。
    • 多语言持久性/编程 – 使用最适合存储需求的持久性存储库;使用混合编程语言(适合目的)。注意: Beef 提供了C# / .NET实现方法作为一种选择。
    • 最终一致性 - 在大多数情况下,最终一致性就足够了;很少需要实时分布式事务完整性(尽管通常是期望的)。异步消息系统(如队列或服务总线)可以用于编排跨域数据(最终)一致性。

"微"并不意味着代码行数;而是域内的有界概念/业务能力。 - http://herdingcode.com

<br/>

分层

该架构支持基于领域的渠道无关的微服务方法。API服务端点代表业务(域逻辑)层的轻量级外观,该层最终负责完成请求。

以下代表该架构规定的分层:

Layers

基于此架构,使用 Beef 创建的.NET解决方案应遵循规定的解决方案结构

上面的每个关键层/组件都进行了进一步详细说明(Xxx表示实体名称);通过提供的链接可获得每个层的更多文档:

<br/>

事件驱动

为了支持事件驱动架构的目标, Beef 启用了关键功能;向事件流(或等效物)发布(生产者)和订阅(消费者)事件(消息)。

Layers

  • 生产者/发布者 - 事件发布集成到API处理管道中;这在数据(当利用事务性发件箱模式时)或服务编排层中启用,以确保方法的一致性。 Beef 在很大程度上与底层事件/消息基础设施(事件流)无关,必须由开发人员实现(除非提供,请参阅Azure ServiceBus)。

  • 消费者/订阅者 - 然后实现事件订阅者以侦听来自底层事件/消息基础设施(事件流)的事件并执行相关操作。鼓励事件订阅者通过托管 Beef 功能来重用底层逻辑以实现。域逻辑层可以重新利用来执行接收事件时的底层业务逻辑(在订阅域的上下文中)。

此外, Beef 具有支持(和生成)事务性发件箱模式的功能,当需要_可靠_发送事件时(没有消息丢失);即在底层数据更新的上下文中保证至少一次发送语义(目前仅支持数据库存储库)。

<br/>

框架

创建了一个全面的框架来支持定义的架构,封装和标

解决方案

代码生成

<br/>

可能感兴趣的外部链接

  • 版本控制 - 文章, 实现 - Beef 对版本控制方法和/或实现没有特定支持或意见。
  • 领域驱动设计 - 维基百科, Fowler, 微软撰写的文章: 文章, 文章, 文章文章 - Beef 鼓励DDD方法,这就是为什么_实体_命名和约定在其中是基础的原因。
<br/>

许可证

Beef 是根据 MIT 许可证 开源的,可以免费用于商业用途。

<br/>

入门

要开始使用 Beef,您不需要克隆或复刻存储库;您只需要使用规定的解决方案结构创建一个包含底层项目的解决方案,包括引用适当的 NuGet 包。为了加速这一过程,提供了 .NET Core 模板功能,使您能够在几分钟内开始使用。

请参阅以下示例,了解端到端的解决方案/项目创建;每个示例都演示了相同的 API 功能,但利用不同的数据源来实现:

否则,请按照以下示例教程进行操作,这些教程将提供更深入的演练,解决定义的功能问题:

  • My.Hr - 针对 SQL 数据库的微服务,同时使用存储过程和实体框架。
  • MyEf.Hr - 针对 SQL 数据库的微服务,使用实体框架。
  • Cdr.Banking - 针对 Azure CosmosDB 数据源的微服务。
  • Xyz.Legacy - 针对旧数据库的 CDC 实现,将消息发布到 Azure 服务总线。
<br/>

贡献

贡献的最简单方式之一是参与 GitHub 问题的讨论。您也可以通过提交带有代码更改的拉取请求 (PR) 来做出贡献。

<br/>

编码指南

最一般的指南是我们使用所有 VS 默认设置进行代码格式化;如有疑问,请遵循现有代码库的编码约定。

  1. 使用四个空格缩进(不使用制表符)。
  2. 对私有字段使用 _camelCase
  3. 除非绝对必要,否则避免使用 this.
  4. 始终指定成员可见性,即使它是默认的(例如,private string _foo; 而不是 string _foo;)。
  5. 开括号 ({) 另起一行(单行语句的 if 不需要括号)。
  6. 使用任何可用的语言特性(表达式主体成员、throw 表达式、元组等),只要它们使代码可读、可管理。
  7. 所有方法和属性都必须包含 XML 文档注释。私有方法和属性只需要指定 summary 作为最低要求。

更多指导请参见 ASP.NET Core 工程指南

<br/>

测试

NUnit 用于单元测试。

  • 每个完成的 bug/功能都需要提供测试。
  • 测试只需要存在于需要由 QA 验证的问题(例如,不是任务)。
  • 如果有一个场景太难测试,则不需要为其提供测试。
  • "太难"由整个团队决定。
<br/>

代码审查和签入

为了确保只有最高质量的代码进入项目,请将所有代码更改作为 PR 提交到 GitHub。这包括运行时代码更改、单元测试更新和端到端演示的更新。

例如,仅为单元测试更新发送 PR 可能看起来是浪费时间,但单元测试与产品代码同样重要,因此审查对它们的更改也同样重要。这也有助于为您的更改创建可见性,以便其他人可以观察正在发生的情况。

优点很多:提高代码质量,更多地了解更改及其潜在影响,避免重复工作,并创建对各个领域正在取得的进展的普遍认识。

编辑推荐精选

讯飞智文

讯飞智文

一键生成PPT和Word,让学习生活更轻松

讯飞智文是一个利用 AI 技术的项目,能够帮助用户生成 PPT 以及各类文档。无论是商业领域的市场分析报告、年度目标制定,还是学生群体的职业生涯规划、实习避坑指南,亦或是活动策划、旅游攻略等内容,它都能提供支持,帮助用户精准表达,轻松呈现各种信息。

AI办公办公工具AI工具讯飞智文AI在线生成PPTAI撰写助手多语种文档生成AI自动配图热门
讯飞星火

讯飞星火

深度推理能力全新升级,全面对标OpenAI o1

科大讯飞的星火大模型,支持语言理解、知识问答和文本创作等多功能,适用于多种文件和业务场景,提升办公和日常生活的效率。讯飞星火是一个提供丰富智能服务的平台,涵盖科技资讯、图像创作、写作辅助、编程解答、科研文献解读等功能,能为不同需求的用户提供便捷高效的帮助,助力用户轻松获取信息、解决问题,满足多样化使用场景。

热门AI开发模型训练AI工具讯飞星火大模型智能问答内容创作多语种支持智慧生活
Spark-TTS

Spark-TTS

一种基于大语言模型的高效单流解耦语音令牌文本到语音合成模型

Spark-TTS 是一个基于 PyTorch 的开源文本到语音合成项目,由多个知名机构联合参与。该项目提供了高效的 LLM(大语言模型)驱动的语音合成方案,支持语音克隆和语音创建功能,可通过命令行界面(CLI)和 Web UI 两种方式使用。用户可以根据需求调整语音的性别、音高、速度等参数,生成高质量的语音。该项目适用于多种场景,如有声读物制作、智能语音助手开发等。

Trae

Trae

字节跳动发布的AI编程神器IDE

Trae是一种自适应的集成开发环境(IDE),通过自动化和多元协作改变开发流程。利用Trae,团队能够更快速、精确地编写和部署代码,从而提高编程效率和项目交付速度。Trae具备上下文感知和代码自动完成功能,是提升开发效率的理想工具。

AI工具TraeAI IDE协作生产力转型热门
咔片PPT

咔片PPT

AI助力,做PPT更简单!

咔片是一款轻量化在线演示设计工具,借助 AI 技术,实现从内容生成到智能设计的一站式 PPT 制作服务。支持多种文档格式导入生成 PPT,提供海量模板、智能美化、素材替换等功能,适用于销售、教师、学生等各类人群,能高效制作出高品质 PPT,满足不同场景演示需求。

讯飞绘文

讯飞绘文

选题、配图、成文,一站式创作,让内容运营更高效

讯飞绘文,一个AI集成平台,支持写作、选题、配图、排版和发布。高效生成适用于各类媒体的定制内容,加速品牌传播,提升内容营销效果。

热门AI辅助写作AI工具讯飞绘文内容运营AI创作个性化文章多平台分发AI助手
材料星

材料星

专业的AI公文写作平台,公文写作神器

AI 材料星,专业的 AI 公文写作辅助平台,为体制内工作人员提供高效的公文写作解决方案。拥有海量公文文库、9 大核心 AI 功能,支持 30 + 文稿类型生成,助力快速完成领导讲话、工作总结、述职报告等材料,提升办公效率,是体制打工人的得力写作神器。

openai-agents-python

openai-agents-python

OpenAI Agents SDK,助力开发者便捷使用 OpenAI 相关功能。

openai-agents-python 是 OpenAI 推出的一款强大 Python SDK,它为开发者提供了与 OpenAI 模型交互的高效工具,支持工具调用、结果处理、追踪等功能,涵盖多种应用场景,如研究助手、财务研究等,能显著提升开发效率,让开发者更轻松地利用 OpenAI 的技术优势。

Hunyuan3D-2

Hunyuan3D-2

高分辨率纹理 3D 资产生成

Hunyuan3D-2 是腾讯开发的用于 3D 资产生成的强大工具,支持从文本描述、单张图片或多视角图片生成 3D 模型,具备快速形状生成能力,可生成带纹理的高质量 3D 模型,适用于多个领域,为 3D 创作提供了高效解决方案。

3FS

3FS

一个具备存储、管理和客户端操作等多种功能的分布式文件系统相关项目。

3FS 是一个功能强大的分布式文件系统项目,涵盖了存储引擎、元数据管理、客户端工具等多个模块。它支持多种文件操作,如创建文件和目录、设置布局等,同时具备高效的事件循环、节点选择和协程池管理等特性。适用于需要大规模数据存储和管理的场景,能够提高系统的性能和可靠性,是分布式存储领域的优质解决方案。

下拉加载更多