`
yyzhpq
  • 浏览: 307294 次
  • 性别: Icon_minigender_1
  • 来自: 成都
社区版块
存档分类
最新评论

商业应用架构

阅读更多

 

一. 谈架构,先从什么是架构谈起.

架构一词,本用于形容如何通过某些工具而达到某种目的的实现,并不需单限制在IT领域.

在IT,架构普遍指通过某种特定的平台,而达到完成整体软件的功能.

而所谓的特定的平台,更被结构化地分为了多个层.

先举例说一个最最平常的4层应用程序。分为
1 表现层 UI
2 功能层 ACTIVITY
3 数据处理整合层 DATA MANIPULATION
4 数据持续层 DATA STORAGE

所以说以上的四层经典,因为它很好地符合了广大商业模式和商业软件的需求.其中包括.
1 用户界面 ( 有C/S 和 B/S 之分 )
2 可以频繁改动的,有时候非常怪异的客户端行为,另外如权限安全也可以放在这里.
3 为了使 2 得到透明的数据库, 必须使用 3
4 只作为程序的容量,规模,以及安全性的考虑,使用不同的数据库甚至文件系统.

二. 为什么要谈架构.

1 架构决定了软件的功能.决定了软件的能力.如公司的各个部门在不同的防火墙后面,各个部门在不同的地区,各个地区又没有专门的MIS部门对计算机提供支持,这些情况就会导致B/S结构比C/S要方便很多.

2 用户的行为很怪异,有的部门主管在签名文件的时候不需要得到上级的认可,有的却需要和多个部门以及上级交流并保存签名的文件的多个copy到别的部门.这个时候 功能层 就负责这些无聊又繁琐的逻辑.并且请注意,这些逻辑会不断改变.

3 在我们开发的角度来说,总是希望写些不用频繁改变的代码,而且有的程序员同志又不希望理睬无聊的客户要求,他们就说"得,我做些你们都喜欢我做的工作", 因此 数据处理整合层 就产生了.

4 最不由我决定的一个层就是 数据持续层.比如我公司就有免费的(因为是我们的集团购买了)oracle,有时候他们就不想再用10多万来用用sql.我们做程序的最多时给对方一个建议和选择,比如告诉他们"oracle的维护费用很贵,我们也不大精通阿同志"

三. 谈了架构又真的有用么?

我们这里先看看一个程序要开发出来的必要充分条件是什么
首先,要有需求
其次,要有资源

需求,由市场决定,没有任何定式,大而繁杂
资源,包括人力,时间两个重要的要素 (顺便一提,这个就是it同志经常加班的该死的原因)

我举几个例子说说很难真正地谈架构.

1. 我们在谈 "二. 为什么要谈架构." 的时候,我说了很多关于用户相关的东西,如各个部门经理有不同的需求,和各个登陆人员的权限不同.
大家刚才给我骗了,我告诉你们说在 "2 功能层 ACTIVITY 功能层 就负责这些无聊又繁琐的逻辑". 其实不然.客观来说,几乎所有的层都和权限以及用户逻辑有关系.
打比方说,不同权限的人,登陆同一个页面,就应该开到不同的功能按钮.如部门经理,在看到员工信息的时候,就应该有删除员工这样一个按钮,但是员工就不能看到.
那这个要在 "1 表现层 UI" 实现的功能为什么我们在 "2 功能层 ACTIVITY" 还要再做一次?

2. 在上面我说 "为了使 2 得到透明的数据库, 必须使用 3 ", 我又骗了人了,没有一个数据库能真正的做到透明, 举个例子说,在
"2 层" 的程序员B,要是不知道数据库的结构,他怎么和 "3 层" 程序员C写的接口交流, B不知道数据库结构,他怎么和C交流?
那么在我看来这个状况就很怪异:

首先,在开发资源来说,既然B同学要做的工作,A也要了解一部份,那我为什么不安排A和B在一个做同一个层,而要他们做自己各自的工作.或者这样,你们在B的位置想一下,B要是不理A的需求,自己弄自己的接口,那可能他做了100个接口,其中只有50个是A需要的,另外25个市A不满意的(比如说对返回错误信息的不满意),还有25个是完全没用的.我为什么要浪费B的能力做那25个无用的接口?

其次,在需求发生改变的时候,分的层越多,改动的量就越可能大.很多同志会说"这个怎么可能呢?分层就是为了最小的改动".所以我说"可能大"而不是"必然大",为什么这么说呢?
如果是界面的改动,那也许很小,或者是用户行为的变化,这个改动也许也不大.
但你没有在一个项目经理的角度考虑问题,当一个改动发生的时候,就必须在软件的各个层上进行细致的考虑.
如:我们把 1, 2, 3, 4 层的程序员分为 A, B, C, D
当A改了他要改的东西,B是否要改相应的函数?B是否要提供另一个不同的TRANSACTION?C好像任何改变都与他无关但当B对他说"我需要一个新的api"的时候,C就要跳楼了因为C发现D的数据库根本没有这样的column.这个时候你们还会认为A不用知道D在做什么么?


3. 速度问题
再来看看我们最最底层的D同学,他是负责数据库的.有一天我的客户向我投诉程序越来越慢了.
我问了A,A说是B的反应太慢了,B又说C就这么慢,我就去把C给叫来,C告诉我说他不干了,他说"你要求怎么这么多,我又不是单对B工作,我还要处理B1,B2,B3等,他们要的column都不大一样,我就把表的所有column都要过来了".我没了主意就去找D商量,看他能不能让我们可爱的数据库跑快点.D说一个表就有1000万条记录,C一个Select就left outer join 了6个表,他问我"给你做index, 你怎么做?",我说"对您不住,都是我的错,我也不知道怎么做".

 

 

 

 

 

结论:

1 我不时说架构这个东西不好,而是说要有一个平衡,不要为了架构而架构.有些很复杂的要求其实用很简单的方法就可以解决。
2 即使架构好,你的客户才是上帝,我陪客户喝酒大家高兴弄到我第二天不能上班好过我加班改1个星期的代码.你要是真的要写一个能满足无限个单位无限个需求的大型商业软件,那也许功能和二次开发比架构更加重要。
3 老式的垃圾的传统的落后的瀑布开发和混乱开发模式,以及2层,或者假3层的应用程序,有时候更能满足大家的需求.
4 很多英雄老是讨论J2EE和.NET对商业应用的支持,但是真用起来,你又能做多少选择?用哪个,也不是你决定的.是让市场决定的.你是很无奈的,不是么?

我也是.

引用一句话“你不能做到你想做到的任何事情(功能),当你能满足你(客户)希望的70%时,就很难得了”

<script type="text/javascript"></script> <script src="http://pagead2.googlesyndication.com/pagead/show_ads.js" type="text/javascript"> </script>
分享到:
评论

相关推荐

    商业银行应用双活架构设计方案.docx

    商业银行应用双活架构设计方案 本文档主要介绍了商业银行应用双活架构设计方案,旨在提供一个可靠、稳定、安全、可扩展的系统架构设计,满足商业银行业务发展的需求。该方案涵盖了设计原则、充分理解目标、应用系统...

    烟草商业企业应用集成架构

    烟草商业企业应用集成架构

    02 企业 EA -应用软件架构设计规范.docx

    应用架构的设计目标在于定义应用功能、应用划分和应用边界。应用功能的定义应通过关键用例或特性分析来完成,涵盖了交互功能、业务逻辑控制和数据维护。采用“鲁棒图”或类似的工具进行功能定义,可以更直观地展现...

    银行IT应用体系架构

    银行IT应用体系架构是指银行领域内信息技术应用的整体布局与设计,它包括了系统架构的构建、信息流的组织、数据管理、业务流程、安全性保障等多个层面。在现代化的银行体系中,IT应用体系架构对于银行的业务效率、...

    一文搞懂业务架构、应用架构、技术架构、数据架构(4A架构)

    ### 一文搞懂业务架构、应用架构、技术架构、数据架构(4A架构) #### 引言 架构规划在现代企业的信息化建设中扮演着至关重要的角色。如果没有明确的架构规划,可能会导致一系列问题,例如系统烟囱式建设、系统...

    业务架构、应用架构、数据架构和技术架构

    在本文中,我们将深入探讨四个关键架构领域:业务架构、应用架构、数据架构和技术架构,并结合一个实际案例来说明它们的重要性。 业务架构是企业业务模型的描述,包括主营业务、商务模式、商务主体、竞品分析、组织...

    商业银行分布式业务核心系统架构研究.pdf

    商业银行分布式业务核心系统架构的研究是一个关注于银行业务需求快速变化、技术发展迅猛以及安全合规等多个方面的复杂课题。商业银行传统核心系统在面临互联网金融业务冲击时,其架构的局限性逐渐暴露出来。随着...

    商业银行BI架构体系介绍.pptx

    本文主要介绍商业银行BI架构体系的概述、商业银行BI架构体系的组成部分、BI相关概念、数据仓库技术的发展趋势、BI架构概述、商业银行IT系统总体架构、核心业务系统架构、国际结算系统架构、网上银行架构、BI建设的...

    架构演进:京东应用架构设计.zip

    《架构演进:京东应用架构设计》是一份深入探讨京东平台如何从早期的简单架构发展到如今复杂且高效的应用架构的宝贵学习资料。这个压缩包包含了一份PDF文档,详细阐述了京东在面对业务增长和挑战时,其技术团队是...

    大数据架构商业之路

    商业应用中,大数据架构需与业务需求紧密结合。例如,在零售业,大数据可以帮助企业分析消费者的购买行为,预测销售趋势,优化库存管理;在金融行业,大数据可以用于风险评估、欺诈检测和市场预测。此外,大数据还...

    事件驱动的应用架构和应用.pdf

    ### 事件驱动的应用架构和应用 #### 一、事件驱动应用架构概述 事件驱动架构(Event-Driven Architecture,简称EDA)是一种设计计算机软件系统的方法,它利用事件来触发应用程序之间的通信。这种架构的核心在于,...

    腾讯:大数据平台与推荐应用架构.pdf

    以上知识点涵盖了大数据平台与推荐应用架构的多个方面,包括基础架构的设计、资源管理技术、实时推荐系统的重要性、技术优化措施以及数据平台的商业化应用。这些内容对于理解大数据处理架构及其在推荐系统中的应用...

    基于中台战略商业银行架构设计思路.pptx

    IT应用架构发展趋势朝着公共业务能力服务的内聚性、解耦程度和服务拆分的方向发展。基于微服务的业务中台架构是实现企业级公共业务能力服务的有效方法和路径。 三、业务中台架构蓝图 业务中台架构蓝图框架技术中台...

    应用架构和技术架构PPT学习教案.pptx

    在提供的资料中,应用架构被分解为多个层次和领域,如CRM系统、企业支持系统、客户服务网络和服务基础架构、商业智能等。这些系统包括但不限于: - 客户关系管理(CRM):涵盖了销售、营销、服务等多个方面,如销售...

    ASP.NET3.5商业开发架构精解所有代码

    另外,State Management机制,如Session State和View State,确保了跨页面的数据持久性,这对于处理购物车、用户设置等商业应用场景非常关键。 数据库访问方面,ASP.NET 3.5集成了ADO.NET Entity Framework,这是一...

    商业银行应用双活架构设计及方案.docx

    "商业银行应用双活架构设计及方案" 通过对商业银行应用双活架构设计方案的分析,我们可以总结出以下关键知识点: 1. 双活架构设计的重要性:双活架构设计是商业银行应用系统中的重要组件,它旨在确保业务系统的...

    商业银行应用双活架构方案与对策.doc

    《商业银行应用双活架构方案与对策》 在现代商业银行的运营中,信息技术扮演着至关重要的角色,尤其是对于关键业务系统的持续稳定运行。双活架构作为一种先进的IT解决方案,旨在确保业务的连续性和高可用性,避免单...

    华为企业数据架构、应用架构及技术架构设计方法.pptx

    华为企业数据架构、应用架构及技术架构设计方法

Global site tag (gtag.js) - Google Analytics