Tangram开源版本发布

 
Tangram 开源版本发布
经过一段难忘的忙碌,Tangram的第一个完整版本杀青了。回想来到北京的几年,可谓感慨万千,开发产品是心志的磨练,这话没错!经历身体与身心的煎熬,使我深刻的意识到勇者有畏,但也无畏。这一段难忘的经历更加坚定了我的信心。其实,用心去完成一个心愿是非常艰难的事情。计划中的Tangram分3个版本,分别是Open Source版、自由版(Free Edition)以及商业版,刚刚提交了开源版本,下载地址是:
         https://sourceforge.net/projects/tangramproject;
         http://www.codeplex.com/Tangram
国内下载地址:  http://www.zdnet.com.cn/download/windows/swinfo/0,2008005031,39289318s,00.htm
自由版本的Tangram于下周内发布。
Tangram,从词义上解释就是来自中国的一个民间智力游戏:七巧板。其基本的出发点是用最简单的7种几何图形,组合出复杂的几何图案。这个简单的游戏,透视出古代中国人对复杂世界的朴素的认识。事实上,中国古代的先哲们很早就体现了对物质世界的基本认识,因此,也就有“金”、“木”、“水”、“火”、“土”等五行演绎世界的说法,此外,“太极生两仪、两仪生四象”等八卦论也体现了异曲同工之妙,这就是所谓的“五行八卦”。面对今天的软件世界,由于长时间的积累,比起10年前,今天可以说是一个多彩的世界,20世纪90年代中期,第一代互联网的崛起,使得人们充分领略了软件改变世界的魔力,特别是Java、COM、.NET、HTML等软件表现方式的成熟,使得今天的世界里人们越发感觉到,这些最初很神秘的东西,已经成为人们日常生活、工作里的一部分。从许多方面看,软件开发并不是什么高科技的因素,因此,寻求更有效的软件构造方式,一直是人们追求的目标。正像人们探索物质世界的奥秘所经历的那样,从分子论,到原子论,人们总结出了门捷列夫元素周期表,这一优秀的工作,使得人们从一个新的角度看到了物质世界的结构秩序,同时,也向人们展示了一个认识世界的基本方法,那就是,在复杂的现象面前,要对相互独立的对象进行“汇集”,以形成一个基本的“基”,在这个“基”的基础上,寻找相关现象的演绎规则。Tangram框架就是这样思考的产物,针对Windows平台上软件的开发,传统的COM技术、日渐普及的.NET技术,还有经典的C++技术一直都在自己的轨迹上发展着,都有各自忠实的拥护群体,毋庸置疑,每个领域都有各自的强项,因此,没有迹象表明谁会退出历史的舞台。Tangram的基本构思点是,允许开发者将以上三个方面进行一定意义上的自由组合:我们期待来自C++的CView对象、来自COM的ActiveX对象以及来自.NET的托管对象形成一个公共的软件“基”,允许开发者以一致的描述方式形成可描述的软件组合方案,这就是Tangram框架的基本出发点。
从软件开发的方式上考虑,Tangram的构想并不是要淘汰什么,其要点是企图简化构造软件的方式,我们看一个基本的软件框架:
如果我们立足于常规的C++开发方案,我们不难想象这个构架的开发过程,从一定程度上看,这个框架的开发并没有技术上的难度,但毫无疑问,肯定是非常繁琐的工作,从今天的角度看,大多数开发者还不能摆脱代码的局限来构造如此复杂的软件框架。
         如同现代工业冲击手工作坊一样,新的思考方法一定会带来新的变化,这种变化使得人们相信,以今天的建筑工艺,盖起一座几十层的大厦,并不是一件很了不起的事情,也不是一个很了不起的工艺。同样,解决问题的关键不是代码的技术突破,而是描述方案的进步,经过仔细的观察,我们发现,如上图示的软件框架,是完全可以通过可读性很强的XML进行描述的,因此,思考的重点自然改变了,这种改变如同XSLT改变xml技术的面貌一样,Tangram的关键构思之一就是,如何解释一个XML描述,使之转化为一个真正的GUI,这个逻辑,彻底的解除了代码怪圈的束缚,使得人们从软件大厦的深度上得以解脱。
         使用Tangram的最初的障碍也许是“思想”方面的问题,对于一个长期处于Coding状态的开发者而言,Tangram的构思可能是思维方面的一个盲点,也许,开发者很难意识到描述方案的改进将极大地简化他们的开发工作,同时也会极大的拓展他们的驾驭空间。XML非常适合描述带有层次性的结构,这是一个不争的事实,从Web开发方面的实践看,许多复杂的网站,基本都是通过XML技术实现的,特别是XSLT技术的出现使得XML的地位日渐巩固。一般来说,针对一个“平面用户区”,开发者通常的想法是用两种类型的结构对其进行“规划”:一种是“分割窗体”;另外一种是各种风格的“分页”窗体。对现代开发者而言,用这两类构架行为的窗体对一个特定的用户区域进行“架构”并不十分陌生。我们看到在类似 Eclipse、Visual Studio等大型软件框架已经在大量的使用这类手段以增强软件的综合表现力。在框架行为方面,如果能够将这两类具有架构行为的结构“规则化”,那么,基本的技术路线就大致奠定了。基于这样的考虑,我们首先构造一个最基本的Tangram XML节点,这个节点描述如下:
     <TangramNode Name="ObjName"
