巨无霸 对 组件模型

基于组件的应用程序结构域与传统的巨无霸程序有着根本的不同。为了理解不同,我们来比较一下相同应用程序的各个实施方法。

巨无霸模型

现在,假设你是一个软件公司的产品经理,负责为制造业研发软件。这个软件应用于车间层用于跟踪多种产品,从飞机到瓶盖。这个程序必须能够跟踪制造零件的执行工艺和工程图纸。

软件会储存制造资源信息用于改进生产流程并且会与订单商务系统接口。另外,你的系统还会与车间设备交互,启动和停止设备并处理各种像瓶颈或抛锚一类是的事件。

用传统的方法来编写这个软件是创建一个巨无霸程序。这个程序可能有上千行的代码并且需要一个大型全职程序员团队来维护。它可能是由一种语言开发,譬如C++。即使这个程序在某方面用其他语言编码比较方便,你也不会愿意这样做,使用两种以上语言总是会有问题。

巨无霸解决方案提供固定功能。换句话说,就是很难根据每个客户的不同需求定制。如果客户不喜欢该系统的某个部分,他们只能是提出需求并且期待在下个版本改变。每个不同的制造商都会需要个性化的实施。每个新客户都需要一个新的开发周期。在这种情况下升级是困难的因为应用程序编译成了一个大的可执行文件。这个巨无霸方案同时也阻止(或者严格限制)第三方扩展或增强。因为所有代码都被编译进了巨无霸,想向编译好的代码增加功能是非常困难的。

组件模型

现在考虑使用软件组件实施同样的制造系统。用一种基于自由标准组件的解决方案可提供所需要的功能。例如:部分代码控制车间层的一些设备(譬如包装机)成为独立组件。核心应用程序使用界定清晰的固定行为通信。基于组件的方法有一些先进之处。首先整个应用程序的复杂度降低了。在任何模块中,与其期望代码复杂度以指数方式增加,不如以线性方式增加。开发者使用巨无霸模式,不仅要对他们自己的代码拥有直接的知识,同样对他们想要交互的代码也要有。在巨无霸模式中,一部分代码的小改变可能会对另一部分代码产生重大的边界影响。而当使用基于组件的模式时,每个模块都是独立的。这样,每个程序员所要管理复杂度的仅是他或她正在开发的组件。由于每个组件都是独立的,因此每个组件的内部之间相互不受影响。通过逐个击破技术,应用程序的复杂对就被降低了。

因为每个组件都是独立的,所以每个组件都可以使用看起来最合适语言开发。只要组件保持着二进制兼容性,就与语言无关。这就让每个开发者可以选择最好的工作工具。

基于组件的方式,为应用程序定制化或增加功能提供了一种方便的途径。例如:如果用户更换了一台新型的打标机,就很容易更换打标组件来适应新机器。只要新组件对旧组件是“插头兼容”的,新组建就能提供所需要的增加功能。此外,新的组件可以不必由应用程序的开发者提供支持。而是可以由出品这个新打标机的公司或者其他第三方提供。这样,应用程序的功能可以使用不受开发者限制的方式修改或扩展。

时间: 2024-10-10 05:47:59

巨无霸 对 组件模型的相关文章

全年净收入预期过2500亿,京东巨无霸格局已定

15日,京东发布第三季度财报,预计全年营收将超过2500亿,且连续六个季度出现高质量的持续增长.笔者认为,应社会和产业趋势的要求,以及京东在后电商时代的持续布局,京东巨无霸格局已定. 高质量的持续增长 2016年第三季度财报京东净收入达到607亿元,同比增长38%,超越华尔街预期.在非美国通用会计准则下(Non-GAAP)京东集团经营利润率为1.1%,去年同期第三季度经营利润率为0.7%,同比增长57%:毛利额为94亿元人民币,去年同期第三季度毛利额为59亿元人民币,同比增长59%.毛利率进一步

689期 | 巨无霸的软肋在哪里? - 如何在一个已经拥有巨大存量的强大敌人身边生存下来。

假设,你是一家新兴的公司,要进入一个行业,但是这个行业里有一家传统的巨无霸,那么请问,你会从什么角度向它发起挑战?通常的思路无非是两种,一种是找它最强的地方去竞争,就是硬杠和死磕:第二种是避实击虚,找它最弱的地方去竞争.但是很可惜,这两条路在逻辑上都不大容易走得通.为什么?你想,如果你挑一家大公司的长处去竞争.它的长处又不是天上掉下来的,那也是人家努力的结果,也是在长期市场环境中演化出来的.它围绕这个长处,一定已经积累了太多看得见看不见的优势.而且,一旦它发现这个核心优势被挑战,人家又不傻,会立

