架构

cs 与 bs 架构

一曲冷凌霜 提交于 2020-01-28 15:19:19
C/S和B/S各有优势,C/S在图形的表现能力上以及运行的速度上肯定是强于B/S模式的,不过缺点就是他需要运行专门的客户端,而且更重要的是它不能跨平台,用 c++ 在 windows 下写的程序肯定是不能在 linux 下跑的。而B/S模式就不同了,它不需要专门的客户端,只要浏览器,而浏览器是随操作系统就有的,方便就是他的优势了。而且,B/S是基于网页语言的、与操作系统无关,所以跨平台也是它的优势,而且以后随着网页语言以及浏览器的进步,B/S在表现能力上的处理以及运行的速度上会越来越快,它的缺点将会越来越少。比如,未来的 HTML5 ,在图形的渲染方面以及音频、文件的处理上已经非常强大了。 来源: https://www.cnblogs.com/sea-stream/p/11269302.html

Docker 的优势

梦想与她 提交于 2020-01-28 09:16:44
下面我们主要从Docker对业务架构和生产实践的角度来分析。 随着业务规模的逐渐扩大,产品复杂度也随着增加,企业需要解决快速迭代、高可靠和高可用等问题,一个自然的选择是服务化的拆分,把一个单体架构拆分成一些较小的模块。但拆分成大量小模块之后,虚拟机与服务化架构的配合就出现了很多新的挑战,于是有了对Docker的需求。 比如,在整个架构演进的过程中,各个模块都面临爆炸性的增长,模块间紧耦合则牵一发而动全身,工程臃肿,影响迭代速度,分别独立上线更有利于适应业务发展的需求。所以,微服务化需要从一开始就要做好持续集成,而Docker是很好的持续集成的工具,完成从代码提交到自动测试、自动发布的工作。在架构复杂的情况下,比如100多个模块,再加上各种副本,所有环境都由一个运维团队来完成,不仅工作量繁重,而且还容易出错,但这是使用虚拟机的模式。而如果写一个Dockerflie放到代码仓库,由开发人员来考虑开发完成之后应用部署的配置环境、权限等问题,包括测试环境的部署、联调环境的部署、生产环境的部署,问题就很好解决了。这就是Docker带来的流程变化。 随着微服务架构的逐步完善,需要解决的问题主要是如何通过服务治理、系统运维自动化提升可靠性和可用性,如何高效完成大项目的复杂协作,如何梳理功能、深化用户体验。通过不可变基础设施和IaC(基础设施即代码)可以实现,这里容器也是最佳选择。比如

【译】软件架构师之路

谁说我不能喝 提交于 2020-01-28 05:22:42
今天给大家带来一篇自己翻译的干货《软件架构师之路》。本周Github上升很快的项目。其内容对致力于成为软件架构师(不论前后端)的同学应该都会有极大的帮助。 项目地址: 中文地址 https://github.com/gamedilong/SoftwareArchitect-CN 原文地址 https://github.com/justinamiller/SoftwareArchitect 如果有看完英文原文,发现本文翻译内容中存在问题或者错误的欢迎到中文Git地址PR,如能够对大家起到一定的帮助也欢迎star 内容 什么是软件架构 软件架构的层次 软件架构师的典型工作内容 软件架构师的重要技能 架构师的技术路线图 相关书籍 什么是软件架构? 软件架构师是一名软件开发专家,他可以进行高层设计选择并决定技术标准,包括软件编码标准,工具和平台。 (出处: 维基百科:软件架构师) 软件架构(architecture)是一个系统的基本组织,由其组件、它们之间的相互关系和环境以及决定系统设计和演化的原则来表示。 (出处: 软件架构手册) 软件架构的层次 软件架构可以被抽象的分为几个层次,不同的层次对技能的要求不同。对层次有很多不同的划分,我最喜欢如下这三种划分: 应用级 : 最低层次的架构。聚焦单个具体的应用。 非常注重细节, 底层设计。 沟通仅限入单个开发团队。 解决方案级 : 中级别的架构

BS架构和CS架构

≡放荡痞女 提交于 2020-01-28 02:55:13
B:browser 浏览器 S:server 服务器 C:client 客户端 BS:浏览器和服务器的关系,通过浏览器来访问服务器。比如:新浪、百度、等等。 优点:只要有浏览器就能访问服务器,方便 缺点:绝大部分的逻辑都在服务器上,这要就造成了瘦客户端胖服务器的关系。对服务器负载要求就很高 CS:客户端和服务器的关系,通过客户端软件来访问服务器,比如:QQ,MySQL。 优点:有一部分逻辑在客户端运行,减轻了服务器的负担 缺点:要安装客户端软件,麻烦。 来源: https://www.cnblogs.com/loaderman/p/7512931.html

