.Net下企业应用系统架构构建心得
在开始架构设计之前,需要了解一下架构是什么,按照IEEE标准的定义是: Architecture 是一个系统的基本组织,它蕴含于系统的组件中、组件之间的相互关系中、组件与环境的相互关系中、以及呈现于其设计和演进的原则中。 (The embodied fundamental organization of a system in its components, their relationships to each other, and to the environment, and the principles guiding its design and evolution. [IEEE Std 1471-2000])
一句话,架构就是软件产品的骨架,这个骨架把组件、环境纳入其中,使之能有效得发挥它们的技能。
从架构、技术和需求的关系来看。一个软件产品包含了需求和技术,而架构同样是要包括需求和技术的,只是它没有全包全括这个需求和技术,应该是一些整体性的需求,尤其是一些非功能性的需求。如果在构建架构的时候,架构设计人员根本不了解企业使用的目标软件的整体需求,企业使用目标系统的整体环境,那指望架构适用显然有点强求。
架构的重要性是不言自明的:
l)从需求、技术和架构的关系看,架构是软件产品的骨架
2)从软件过程上看,架构处在需求即将完成,实现开始之前,是一个承上启下的关键点
3)从技术上来看,架构是整体设计,包含了软件需要用到的各项技术
4)架构决定开发过程,方法和工具,这一点都不夸张,架构决定了软件的规模,技术。很自然就觉得了资源的需求以及如何配置这些资源来进行开发
5)架构影响软件产品的成本,包括开发成本,测试,实施和维护成本 架构实际上是软件的一部分,同样都需要遵循软件设计中要考虑的设计原则。但是,架构由于是前期设计,整体设计,又具有其需要强调的地方:
6)明确目标,切合需求(实用决定一切)
7)可扩展性
8)易用性和易维护性平衡艺术,易用性就要求系统不能过于负杂,而易维护性就要求可扩展性和灵活性,就要求系统不能太过简单,这就要权衡这两个性能方面的考虑。
9)安全性, 架构的安全并不是说把架构的代码放到一个地方加密,是在架构设计中考虑软件的安全性能,这个在先期考虑是相对重要的。
l0)稳健性, 架构设计时需要纳入考虑的要素有:
l1)Application Infrastructure, 应用的基础架构,也可以说是架构是建立在什么平台上的,比如windows 2003+.Net framework 1.1,当然并不是就这么简单,下面会有具体的讲解。
l2)Management, 架构设计中要考虑用户对软件的管理方面的考虑,比如用户对性能监控的要求,用户要对软件执行各个环节的执行效率统计等等。
l3)Security, 安全性是在什么地方都要考虑的,不光是软件开发。
l4)Storage, 存储,面对一个企业级的应用而言,对存储的要求是要特别注意的。
l5)Network,网络拓扑结构,以及企业对网络的要求层级,数据传输要求等等。
在了解了软件架构的这些本本上的东西,那么我们来搭个应用看看。以我碰到的项目为例,当然一些技术是可通用的,但这个是一个个案,不代表适用您的项目,只求交流。
先交待一下,假设:
1. 系统是建立在微软的架构基础上的,Microsoft System Architecture (MSA)
2. 它是一个B/S的N-Tier架构
3. 同时它是一个企业级应用系统,信息平台
在考虑使用N-Tier的过程中,由于系统中没有涉及到要使用跨平台的应用,在可预见的将来也不会有,所以就把Web Service拿掉了。Web Service从3年前就开始用,但是几个问题还是没有解决:
1. Web Service从接口继承,如果两个或者两个以上的Web service同时从相同的接口继承,由于Web Service的自描述性,每个Web Service都重新生成接类,就成了两个不同的类。Web Service本身不能被继承,同样由自描述性搞的。Web Service要真正做到跨平台那就需要做到跨语言,从Java到C#的转化时数据类型转化是相当麻烦的,基本类型之间就有很大问题,如byte,sbyte(C#)中,当Java中根本就没有sbyte。早在一年半前曾用相异平台做了一个应用系统,为了处理这个数据类型转化,我曾想去掉Web Service。Web Service方法不能重载,这个很恐怖。Web Service的安全问题。
尽管Web Service有其种种好处,连现在的网格都开始醉心于它,更不用说SOA了,本身就是以Web Service为核心展开的。但是,Web Service到底能走向哪里?
在开始架构设计之前,需要了解一下架构是什么,按照IEEE标准的定义是: Architecture 是一个系统的基本组织,它蕴含于系统的组件中、组件之间的相互关系中、组件与环境的相互关系中、以及呈现于其设计和演进的原则中。 (The embodied fundamental organization of a system in its components, their relationships to each other, and to the environment, and the principles guiding its design and evolution. [IEEE Std 1471-2000])
一句话,架构就是软件产品的骨架,这个骨架把组件、环境纳入其中,使之能有效得发挥它们的技能。
从架构、技术和需求的关系来看。一个软件产品包含了需求和技术,而架构同样是要包括需求和技术的,只是它没有全包全括这个需求和技术,应该是一些整体性的需求,尤其是一些非功能性的需求。如果在构建架构的时候,架构设计人员根本不了解企业使用的目标软件的整体需求,企业使用目标系统的整体环境,那指望架构适用显然有点强求。
具体的了解一下这个层的关系,以及构建架构时上文提到的需要涉及到的问题。
1. Presentation Tier
表示层分层两层,UI Components可以直接看作是HTML,UI Process 这里不是MVC,而是code-behind类。 在表示层,就我所碰到需要处理的问题有:
l)MVC (Model-Views-Controller)
Asp.net下是否需要使用MVC一直是一个有争议的问题。 Asp.net的特点是事件驱动与Code-behind,Code-behind本身就可以理解是MVC中的Controller,但是没有体现MVC的好处来,微软缺乏双向赋值的考虑。UIP (User Interface Process Application Block )是微软社区里的一个开源项目。严格说来它只是一个管页面流转,不是一个MVC的框架。Maverick.net是一个比较轻量级的框架,简单实现了MVC,但是也有其缺陷,而且比较老了。 还有Castle的框架,Spring还没有完整推出。
2)国际化
如果是一个多语言的企业应用,那就需要国际化支持,.Net提供了很好的国际化支持。
3)页面元素格式统一转化与验证
比如日期形式从"yyyy-mm-dd"需要转化成"yyyy/mm/dd",如果没有一个统一配置的地方,那页面就要伤筋动骨了。
4)安全,在后面的安全节有介绍,这里先按下不提。
编辑推荐:
温馨提示:因考试政策、内容不断变化与调整,长理培训网站提供的以上信息仅供参考,如有异议,请考生以权威部门公布的内容为准! (责任编辑:长理培训)
点击加载更多评论>>