确定重要的架构特点
有许多会影响架构特点的因素。其中包括企业的设计与实现能力、开发人员的能力与经验、设备限制与部署场景等。
主要架构模式有几下几种:
·客户服务器。分离系统,客户向服务器发送请求。
·基于组件。将应用设计分解为可重用的组件,用户界面良好。
·分层。以层为单位将系统分解为各功能相近的组。
·消息总线。为所有连接到系统的组件定义一组通用格式,因此各组件无需了解接收方的实际信息。
·面向对象。一种将任务以对象为基础进行分解的程序设计方法。
·面向服务(SOA)。应用根据合约与信息以服务的方式呈现或使用功能。
一个完整的结构通常包含几种模式。比如,一个分层的架构可以与基于组件、面向对象或面向服务的架构模式一起使用。可以这样选择架构模式。
以下是选择客户服务器架构模式的情况:
·你的应用是基于服务器的,可以支持多个客户端。
·你创建的是通过网络浏览器呈现的网络应用。
·你的业务过程需要能被公司所有人使用。
·所创建的服务要供其它应用使用。
·你想让数据存储、备份和管理功能集中化。
·你的应用必须支持各种客户端类型和设备。
以下是选择基于组件的架构模式的情况:
·你已经有了合适的组件,或者可以从第三方获得合适的组件。
·你的应用永远都是用于执行程式化的功能的,可能不需任何输入。
·你的应用相对简单,无需一个完整的分层架构。
·你的应用是为了满足特定的需求而产生的,没有用户界面或业务过程。
·你想把使用不同代码语言编写的组件结合到一起。
·你想创建一个便于替换和更新私人组件的插件式架构。
以下是选择分层架构模式的情况:
·应用比较复杂,所以你想分组各种功能问题以简化问题。
·你想通过减少依赖关系来提高可维护性与扩展性。
·你已有通过服务接口呈现合适的业务过程的应用。
·你的应用必须支持各种客户端类型和设备。
·你想实现复杂的和/或可配置的业务规则和过程。
以下是选择系统总线架构模式的情况:
·当前的应用之间有互操作。
·你在执行一个需要与外部应用进行交互的任务。
·你在执行一个需要与寄存在另一个环境中的应用进行交互的任务。
·当前的应用执行一些特殊的任务,你希望把这些任务整合成一个操作。
以下是选择面向对象的架构模式的情况:
·你要根据实际对象和行为对应用进行模拟。
·你已有符合需求的合适的对象和类。
·你需要将逻辑与数据一起封装到可重用的组件中。
以下是选择面向服务的架构模式的情况:
·你能够访问到适合的服务,或者可以购买到托管公司的所需服务。
·你希望为包含各种服务的应用程序构建一个统一的用户界面。
·你在创建SS、SaaS或基于云的应用。
·你需要支持应用中各段之间的基于消息的交流。
·你需要以平台无关的方式呈现功能。
·你希望利用联邦服务,比如认证。
·你希望以目录的方式呈现服务,并且首次接触这个界面的用户也可以使用。
确定相关的技术
在选择技术时,需要考虑的关键因素是你的应用类型和你希望使用的应用部署结构及架构模式。技术的选择也受到企业政策、设备限制、资源能力等的控制。比如你想构建一个SOA模式的应用,那么WCF就是不错的选择。如果你要构建可以调用WCF服务的网络应用,那么ASPNET是不错的选择。你的技术选择和你的应用模式具有直接的关系。
不妨考虑一下以下问题:
·哪种技术能为你提供架构模式上的支持?
·哪种技术能为你提供应用模式上的支持?
·哪种技术能为你的应用提供质量属性上的支持?