原文地址:The Clean Architecture The Clean Architecture Over the last several years we've seen a whole range of ideas regarding the architecture of systems. These include: Hexagonal Architecture (a.k.a. Ports and Adapters) by Alistair Cockburn and adopted…
地址:http://blog.8thlight.com/uncle-bob/2012/08/13/the-clean-architecture.html. Over the last several years we’ve seen a whole range of ideas regarding the architecture of systems. These include: Hexagonal Architecture (a.k.a. Ports and Adapters) by Al…
我最近写了一个Go微服务应用程序,这个程序的设计来自三个灵感: 清晰架构"Clean Architecture"¹ and SOLID (面向对象设计)² 设计 原则³ Spring的容器技术(Spring's application context)⁴ Go的简洁设计⁵ 特别是 Go的面向对象的设计⁶ 我使用Spring的基于接口的编程和依赖注入(Dependency Injection)来实现Bob Martin的清晰架构(Clean Architecture),并遵循了Go的简单…
我使用Go和gRPC创建了一个微服务,并试图找出最佳的程序结构,它可以用作我未来程序的模板. 我有Java背景,并发现自己在Java和Go之间挣扎,它们之间的编程理念完全不同.我写了一系列关于在项目工作中做出的设计决策和取舍的文章. 这是其中的第一篇, 是关于程序结构的. 程序结构的资源 Go的标准程序结构的最佳资源可能是Github上的标准Go程序结构¹,但它不适合我的项目.在阅读了Sylvain Wallez的文章²之后,我终于得到了一些关于其背后原因的信息. Go起初是专为API和网络服务…
清晰架构(Clean Architecture)的一个理念是隔离程序的框架,使框架不会接管你的应用程序,而是由你决定何时何地使用它们.在本程序中,我特意不在开始时使用任何框架,因此我可以更好地控制程序结构.只有在整个程序结构布局完成之后,我才会考虑用某些库替换本程序的某些组件.这样,引入的框架或第三方库的影响就会被正确的依赖关系所隔离.目前,除了logger,数据库,gRPC和Protobuf(这是无法避免的)之外,我只使用了两个第三方库ozzo-validation¹和YAML²,而其他所有库…
在清晰架构(Clean Architecture)中,应用程序的每一层(用例,数据服务和域模型)仅依赖于其他层的接口而不是具体类型. 在运行时,程序容器¹负责创建具体类型并将它们注入到每个函数中,它使用的技术称为依赖注入². 以下是要求. 容器包的依赖关系: 容器包是唯一依赖于具体类型和许多外部库的包,因为它需要创建具体类型. 本程序中的所有其他软件包主要仅依赖于接口. 外部库可以包括DB和DB连接,gRPC连接,HTTP连接,SMTP服务器,MQ等. #2中提到的具体类型的资源链接只需要创建一…
我用Go和gRPC创建了一个微服务项目,并试图找出最好的程序结构,它可以作为我其他项目的模板.我还将程序设计和编程的最佳实践应用于Go Microservice程序,例如清晰架构(Clean Architecture),依赖注入(Dependency Injection),日志记录,错误处理等.我有Java背景,并发现自己在Java和Go之间挣扎,它们之间的编程理念完全不同.我写了一系列关于在项目工作中做出的设计决策和取舍的文章. 阅读这些文章不需要熟悉Go,但如果你有Go基础绝对会有帮助.如果…
我使用Go和gRPC创建了一个微服务,并将程序设计和编程的最佳实践应用于该项目. 我写了一系列关于在项目工作中做出的设计决策和取舍的文章,此篇是关于程序设计. 程序的设计遵循清晰架构(Clean Architecture)¹. 业务逻辑代码分三层:用例(usecase),域模型(model)和数据服务(dataservice). 有三个顶级包"usecase","model"和"dataservice",每层一个. 在每个顶级包(模型除外)中只有…
去年,我创建了一个清晰架构(Clean Architecture)微服务框架,它功能强大,但有些重.我写了一个系列文章来讲述它,请参阅"清晰架构(Clean Architecture)的Go微服务". 我还指出了设计中存在的一些缺陷,并讲到希望以后能修复它们.现在我终于有时间对它进行了改造,结果比我预期的还要好. 我所做的改动不大,但效果惊人.主要的项目结构和接口没有变,我在那些文章中写的大部分内容仍然有效.这次升级修复了旧框架中的所有主要问题.现在它几乎拥有了我理想框架中的所有内容.…
NVIDIA Turing Architecture架构设计(上) 在游戏市场持续增长和对更好的 3D 图形的永不满足的需求的推动下, NVIDIA 已经将 GPU 发展成为许多计算密集型应用的世界领先的并行处理引擎.除了渲染高度逼真和身临其境的 3D 游戏外, NVIDIA GPUs 还可以加速内容创建工作流.高性能计算( HPC )和数据中心应用程序,以及众多人工智能系统和应用程序.新的 NVIDIA 图灵 GPU 架构建立在 GPU 长期领导地位的基础上. 图灵代表了十多年来最大的体系结构…
[Architecture Design] 跨平台架构设计 跨越平台 Productivity Future Vision 2011 在开始谈跨平台架构设计之前,请大家先看看上面这段影片,影片内容是微软在2011年所描绘的未来生活蓝图.在观看的过程中,请大家以「软件开发人员」的角度来思考,想想软件开发人员在其中扮演甚么样的角色. 「Productivity Future Vision 2011」 这段影片里面所描绘未来产品,把时间轴拉到现在来看,其实有许多概念已经悄悄融入我们的生活之中.像是影片…
干净的架构The Clean Architecture 这是著名软件大师Bob大叔提出的一种架构,也是当前各种语言开发架构.干净架构提出了一种单向依赖关系,从而从逻辑上形成一种向上的抽象系统. 我们经常听说过如下各种架构: 六边形架构Hexagonal Architecture (也称为 端口和适配器) 这是由Alistair Cockburn 提出,被Steve Freeman和 Nat Pryce在他们的书籍Growing Object Oriented Software中采取的. Onio…
为了支持业务层中的事务,我试图在Go中查找类似Spring的声明式事务管理,但是没找到,所以我决定自己写一个. 事务很容易在Go中实现,但很难做到正确地实现. 需求: 将业务逻辑与事务代码分开. 在编写业务用例时,开发者应该只需考虑业务逻辑,不需要同时考虑怎样给业务逻辑加事务管理.如果以后需要添加事务支持,你可以在现有业务逻辑的基础上进行简单封装,而无需更改任何其他代码.事务实现细节应该对业务逻辑透明. 事务逻辑应该作用于用例层(业务逻辑) 不在持久层上. 数据服务(数据持久性)层应对事务逻辑透…
编码风格在编程中是一个相对乏味的主题,但是合适的编码风格对一个有效的程序员是至关重要的. 它有三个组成部分: 程序结构 ( application layout) 编码规则或风格 命名约定 我已经在清晰架构(Clean Architecture)的Go微服务: 程序结构¹中讨论了程序结构,因此本文将介绍后两点. 编码规则或风格 没有包级别(package level)变量. 包级别变量打破了函数封装并使函数有了不确定.我在本程序中遵循了这个规则,唯一的例外是在"容器"包中,因为它负责程…
NVIDIA Turing Architecture架构设计(下) GDDR6 内存子系统 随着显示分辨率不断提高,着色器功能和渲染技术变得更加复杂,内存带宽和大小在 GPU 性能中扮演着更大的角色.为了保持最高的帧速率和计算速度, GPU 不仅需要更多的内存带宽,还需要一个大的内存池来提供持续的性能. NVIDIA 与 DRAM 行业密切合作,开发了世界上第一款使用 HBM2 和 GDDR5X 内存的 GPUs .现在图灵是第一个使用 GDDR6 内存的 GPU 架构. GDDR6 是高带宽…
DDD Layers & Clean Architecture DDD分层和简洁架构 There are four fundamental layers of a Domain Driven Based Solution; 一个基于领域驱动的解决方案有四层,如下图所示: Business Logic places into two layers, the Domain layer and the Application Layer, while they contain different ki…
前面两篇文章给大家介绍了我们实战的CMS系统的数据库设计,源码也已经上传到服务器上了.今天我们就好聊聊架构设计,在开始之前先给大家分享一下这几天我一直在听的<从零开始学架构>里面关于架构设计的定义以及架构设计的三大原则,希望能对大家有所启发.有着这些基础之后,我们再基于此搭建我们的项目框架吧!如果你在阅读的过程中有任何的问题,欢迎大家在留言区进行留言,或者加入.NET Core实战项目群637326624跟大伙一起交流经验. 本文已收录至<.NET Core实战项目之CMS 第一章 入门…
来源:http://blog.csdn.net/yinwenjie(未经允许严禁用于商业用途!) 目录(?)[-] Nginx重要算法介绍 1一致性Hash算法 2轮询与加权轮询 Nginx的安装 1准备工作 2正式安装 3安装验证和启动 进阶 1重要配置项 11use kqueue rtsig epoll select poll 12worker_processes和worker_connections 13max client的计算方式 14gzip 2健康检查模块 3图片处理模块 4Ngi…
谈谈UI架构设计的演化 经典MVC 在1979年,经典MVC模式被提出. 在当时,人们一直试图将纯粹描述思维中的对象与跟计算机环境打交道的代码隔离开来,而Trygve Reenskaug在跟一些人的讨论中,逐渐剥离出一系列的概念,最初是Thing.Model.View.Editor.后来经过讨论定为Model.View和Controller.作者自言“最难搞的就是给这些架构组件起名字”. 因为当时的软件环境跟现在有很大不同,所以经典MVC中的概念很难被现在的工程师理解.比如经典MVC中说:“vi…
大数据时代的IT架构设计(来自互联网.银行等领域的一线架构师先进经验分享) IT架构设计研究组 编著   ISBN 978-7-121-22605-2 2014年4月出版 定价:49.00元 208页 16开 编辑推荐 l  一书在手,架构无忧 l  三十位一线架构师真知实践 l  百位顶级架构师献计献策 l  十万文字尽显架构精华 内容提要 <大数据时代的IT架构设计>以大数据时代为背景,邀请著名企业中的一线架构师,结合工作中的实际案例展开与架构相关的 讨论.<大数据时代的IT架构设计…
<解剖PetShop>系列 一.PetShop的系统架构设计 http://www.cnblogs.com/wayfarer/archive/2007/03/23/375382.html 二.PetShop数据访问层之数据库访问设计 http://www.cnblogs.com/wayfarer/archive/2006/04/21/381315.html 三.PetShop数据访问层之消息处理 http://www.cnblogs.com/wayfarer/archive/2007/03/1…
http://keeganlee.me/post/architecture/20160107 看完这一系列文章后就知道怎么回答这类问题了: App架构设计经验谈:接口的设计 App架构设计经验谈:技术选型 App架构设计经验谈:数据层的设计 App架构设计经验谈:业务层的设计 App架构设计经验谈:展示层的设计…
前言:PetShop是一个范例,微软用它来展示.Net企业系统开发的能力.业界有很多.Net与J2EE之争,很多数据是从微软的PetShop和Sun的PetStore而来.这样的争论不可避免带有浓厚的商业色彩,对于我们开发者而言,没有必要过多关注.然而PetShop随着版本号的不断更新,至如今基于.Net 2.0的PetShop4.0为止,整个设计逐渐变得成熟而优雅,却又非常多能够借鉴之处.PetShop是一个小型的项目,系统架构与代码都比較简单,却也凸现了很多颇有价值的设计与开发理念.本系列试…
本人作为一位web工程师,着眼最多之处莫过于 性能与架构,本次幸得参与sd2.0大会,得以与同行广泛交流,于此二方面,有些心得,不敢独享,与众博友分享,本文是这次参会与众同撩交流的心得,有兴趣者可以查看视频 架构设计的几个心得: 一,不要过设计:never over design 这是一个常常被提及的话题,但是只要想想你的架构里有多少功能是根本没有用到,或者最后废弃的,就能明白其重要性了,初涉架构设计,往往倾向于设计大而化一的架构,希望设计出具有无比扩展性,能适应一切需求的增加架构,web开发领…
解析大型.NET ERP系统架构设计 Framework+ Application 设计模式 我对大型系统的理解,从数量上面来讲,源代码超过百万行以上,系统有超过300个以上的功能,从质量上来讲系统应该具备良好的可扩展性和可维护性,系统中的功能紧密关联.除去业务上的复杂性,如何设计这样的一个协作良好的系统,搭建开发人员基础平台,一直是我研究的方向. SouceCounter(版本3.3.91.79)对源代码的统计信息如下: 下面来详细解析一下这个系统的设计架构,纯.NET技术架构方案,C/S W…
架构设计:前后端分离之Web前端架构设计 在前面的文章里我谈到了前后端分离的一些看法,这个看法是从宏观的角度来思考的,没有具体的落地实现,今天我将延续上篇文章的主题,从纯前端的架构设计角度谈谈前后端分离的一种具体实现方案,该方案和我原来设想有了很大的变化,但是核心思想没变,就是控制层是属于Web前端的. 在以前文章里我说道前后端分离的核心在于把mvc的控制层归为前端的一部分,原方案的构想在实际的生产开发里很难做到,我觉得核心还是控制层和视图层的技术异构性,这样后果使得系统改造牵涉面太大,导致在项…
DotNET应用架构设计指南(第三章:安全 运行管理和通讯策略(13-16)) 安全 运行管理和通讯策略 组织策略定义的规则是支配应用程序如何安全,如何管理,不同的应用程序组件是如何和另一组件及外部服务进行通讯的.这些策略会影响应用程序或者服务的每一层的设计,如图3.1所示. 图3.1 应用程序设计方面组织策略的影响 策略不仅是在组织层面决定的,而且它们也可能被组织内所决定.在一些情况下,区域的考虑是有益的—如果共享一个策略的子集,所有的应用程序,服务,甚至应用程序各层都是在同一个区域.例如,面…
第2章 ROS系统架构及概念 ROS Architecture and Concepts PPT说明: 正文用白色,命令或代码用黄色,右下角为对应中文译著页码. 这一章需要掌握ROS文件系统,运行图级,开源社区等概念,掌握基本命令,会写ROS节点,启动文件. 属于ROS基础内容,可参考: ROS_Kinetic_04 ROS基础内容(一):http://blog.csdn.net/zhangrelay/article/details/51384724 ROS_Kinetic_05 ROS基础内容…
本文由腾讯云数据库发表 前言 CynosDB是新一代分布式数据库,100%兼容MySQL和PostgreSQL,支持存储弹性扩展,一主多从共享数据,性能更是超越社区原生MySQL和PostgreSQL.CynosDB采用share storage架构,其弹性扩展和高性价比的基石则是CynosDB File System(简称CynosFS):一款腾讯云自研的用户态分布式文件系统.本文旨在从整体上讲述CynosDB和CynosFS的核心架构设计. 挑战与应对 CynosDB是公有云原生架构的,其核…
前言 笔者几年前曾参与过一套网络银行的系统建设以及后续这套系统在信用.云服务.保险.基金.支付等领域的复用,使用了IFW模型的变体.当时仅仅是根据架构师的设计进行编码.测试和交付以及后续的维护,没有对这套模型进行系统化的总结,心中总是有点缺失.这么多年过去,借着在组内分享的机会,系统地整理一下这块的知识,希望对以后的设计建模能有所帮助. 限于笔者水平,同时IFW模型实际上是非常复杂(以至于对于专业的咨询公司来说,这套模型的咨询+分析+落地方案设计费用通常在百万到千万级别),短短的一篇博文仅仅是管…