Caption="Obj Caption"
ID="ObjID"
CnnID="TangramLiteTabWnd.TangramConnector"
VBA="0"
VBAID="0"
Width="446"
Heigh="143"
Tag=""
/>
这个 XML段落给出了一个最基本的Tangram元素的结构,名称属性给出一个Tangram节点的名称,以便开发环节检索对象,这个名称是唯一的,ID属性用来表示对象的ID值,无论是COM框架,还是.NET框架,都需要这个ID进行对象的创建,CnnID属性是给C++对象准备的,这个属性标示一个对象库,里面可以包含任意数目的C++ CView对象,其余的属性我们将陆续的进行解释。对于具有“切割”功能的切分窗体,我们可以采用XML子节点的模式进行描述,一个典型的切分窗体可以描述如下:
     <TangramNode Name="sp2" ID="TangramSplitter" CnnID="TangramConnector" Caption="sp2" >
         <Row>
              <TangramNode Name="fm2" ID="ID" Width="596" Heigh="77" ></TangramNode>
              <TangramNode Name="fm3" ID="ID2" Width="596" Heigh="109"></TangramNode>
         </Row>
         <Row>
              <TangramNode Name="fm4" ID="ID" Width="596" Heigh="77" ></TangramNode>
              <TangramNode Name="fm5" ID="ID2" Width="596" Heigh="109"></TangramNode>
         </Row>
     </TangramNode>
从这个节点看,这是一个 2行2列的切分窗体,xml可以使得这个窗体的描述变得十分清晰,并且可以进一步清晰的给出每个位置的对象的精确描述,对于各种风格的“分页”结构,可以采用类似的描述办法,事实上,一个分页窗体(Tabbed Window),可以在抽象意义上看做是一个1行n列的切分窗体,只不过在几何表示方面体现的UI风格不同而已,在Tangram框架的内部,分页窗体就是一种特殊的切分窗体。由以上的分析,我们可以看到,技术上只需处理如上两类节点即可形成一个原始的基础,现在一个关键的技术问题是:我们如何处理这些节点的迭代、复合,如果在技术上,将各种分页结构看作是切分窗体的特例,那么,技术的关键是切分窗体的“复合结构”,一旦这个问题得以解决,那么,只要给出足够多的分页风格,一个丰富多彩的UI框架世界,就归结为一个描述规则的建立,这是Tangram框架的一个关键的环节,也是使得UI架构逻辑摆脱代码约束的关键所在。
         对一个没有子节点的Tangram节点,我们可以将其看作是Tangram“原子”,相当于一个基础的几何元件,这样,Tangram的动机就非常清晰了,一个基本的出发点就是,这些原子要复合出众多纷纭的UI世界,这既是一个朴素的想法,又是一个极富野心的创意。在Tangram的逻辑中,切分窗体体现着一种复合结构,也是一种“广义”的抽象,即其中已经包容了风格迥异的各种“Tabbed”窗体。在Tangram的世界里,由这类“广义”的切分复合形成的XML描述,我们将之称为“Tangram框架”,这种框架在独立的场合,将被转化为通常意义下的CFrameWnd对象,在其他场合,也许会被实现为另一个框架的一个局部,或者,被动态的创建于另外一个原子所在的“Site”,从这个意义上看,Tangram是一个动态的对接世界。切分窗体在技术上的实现体现了一种基于描述的动态递归的想法,在Tangram引擎的内部,这个地方是XML技术的绝好体现。Tangram对“框架”的构造,是从一个最原始的“原子”开始的,这个构造过程,体现为一个“所见即所得”的可视化设计过程,既然摆脱了代码的羁绊,我们也不能让开发者陷入复杂的XML写作逻辑,因此,所有的一切,伴随着设计过程的完结,相关的XML描述也就自然的形成了。
         从结构方面看,Tangram里最关键的两个对象是:
