Tangram与软件的组合构造

Tangram与软件的组合构造       Tangram是中文“七巧板”的英文对应物,大概老外们认为“七巧板”是唐朝人的睿智游戏,而海外唐朝就象征着中国。“七巧板”表现出明显的朴素的构造化思想,以7个元素为基,尽情的造你能所造。最早开发Tangram的时候,这个系统取个什么名字,颇费一番脑筋,好的创意一定得有相配的名字。七巧板的想法就是给一个软件系统一个充分大的“基”,在这个“基”的基础上允许你进行符合规则的构造。软件功能的组合构造是一个十分有趣的问题,首先你必须提供组合构造的基础,其次你必须制定组合构造的规则,然后你必须给出参与组合的成员元素之间的调度、交互方案。       HTML模型是一个很有趣的例子,通过提供一组控件,你就可以构造多彩的页面了,最早我就是通过驱动HTML的扩展接口来实现HTML模型与MFC、ATL等框架对接的,典型的做法是,设计一个IDispatch对象IExtDisp,这个对象能够访问你的对象模型,然后再想办法将这个对象与HTML模型绑定,MSHTML库提供了这个机制。通过如上的处理,你可以在你的HTML页面中调用你的对象指令系统,一个典型的例子就是Visual Studio .NET的代码向导(Wizard)的实现。尽管HTML指令可以扩展,但却不是一个好的选择,我最终将HTML作为一个更大的“基”的一个成员来对待,之所以如此,是因为HTML的表现力还嫌不足,因为毕竟这些东西不是程序或者不像程序。早期使用Delphi时,VCL中有一类Frame对象给我留下很好的印象,从形式上看,一个CFrameWnd与Delphi的Frame很像,但不是。一般来说,Delphi的对象是编译前的,也就是说,(绝大多数)Delphi等系统的对象要经过编译后才能使用,因此选择Delphi为Tangram主体构造的可行性被排除了(事实上Delphi一样可行,因为Delphi支持RTTI)。构造Tangram的时候,就想到要支持Delphi的Frame对象(现在实现的Tangram系统可以支持Delphi/BCB的ActiveForm)。最终选定MFC作为Tangram的底层基础是因为MFC更好的支持RTTI(运行时类信息),以及MFC有灵活的存储机制(MFC的存储机制简陋但不失为强大!)。       让我们看一个较为复杂的Frame窗体:(一个合成的Frame窗口)上面的窗体是由一个.NET Control、二个UserForm以及一个MFC View合成,Frame框架是由二个Splitter以及一个Excel风格的TabWnd构成。软件的组合系指:先完成Frame框架,然后将上述对象(一个.NET Control、二个UserForm以及一个MFC View)“安装”上去,构架的格局可能有多种,如果一个程序没有内置设计引擎,程序员就辛苦了,用户的定制能力也就极大地被限制了,Tangram的设计目标就是保证这一切可以“可视化”地完成!而且完成得足够专业。一般来说,HTML不能满足程序员的要求,而程序员又无法或很难具备HTML的灵活性,在这方面,Tangram给出一个折中的方案:具备HTML的可设计、编辑性,有具有程序界面的视觉。传统的程序,由于被操作的对象大多驻留在程序内部,因此,可设计性被极大地限制了,Tangram立足于提供一个足够广泛的“软件对象基”,使得可设计性成为事实,如果MFC View、ActiveX Ctrl/ActiveX Document、.NET Control、HTML、Flash等类型的元素成为一个超级“七巧板”中的原子成分,等待你的将是一个巨大无比、色彩斑斓的对象世界,掌握Tangram,你就控制了Microsoft的组件世界,你就拥有无限的连接能力……(内置VBA后的Form对象)(二次开发)(Form设计) 

时间: 2024-10-12 01:51:45

Tangram与软件的组合构造的相关文章

软件接口的历史和未来

软件的未来其实在很大程度上要指望软件接口的前景如何.我们知道,计算机世界里的接口这两个字具有两种众所周知的含义:其一是指软件本身的狭义"接口",比如各种软件开发API等.其二则指的是人与软件之间的交互界面.我们把这种人-软件之间的接口称作"用户界面",也就是"UI". 这里要讨论的前一种定义: 软件不同部分之间的交互接口.通常就是所谓的API--应用程序编程接口,其表现的形式是源代码.API的发明和发展大大促进了计算机产业的进步,同时API几乎决

《企业软件交付:敏捷与高效管理精要》——3.4 企业软件交付的软件工厂方法