架构设计(3)--架构模式

社会主义新天地 提交于 2020-01-28 02:37:01
模式的经典定义:每个模式都描述了一个在我们的环境中不断出现的问题,然后描述了该问题的解决方案的核心,通过这种方式,我们可以无数次地 重用 那些已有的解决方案,无需再重复相同的工作。即模式是在特定环境中解决问题的一种方案 。 什么是架构模式?在维基百科:架构模式是针对特定软件架构场景常见问题的通用、可重用解决方案。架构模式类似于软件设计模式,但范围更广。 架构的本质是管理复杂性。 如果你觉得架构不重要,可能是你做的事情不够复杂,或者是你没有管理好复杂性。架构模式虽多,经过抽象沉淀之后,也就那么几种,O'Reilly 出版过一本免费的小册子《Software Architecture Patterns》, 介绍了五种最常见的软件架构,是非常好的入门读物: 1. 分层架构(比较传统的单体架构) 2. 微服务架构(服务分割:当前比较流行的服务化架构,解决单体架构面临的问题,适合敏捷开发,快速迭代) 3. 微核架构(又称插件架构,开发难度较高,一般用来做工具软件开发,如Eclipse,不太适合分布式业务场景) 4. 事件驱动架构 (一般适用于应用局部场景,用来实现异步解耦) 5. 云架构(现在的说法是云原生架构-Cloud Native,基于Docker、Kubernetes、Service Mesh 云原生架构) 一、分层 分层架构( layered architecture

【转载】软件架构被高估,清晰简单的设计被低估

孤人 提交于 2020-01-28 01:45:09
我的职责是设计和构建大型系统。我参与重写了 Uber 的 分布式支付系统 ,设计并交付了Skype on Xbox One,开源了Uber 的移动架构框架 RIBs 。所有这些系统都进行了彻底的设计,经过多次迭代和大量讨论。然后,这些设计被记录到设计文档中,在我们开始构建之前分发出去,从而获得更多的反馈。 所有这些系统的规模都很大:有数百名开发人员在构建它们——或者以它们为基础进行构建——并且它们支撑着每天数百万人使用的系统。它们不仅仅是绿地项目。重写的支付系统就是用于替换两个已有的支付系统,有几十个系统、数十个团队在使用它们,但所有这些都没有对业务产生任何影响。重写 Uber App 是一个由数百名工程师同时参与的项目,他们将现有的功能移植到一个新的架构中。 让我先说些可能会让你觉得吃惊的事。 首先,这些设计都没有使用任何标准的软件架构规划工具 。我们没有使用 UML ,没有使用 4+1 模型 ,没有使用 ADR ,也没有使用 C4 和 依赖关系图 。我们创建了大量的图表,但是没有遵循任何严格的规则。只是使用了普通的方框和箭头,类似于这个 描述信息流的图 或这个 概括类结构和组件之间关系的图 。同一个设计文档中的两个图经常会有不同的布局,并且经常由不同的工程师添加和修改。 其次,负责设计的团队中没有架构师。 没有 IT 架构师 或 企业架构师 。没错,Uber 和 Skype/

ASP.NET Core搭建多层网站架构【0-前言】

青春壹個敷衍的年華 提交于 2020-01-28 00:57:41
2020/01/26, Asp.Net Core 3.1, VS2019 摘要:基于Asp.Net Core 3.1 WebApi搭建后端多层网站架构 网站内容 简单的后台管理系统 支持MySQL、SQL server 用户登录、角色管理 技术介绍 主要采用Asp.Net Core 3.1(WebApi) 框架实现一个后台管理系统 EntityFrameworkCore 3.1做ORM工具,FluentAPI方式配置实体映射 NLog做日志记录 Autofac配合Castle.Core实现动态拦截器(AOP) JWT做登录验证 AutoMapper做映射工具 Postman做接口调试 实现目标 每一处代码(每一个工具)尽量做到最佳实践 完善的单元测试 目录 0-前言 1-项目结构分层建立 2-公共基础库 3-编写单元测试 4.1-网站数据库实体设计 4.2-WebCore网站核心配置 4.3-添加NLog日志记录器 5.1-数据库实体类映射配置 5.2-工作单元和仓储设计 6.1-使用AOP动态拦截器进行服务层日志记录 6.2-使用JWT进行授权验证 7.1-使用AutoMapper映射实体对象 7.2-使用ViewModel注解验证 8-业务层编写业务 来源: https://www.cnblogs.com/kasnti/p/12236586.html