Bean(描述Java的软件组件模型)

EJB是Enterprise Java Bean的缩写,一个Bean扮演着应用程序素材的角色.它包含有一个functional interface,一个life-cycle interface,以及一个实现它所支援的商业方法的类别. 外文名 Enterprise Java Bean 缩    写Bean   定义描述Java的软件组件模型 类    型    应用程序素材的角色 目    的  将可以重复使用的软件代码打包 应用范围  应用于服务器的部件 1定义 JavaBean是描述Java的

[家里蹲大学数学杂志]第054期图像分割中的无边缘活动轮廓模型

$\bf 摘要$: 本文给出了王大凯等编的<图像处理中的偏微分方程方法>第 4.4 节的详细论述. $\bf 关键词$: 图像分割; 活动轮廓模型; matlab 编程 1 模型的建立 在图像中, 对象与背景的区别有时表现为平均灰度的明显不同. 由于这类图像既没有明显的边缘 ($\sev{\n I}$ 大), 也缺乏明显的纹理 (texture, 灰度变化有一定的规律, 并形成一定的 patten), 故测地线活动轮廓 (geodesic active contour, GAC, 或 snak

ExtJS4.2学习(二)Ext统一组件模型——Panel

鸣谢:http://www.shuyangyang.com.cn/jishuliangongfang/qianduanjishu/2013-11-06/171.html ----------------------------------------------------------------------------------------- 前言:本博客几乎都是摘自Ext4.2的API 虽然Ext组件拥有几乎完美的对象继承模型,但是这毕竟属于底层架构的一部分,我们日常开发时候接触最多的还是

【Android开发精要笔记】Android组件模型解析

Android组件模型解析 Android中的Mashup 将应用切分成不同类别的组件,通过统一的定位模型和接口标准将他们整合在一起,来共同完成某项任务.在Android的Mashup模式下,每个组件的功能都可以被充分的复用.来自不同应用的组件可以有机地结合在一起,共同完成任务. 基于Mashup的Android应用模型 三个基本要素:组件.连接.配置 接口就是实现单元.从代码来看,组件就是派生自特定接口或基类的子类的实现,如界面组件Activity就是指派生自android.app.Activ

无插件的大模型浏览器Autodesk Viewer开发培训-武汉-2014年8月28日 9:00 &ndash; 12:00

武汉附近的同学们有福了,这是全球第一次关于Autodesk viewer的教室培训. :) 你可能已经在各种场合听过或看过Autodesk最新推出的大模型浏览器,这是无需插件的浏览器模型,支持几十种数据格式.目前该产品还没有正式发布,但如果你感兴趣,座位紧张,赶紧报名:   http://www.autodesk.com.cn/adsk/servlet/item?siteID=1170359&id=23581540  (这是系列培训中的一部分)   通用无插件大模型浏览器–Autodesk Vi

http://bbs.51cto.com/thread-1083322-1.html ExtJS4.2学习(二)Ext统一组件模型

学而不思则罔,思而不学则殆.虽然Ext组件拥有几乎完美的对象继承模型,但是这毕竟属于底层架构的一部分,我们日常开发时候接触最多的还是各种组件与布局,通过组件.布局的各种组合最终才形成了功能强劲的应用,所以有必要首先对Ext的组件模型有所了解. Ext中所有的可视组件都继承自Ext.component,这种单根继承的模型保证所有组件都拥有相同的通用方法与生命周期,这样在后续对这些组件进行维护管理时将更加便捷,同时也保证了在进行布局时的便利. 组件最常见的几项功能包含initComponent().

Go语言无锁队列组件的实现 (chan/interface/select)

1. 背景 go代码中要实现异步很简单,go funcName(). 但是进程需要控制协程数量在合理范围内,对应大批量任务可以使用"协程池 + 无锁队列"实现. 2. golang无锁队列实现思路 Channel是Go中的一个核心类型,你可以把它看成一个管道,通过它并发核心单元就可以发送或者接收数据进行通讯(communication).无锁队列使用带buff的chan存储数据. interface{} (类似c++的void*, java的Object)可以与任意类型互转.无锁队列使