3.4 企业软件交付的软件工厂方法 正如我们前面讨论的,今天的机构面对的商业环境正以前所未有的速度发生变化.与此同时,这些机构还要管理和降低整个机构的运营成本.这就直接意味着,他们不仅要最大限度地减少浪费和低效率,还要提高生产力.软件和系统行业正在从基于手工作业.侧重个人的流程,演变为成熟且可重复的流程,既能稳定获得高品质的输出,又具有灵活性,能够根据客户的个别需求差异进行调整. 为了定义企业软件的设计.开发和交付中的软件工厂方法,我们可以把工业行业的关键特点应用到这里,以便减少产品的上市时间.

IBM Spectrum Storage Suite 提供新的存储软件许可方式

  插图作者:Mark Allen Miller IDC 指出,到 2018 年,存储容量富余的服务器预计将占到新购容量的一半1. 在软件定义基础架构 (SDI) 环境中工作了 18 个月后,早期采用者已变得对单供应商的解决方案情有独钟. IBM Spectrum Storage* 产品组合已包含了多种产品,因此,对 IBM 来说,下一步自然就是开发 IBM Spectrum Storage Suite,以增强其 SDI 产品组合的实力.它的设计以 IBM 的 Virtual Storage C

基于DotNet构件技术的企业级敏捷软件开发平台 AgileEAS.NET - 敏捷并行开发方法

      首先声明,此并行开发非指并行计算,而是指实践软件工程所总结的一些心得和做法.       敏捷并行开发方法,是利用软件构件技术等技术,以及平台+插件化开发技术整合而出的一种快速开发模式:并行是指产品在生命周期内,项目管理过程.项目研发过程和机构支撑过程"并行"开展,项目研发过程中各个阶段有限度"并行"开展. 并行开发       在传统的瀑布开发模式下,同一软件的多个阶段是顺序地被开发出来的,也就是说第一阶段全部开发结束后才开始第二阶段的开发:同样,等第

PHP+MYSQL三日通

mysql 一.PHP/MySQL简介 您应该听说过开放源代码软件(OSS),除非最近六到八个月来您一直住在火星上.这场运动有着巨大的冲击力,已引起一些大公司的注意.象Oralce.Informix,还有多家公司都开始把他们的主力数据库产品移植到OSS的产物之一 - Linux操作系统上. 如果您有足够的技术力量,拥有一个复杂庞大的关系数据库系统(RDBMS)则是如虎添翼.但是也许您对数据库还刚刚入门,您刚刚读了Jay的文章,决定自己也来搞一个数据驱动的网站.可是您也许会发现您缺乏必要的资源来运

Microsoft.NET为什么难于理解

>>原标题如此,其实我觉着这是非常自然的事情<br>--------------------------------------------------------------------------------<br><br>分析:Microsoft.NET为什么难以理解<br><br>--------------------------------------------------------------------------

嵌入式操作系统风云录:历史演进与物联网未来.

嵌入式操作系统风云录: 历史演进与物联网未来 何小庆 著 图书在版编目(CIP)数据 嵌入式操作系统风云录:历史演进与物联网未来 / 何小庆著. -北京:机械工业出版社,2016.10 ISBN 978-7-111-55085-3 Ⅰ. 嵌-   Ⅱ. 何-   Ⅲ. 实时操作系统   Ⅳ. TP316.2 中国版本图书馆CIP数据核字(2016)第248216号 本书全面回顾了嵌入式操作系统的演进历史,主流的嵌入式操作系统的技术特点.成长历程以及背后的商业故事,展望了嵌入式操作系统未来的技术路

独家 | 手把手教随机森林

随机森林-概述   当变量的数量非常庞大时,你将采取什么方法来处理数据?   通常情况下,当问题非常庞杂时,我们需要一群专家而不是一个专家来解决问题.例如Linux,它是一个非常复杂的系统,因此需要成百上千的专家来搭建.   以此类推,我们能否将许多专家的决策力,并结合其在专业领域的专业知识,应用于数据科学呢?现在有一种称为"随机森林"的技术,它就是使用集体决策来改善单一决策产生的随机结果.在这种方法中,每个软件"专家"使用树型算法来完成它们的任务,然后使用这样的树

加盐密码哈希:如何正确使用

如果你是Web开发者你很可能需要开发一个用户账户系统.这个系统最重要的方面就是怎样保护用户的密码.存放帐号的数据库经常成为入侵的目标所以你必须做点什么来保护密码以防网站被攻破时发生危险.最好的办法就是对密码进行加盐哈希这篇文章将介绍它是如何做到这点. 在对密码进行哈希加密的问题上人们有许多争论和误解这大概是由于网络上广泛的误传吧.密码哈希是一件非常简单的事情但是依然有很多人理解错误了.本文阐述的并不是进行密码哈希唯一正确的方法但是会告诉你为什么这样是正确的. 郑重警告如果你在试图编写自己的密码哈