软件体系架构阅读笔记(十)

一、实用软件体系结构

本部分是提供实用的指南和技术,以更快地得到好的系统结构设计。我们的哲学是不应该致力于设计理想化的系统结构,而是应该仔细地评估和权衡所有技术、市场、人员、成本方面的问题,从而获取一个好的解决方案。

4种视图+全局分析

1、4种视图

1)、一个软件体系结构有4种截然不同的视图:概念视图、模块视图、执行视图、代码视图。

3、映射到关系数据库

在使用领域模型的时候,它的读取应该把相关联的对象也一块读出来。例如,读取一个合同,应该把合同涉及到的产品和定购厂商的对象加载到内存中。由时候为了避免这些没有必要的连带读取,我们可以使用【延迟加载】模型。

读取数据的时候,性能问题可能回变得比较突出。这就导致了几条经验法则。

1)、尽可能一次查询多个记录,不要一次查询一个记录,然后进行多次查询。可以一次查询多条相关的记录,例如使用联合查询。或者使用多条SQL语句。

2)避免多次进入数据库的方法是使用连接(Join),这样就可以通过一次返回多个表。可以制作一个入口,让入口完成相关数据的一次性读取。

3)数据库中进行优化。DBA来优化数据库。

映射到关系数据库的时候,一般会遇到三种情况:

1) 自己选择数据库方案。

2) 不得不映射到一个现有数据库方案,这个方案不能改变。

3) 不得不映射到一个现有数据库方案,但这个方案是可以考虑改变的。

最简单的情况是自己选择数据库方案,并且不用迁就领域逻辑的复杂性。当已经存在一个数据库方案的时候,应该逐步建立领域模型并包括数据映射器,把数据保存到现有的数据库中。

4、并发

并发问题:更新丢失和不一致读。

并发问题,人们提出了各种不同的解决方案。对于企业应用来说,有两个非常重要的解决方案:一个是隔离,一个是不变性。

隔离是划分数据,使得每一片数据都可能被一个执行单元访问。比如文件锁。

不变性是识别那些不变的数据,不用总考虑这些数据的并发问题而是广泛地共享它们。

当有一些可变数据无法隔离的时候,会发生什么样的情况呢的来说,我们可以使用两种形式的并发控制策略:乐观并发控制和悲观并发控制。

如果把乐观锁看作是关于冲突检测的,那么悲观锁就是关于冲突避免的。

多种技术处理死锁:一种是使用软件来检测死锁的发生。另一种是给每一个锁都加上时间限制,一旦到达时间限制,所加的所就会失效,工作就会丢失。

软件事务经常使用ACID的属性来描述。

原子性(Atomicity):在一个事务里,动作序列的每一个步骤都必须是要么全部成功,要么所有的工作都将回滚。部分完成不是一个事务概念。

一致性(Consistency):在事务开始和完成的时候,系统的资源都必须处于一致的、没有被破坏的状态。

隔离性(Isolation):一个事务,直到它被成功提交之后,它的结果才对其他所有的事务是可见的。

持久性(Durability):一个已提交事务的任何结果都必须是永久性的,即“在任何崩溃的情况的能保存下来”。

大多数企业应用是在数据库方面涉及到事务的,但还有很多情况要进行事务控制,比如说哦消息队列、打印机和ATM等。为了处理最大的吞吐率,现代的事务处理系统被设计成保证事务尽可能短,尽可能不让事务跨越多个请求;尽可能晚打开事务。

5、分布策略

按类模型进行分布的方法不可行的主要原因与计算机的基本特点有关。进程内的过程调用非常快。两个对立进程间的过程调用就慢了一个数量级。在不同机器间运行过程又要慢一两个数量级,取决于 络拓扑。
本地接口最好是细粒度接口。但细粒度不能很好地用在远程调用中。分布对象设计第一定律:不要分布使用对象,大多数情况下是使用集群系统。

6、应用集成的四种主要方式:

文件传输、共享数据库、远程过程调用、消息传递。利用文件传输和共享数据库,应用能够共享它们的数据,但不能共享功能。远程过程调用使应用能够共享功能,但是这会让应用紧耦合。消息传递使应用能够共享功能,让应用松耦合。运行消息传递,可以使用可定制的格式频繁地、立即地、可靠地、异步地传输数据包。本书主要是围绕消息传递方式来集成应用,完成企业集成模式、设计、构建及部署。书中也介绍了消息是怎样传递的,我们不需要完全理解,那个对我来说太难了。我们需要熟悉WebSphere MQ、MSMQ、JMS等消息服务产品,然后利用它们能开发企业集成系统,特别是金融业、保险业企业集成系统。

应用之间的集成解决方案必须应对以下几个基本挑战:

1. 络是不可靠的。

2. 络速度慢。

3.任何两个应用都是不同的。集成解决方案需要在使用不同编程语言、不同操作平台和不同数据格式的系统之间传送信息。

4.改变是难免的。应用会随着时间改变。

开发人员使用以下四种主要方法克服上述挑战:

1、 )文件传输——一个应用写文件,之后另一个应用读这个文件。为此,应用之间需要协商文件名、文件的位置、文件格式、文件读写的时间以及谁负责删除这个文件。

2、 )共享数据库——多个应用共享相同的数据库,这个数据库位于独立的物理数据库中。由于不存在重复保存的数据资料,因此不必将数据从一个应用传给另一个应用。