1、Tangram“原子”,我们将其称为基本的Tangram元素,在真实的软件世界,这些原子,将被实现为各种C++的视图对象、ActiveX控件对象或者是.NET对象。这些林林种种的东西,将会形成一个丰富多彩的软件世界;
2、Tangram“框架”,框架本质上是切分窗体的复合体,框架以及框架复合形成的复合框架,相当于支撑这个世界的风格各异的建筑,开发者没有必要关心这些框架是如何产生的,只需关心这些框架能够提供什么方面的服务,如此,那些原子级别的元素就成为开发者必须关心的“事物”。
在Tangram引擎中,作为复合结构的Tangram框架体现为一个软件功能单元的“集合”,通常情况下,我们将其对应于VC++意义下的一个“文档模板”对象,因此,作为一种文档的体现形式,这类对象被保存在一种特殊的XML文件之中,我们将这类文件称为xtml文件,形式上,这类文件与html文件很类似,框架之间的复合行为与HTML文件中的超链接行为也很相似,在Tangram内部,框架的复合型为是通过“ Asynchronous Pluggable Protocols”实现的,我们通过一致的提供这种软件“超链接”能力,希望能够本质上提高软件组件之间的组合能力,以便形成一个公共的、内容外延广泛的公共软件资源空间,从新的层面提高软件的构造能力。
         Tangram能够改变开发者的软件构造模式?这是一个微妙的问题,从动机上看,我们希望达到这个效果,从结果上看,大量的代码被风格清晰的xml描述替代,不容否认,事实上已经产生了改变,让我们看看Tangram带来的效果吧:
1、 几乎不需要Coding,你就可以生成表现力丰富的软件框架:
2、 用Web开发模式看待软件复合-功能强大的软件超级链接功能:
3、 基于Internet的软件扩展能力,一个特例,IE Band扩展:
4、 一个灵活健壮的桌面“Side Bar”系统:
开源版本的Tangram框架由于授权协议的限制,只能包含Tangram全部功能的一个子集,例如,无法提供对Microsoft Visual Basic for Application的支持,作为一个精简的框架,Tangram OpenSource 版仅仅提供了COM技术的支持,但足以确保开发者开发出强大、健壮的应用系统,以下是开源版本的屏幕截图:
欢迎各位开发者对Tangram系统提出宝贵意见。
 
 
相关推荐
DirectX修复工具(DirectX Repair)是一款系统级工具软件,简便易用。本程序为绿色版,无需安装,可直接运行。 本程序的主要功能是检测当前系统的DirectX状态,如果发现异常则进行修复。程序主要针对0xc000007b问题设计,可以完美修复该问题。本程序中包含了最新版的DirectX redist(Jun2010),并且全部DX文件都有Microsoft的数字签名,安全放心。 本程序为了应对一般电脑用户的使用,采用了易用的一键式设计,只要点击主界面上的“检测并修复”按钮,程序就会自动完成校验、检测、下载、修复以及注册的全部功能,无需用户的介入,大大降低了使用难度。在常规修复过程中,程序还会自动检测DirectX加速状态,在异常时给予用户相应提示。 本程序适用于多个操作系统,如Windows XP(需先安装.NET 2.0,详情请参阅“致Windows XP用户.txt”文件)、Windows Vista、Windows 7、Windows 8、Windows 8.1、Windows 8.1 Update、Windows 10,同时兼容32位操作系统和64位操作系统。本程序会根据系统的不同,自动调整任务模式,无需用户进行设置。 本程序的V4.0版分为标准版、增强版以及在线修复版。所有版本都支持修复DirectX的功能,而增强版则额外支持修复c++的功能。在线修复版功能与标准版相同,但其所需的数据包需要在修复时自动下载。各个版本之间,主程序完全相同,只是其配套使用的数据包不同。因此,标准版和在线修复版可以通过补全扩展包的形式成为增强版。本程序自V3.5版起,自带扩展功能。只要在主界面的“工具”菜单下打开“选项”对话框,找到“扩展”标签,点击其中的“开始扩展”按钮即可。扩展过程需要Internet连接,扩展成功后新的数据包可自动生效。扩展用时根据网络速度不同而不同,最快仅需数秒,最慢需要数分钟,烦请耐心等待。如扩展失败,可点击“扩展”界面左上角小锁图标切换为加密连接,即可很大程度上避免因防火墙或其他原因导致的连接失败。 本程序自V2.0版起采用全新的底层程序架构,使用了异步多线程编程技术,使得检测、下载、修复单独进行,互不干扰,快速如飞。新程序更改了自我校验方式,因此使用新版本的程序时不会再出现自我校验失败的错误;但并非取消自我校验,因此程序安全性与之前版本相同,并未降低。 程序有更新系统c++功能。由于绝大多数软件运行时需要c++的支持,并且c++的异常也会导致0xc000007b错误,因此程序在检测修复的同时,也会根据需要更新系统中的c++组件。自V3.2版本开始使用了全新的c++扩展包,可以大幅提高工业软件修复成功的概率。修复c++的功能仅限于增强版,标准版及在线修复版在系统c++异常时(非丢失时)会提示用户使用增强版进行修复。除常规修复外,新版程序还支持C++强力修复功能。当常规修复无效时,可以到本程序的选项界面内开启强力修复功能,可大幅提高修复成功率。请注意,请仅在常规修复无效时再使用此功能。 程序有两种窗口样式。正常模式即默认样式,适合绝大多数用户使用。另有一种简约模式,此时窗口将只显示最基本的内容,修复会自动进行,修复完成10秒钟后会自动退出。该窗口样式可以使修复工作变得更加简单快速,同时方便其他软件、游戏将本程序内嵌,即可进行无需人工参与的快速修复。开启简约模式的方法是:打开程序所在目录下的“Settings.ini”文件(如果没有可以自己创建),将其中的“FormStyle”一项的值改为“Simple”并保存即可。 新版程序支持命令行运行模式。在命令行中调用本程序,可以在路径后直接添加命令进行相应的设置。常见的命令有7类,分别是设置语言的命令、设置窗口模式的命令,设置安全级别的命令、开启强力修复的命令、设置c++修复模式的命令、控制Direct加速的命令、显示版权信息的命令。具体命令名称可以通过“/help”或“/?”进行查询。 程序有高级筛选功能,开启该功能后用户可以自主选择要修复的文件,避免了其他不必要的修复工作。同时,也支持通过文件进行辅助筛选,只要在程序目录下建立“Filter.dat”文件,其中的每一行写一个需要修复文件的序号即可。该功能仅针对高级用户使用,并且必须在正常窗口模式下才有效(简约模式时无效)。 本程序有自动记录日志功能,可以记录每一次检测修复结果,方便在出现问题时,及时分析和查找原因,以便找到解决办法。 程序的“选项”对话框中包含了7项高级功能。点击"常规”选项卡可以调整程序的基本运行情况,包括日志记录、安全级别控制、调试模式开启等。只有开启调试模式后才能在C
©️2020 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页