Go语言实战流媒体视频网站

泪湿孤枕 提交于 2020-01-27 22:10:02
第1章 课程介绍 介绍这门课程大纲,技术堆栈以及环境 1-1 prestudy 1-2 课程介绍及知识要点预习 第2章 一个例子了解golang工具链 通过一个简单的webservice具体从golang的工具链,到test,全面介绍golang在工程项目里需要掌握的知识点。 2-1 一个例子了解golang常用工具链 2-2 golang项目中test的写法 2-3 golang项目中benchmark的写法 2-4 章节总结 第3章 流媒体网站架构以及API模块的实现 本章通过实战演练,从网站的整体架构设计,到服务划分,数据库设计,到api模块的实现,全面讲述golang对webservice的实现以及代码分层架构的思想,同时辅以test cases的全程编写与指导,全面了解工程化golang项目的实现。 3-1 流媒体网站整体介绍与架构梳理 3-2 api设计与架构 3-3 api实现之详细设计(上) 3-4 api实现之详细设计(中) 3-5 api实现之详细设计(下) 3-6 api之http handler层 3-7 api之数据库层设计 3-8 api之数据库层实现_数据库连接 3-9 api之数据库层实现_实现User 3-10 api之数据库层实现_编写User Test Case 3-11 api之数据库层实现_User部分代码优化 3-12

BS架构和CS架构的区别

拟墨画扇 提交于 2020-01-27 08:21:59
C/S架构的优缺点: *优点: 1.客户端因为是独立设计,所以可以实现个性化 2.因为客户端是需要进行安装的,可以不需要重复安装和加载 3.因为客户端是独立开发的,所以有能力对客户端进行安全设计 4.如果遇到不同的操作系统,需要为不同的操作系统各开发一套客户端 *缺点: 1.因为客户端是不需要重复安装,所以用户可以不更新与升级,增加了维护成本。 2.因为需要开发客户端和服务器两套程序,所以开发成本会增加 B/S架构的优缺点: *优点: 1.因为B/S架构具备通用性,所以开发成本较低。 2.因为不需要安装客户端,所以客户端不需要进行升级,只需要更新后台代码即可实现所有客户端的更新。 3.因为B/S架构多用WEB网页进行开发,所以增、删功能也非常容易,只需要修改网页即可完成 *缺点: 1.耗流量,每次都要加载全部的内容(不过有缓存可以降低流量损耗) 2.因为没有独立的客户端,所以无法实现个性化(通过账号体系可以实现) 3.因为没有独立设计客户端,所以客户端难以实现安全控制(HTTPS、控件)。 4.难以实现特殊的操作(删本地文件),所以所有的杀毒软件都是C/S架构的。 B/S架构更多的时候是使用了HTTP协议、而C/S架构更多的时候使用的WinSocket协议(TCP、UDP) 来源: https://www.cnblogs.com/laoluoits/p/7265983.html

获取 SQL Server 2005 中的元数据

心已入冬 提交于 2020-01-26 23:27:08
从一直在 Oracle 上做工作转到用 SQL Server,有些使用习惯还转不过来,最明显的就是习惯了键盘敲命令,现在得用鼠标双击拖拽窗口,比如以前一个“desc” 命令就可以列出表的结构,现在得鼠标左键右键点选半天才能看到。虽说图形管理界面简单直观易上手,但对我来说,还是喜欢命令行,喜欢脚本操作。 不过喜欢归喜欢,新东西该学还得学,该适应还得适应。从 Oracle 的经验知道,所有的数据库操作都可以用 sql 脚本完成,大到建一个数据库,小到改一个字段的值,sql 无所不能。MS SQL Server 2005 中 SQL Server Management Studio 的出现,其易用性更上一层楼,但对 sql 命令的支持却也是毫不含糊的。上面提到的 desc 功能,可以用如下 sql 语句实现: SELECT * FROM INFORMATION_SCHEMA.COLUMNS where table_name='表名' 这句话里面的“INFORMATION_SCHEMA.COLUMNS”是个“信息架构视图”,可以获取表的列信息,类似的视图还有INFORMATION_SCHEMA.Tables、INFORMATION_SCHEMA.Views、INFORMATION_SCHEMA.Schema 等等,分别能获取有关表、视图和架构的信息。信息架构视图是 SQL Server