3、 )远程过程调用——一个应用开放其部分功能,使得其他应用能够远程访问这些过程。它们之间的通信是实时、同步的。

4、 )消息传递—— 一个应用向公共消息通道中发布一个消息,其他应用可以在之后某个时间从通道中获得这个消息。应用之间必须协商建立通道以及消息的格式。这种通信是异步的。

每种方法均有其独特的优点和不足。实际上,应用之间可通过多种方法集成,使得每个集成点都能充分利用最合适的方法。

消息传递开发商的产品大致划分为以下四类:

1、 )操作系统。消息传递已经成为开发商把必要的软件基础设施集成到操作系统或数据库平台中的共同需要。例如,Windows 2000和Windows XP操作系统包含了Microsoft消息排队(MSMQ)服务软件,通过COM组件和System.Messaging名字空间访问,属于.NET平台的组成部分。Oracle提供了Oracle AQ.

2、 )应用服务器。例如JMS、IBM WebSphere、BEA WebLogic

3、 )EAI套件。例如IBM WebSphere MQ、Microsoft BizTalk、TIBCO、WebMethods、SeeBeyond、Vitria、CorssWolds。

4、 )Web服务工具集。例如WS-Reliability、WS-ReiableMessaging、ebMs

四、UML、XML、.net/java平台

企业应用系统目前业界流行和通用的就是.Net平台和Java平台(J2EE);关于两者的区别参考:http://www.cnblogs.com/heilix/archive/2009/01/17/1377555.html

五、几种常见架构

-软件架构通用的服务模式

-类工厂服务

-缓存服务(内存服务)

-配置服务

-异常处理服务

-日志服务

-加密服务

-验证服务和授权服务

-消息队列

-部署服务

-事务处理服务

-帮助服务

-数据验证服务

1、 MVC

M表示模型

V表示视图

C表示控制器

2、C/S

客户端向服务器发送数据请求

服务器返回数据

客户端处理数据的展示

服务器需要处理通讯、并发等等

服务器

一个线程用来监听来自客户端的连接

用一个独立的线程来处理一个客户端的连接

线程池、线程重用

并发控制

负载均衡

进程间通讯

TCP/UDP进程间通讯

命名管道

共享内存

命名事件

命令行参数传递(用于父子进程)

3、B/S

Web服务器

应用服务器

数据库服务器

Web服务器

标准的Web服务器

简化了应用服务器的开发

Web服务器架构

JAVA (JSP)

.NET (ASP)

LAMP

Linux+Apache+Mysql+Perl/PHP/Python,一组常用来搭建动态 站或者服务器的开源软件,本身都是各自独立的程序,但是因为常被放在一起使用,拥有了越来越高的兼容度,共同组成了一个强大的Web应用程序平台。

HTTP

基于TCP

客户端发送HTTP Request

服务器处理后,发送HTTP Response

每次连接只处理一个请求

HTTP协议定义了Request和Response的内容格式(基于文本)

HTTP是应用协议

定义了GET、PUT、POST、REMOVE等操作

操作的对象是资源,由URI定义

无状态

HTTP作为传输协议来使用

基于HTTP的Request和Response

应用协议在Request和Response中定义

形式一

http://…../update.phpersion=1.0

http://…./functioncall.phpethod=xxx&arg=aaa&….

可以使用GET和POST

在Response中使用xml作为返回

形式二

使用POST

在Request中使用XML指定方法名和参数

在Response中使用XML作为返回

XML-RPC

形式三

SOAP, WebService

4、SOA

SOA 是一种 IT 体系结构样式,支持将您的业务作为链接服务或可重复业务任务进行集成,可在需要时通过 络访问这些服务和任务。这个 络可能完全包含在您的公司总部内,也可能分散于各地且采用不同的技术,通过对来自纽约、伦敦和香港的服务进行组合,可让最终用户感觉似乎这些服务就安装在本地桌面上一样。需要时,这些服务可以将自己组装为按需应用程序——即相互连接的服务提供者和使用者集合,彼此结合以完成特定业务任务,使您的业务能够适应不断变化的情况和需求.

5、SaaS

软件即服务,它是一种基于互联 提供软件服务的应用模式。随着互联 技术的发展和应用软件的成熟,SaaS作为一种创新的软件应用模式逐渐兴起。

SaaS提供商为企业搭建信息化所需要的所有 络基础设施及软件、硬件运作平台,并负责所有前期的实施、后期的维护等一系列服务,企业无需购买软硬件、建设机房、招聘IT人员,即可通过互联 使用信息系统。就像打开自来水龙头就能用水一样,企业根据实际需要,向SaaS提供商租赁软件服务。

对于广大中小型企业来说,SaaS是采用先进技术实施信息化的最好途径。但SaaS绝不仅仅适用于中小型企业,所有规模的企业都可以从SaaS中获利。

目前,SaaS已成为软件产业的一个重要力量。只要SaaS的品质和可信度能继续得到证实,它的魅力就不会消退。

6、Open API

Open API实现技术

SOAP

XML-RPC

REST

文章知识点与官方知识档案匹配,可进一步学习相关知识Java技能树使用JDBC操作数据库数据库操作91673 人正在系统学习中 相关资源:国内领先的在线试衣间软件3D试衣间_github3D试衣间源码-互联 …

声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2019年4月9日
下一篇 2019年4月9日

相关推荐