代码架构(一)

代码架构(一)________ 什么是架构?  and    需求?

架构本身和软件开发并无太大关系。每个软件项目都是由代码和服务器构成的,如何统筹安排代码和服务器,这便就是架构的范畴。

  • 一个项目可能需要使用多台服务器,eg:web服务器、数据库服务器、文件服务器、CDN.......   如何针对不同的要求对服务器进行选型,这是架构;如何统一管理这些服务器,这是架构;如何让这些服务器平稳运行,这是架构。

  • 开发项目使用什么语言,Java or Node.js?  这是架构。

  • 选用什么数据库,Oracle or MongoDB?  这是架构。

  • 具体到开发过程中,某个模块应该如何安排,是交给DBA(数据库管理员)用存储过程来实现,or 让C# 程序员访问数据库来实现?  这是架构。

  • 在写C# 时,采用三层架构,还是MVC?  这是架构。

  • 如何写日志,是使用I/O读写文件 or 采用log4net? 或者是AOP切片写日志?   这是架构。

  • 某种具体的技术的使用,这是架构。   eg:在规定使用MVC架构的情况下,是应该使用微软的MVC,还是使用Spring的MVC?  这是架构。


1  架构

架构大体上分两部分:硬件的架构 和 软件的架构。

  • 硬件的架构

【例子1】:B2C(Business-To-Customer,商家对客户)网站的架构师。根据目标用户量 和 业务要求,对需求进行研究,分析了其所需承担的平均访问量和其业务内容。

① 该网站的访问量并没有大到令人发指的地步,因此暂时不考虑硬件负载均衡的问题,提供一台Web服务器即可。该Web服务器需要处理用户发来的请求并做出响应给用户。

② 为了提高Web服务器的性能,在该服务器上安装虚拟机,并用Nginx(一个HTTP服务器,类似于IIS)做软负载均衡。

③ 由于本系统需要保存大量的用户文件,若把这些文件都放在Web服务器上,会给软件负载均衡产生额外的负担,并且大量的文件很容易把一台服务器“撑爆”。因此,用一台服务器来专门保存文件信息,即:文件服务器。 

④ 数据库是一个项目中必不可少的一部分,数据库的本质其实就是文件和内容的组合,所有数据库的空间增长不容小觑。并且,数据库的操作会耗费大量宝贵的CPU和内存资源。因此将数据库放在一台服务器上,即:数据库服务器。

通过以上步骤,硬件资源采购完成,还需将其组合在一起。

⑤ Web服务器向网络公开,让用户可以访问,而文件服务器和数据库服务器只在局域网中,并不对外公开,这样可以在一定程序上保证安全性,而且也为客户节省了费用。Web服务器可以访问文件服务器和数据库服务器。

  •  软件的架构

【例子1】

ps:继续沿用上面的例子。

本系统采用.NET平台下的C# 语言进行开发,采用SQL Server数据库,使用微软的Cache缓存配合Redis来做。

前台将以 3 种终端展示,分别是PC、手机、平板。因此前端采用 HTML5 来做。Android手机APP使用Java语言来开发,iOS平台上的APP暂时不做。

 代码架构的目的是让不同的代码块去干不同的事,最后再把这些代码块整合在一起,组成一个项目。

代码架构和软件架构属于不同层次的元素。

2  需求

需求,request 和 demand。① request:锦上添花的功能;② demand:必须要完成的 无商量余地的功能。

敏捷开发

  • 以用户的需求进化为核心,采用迭代、循序渐进的方法进行软件开发。
  • 在敏捷开发中,软件项目在构建初期被切分成多个子项目,各个子项目的成果都经过测试,具备可视、可集成和可运行使用的特征。(简而言之,把一个大项目分为多个相互联系,但也可独立运行的小项目,并分别完成,此过程中,要求软件一直处于可使用的状态。)

用户体验(UE 或 UX,User Experience)

  • 一种纯主观的在用户使用一个产品(服务)的过程中,建立起来的心理感受。
  • 个体差异决定了每个用户的真实体验是无法通过其他途径来完全模拟或再现的。

数据库

PowerDesigner 设计工具

面向对象中,一切皆对象。数据库中,“对象”的体现即是“属性”。

为了避免在更改需求时先修改字典再改数据库,针对数据字典,借助PD工具来设计,先做一个概念模型CDM(Concept Data Model)。

CDM  &  PDM(Physical Data Model):

① CDM:其描述更接近于需求;

② PDM:其描述更接近于数据库。

使用PD来画一个CDM,来做数据库设计的好处

  1. 便于管理。
  2. 便于生成数据库。  建立的CDM可以生产PDM,PDM可以生成数据库脚本,这些脚本可以直接在数据库中执行。

若为 PD 设置了 ODBC(Open Database Connectivity)连接,则可以直接在 PD 里通过操作数据库来生成表。

SQL 语句

 少写 SQL 语句,在 存储过程、事务、触发器这来业务规则相对固定的地方需要写SQL。

一个SQL 语句的执行效率,主要集中在全表扫描和索引上面,尽量不使用全表扫描,尽量使用索引,目的都是让SQL 执行起来更快些。

主键:建议使用GUID类型。好处:它的长度固定,且永远不会重复。{若使用int 类型,可以轻松地使用主键自增保证它的唯一性,但当它增长到一定数量时,int 已经不足以描述了。}

PS:阅读《大话代码架构》的一点笔记。

 

你可能感兴趣的:(架构,架构,架构师,软件架构师,项目架构)