设为首页 收藏本站
查看: 897|回复: 0

Win8探索之组件平台之路

[复制链接]

尚未签到

发表于 2015-5-21 11:52:14 | 显示全部楼层 |阅读模式
什么是组件平台,计算机产业一直在探索类似于工业化大生产流水线一样的生产方式。
及软件可以以更小的组件形式组装在一起。本文试图探索一下一直到Win8时的路线。


  C语言是一门伟大的语言,在产生了UNIX以后,C&UNIX是天生的一对。当时或者直到今天

的一种组件萌芽的形式就是,以C的库来封装组件。一个一个的函数是随后的螺丝钉。  


C是伟大的,但C也是有缺陷的。它唯一一个解决不了的问题,就是复杂性。今天的软件
日益复杂,C老了,需要新鲜血液。面向对象是公认的复杂性的解决办法。C++是号称
C的面向对象解决方案,但是C++解决了组件平台了吗?不用回答,现实就可以回答。  


业界曾经出现过以COM封装的组件平台,也出现过以Java,.Net虚拟机形式封装的组件库。
对于操作系统,也出现过很多,比如微软的COM,苹果的以Objective-C为基础组件平台(Cocoa),
微软有一段时间以为.Net可以成为组件平台,但当操作系统的性能成为一个问题,苹果
给它带来更多压力的时候,它又重启组件平台探索,这就是Win8里的WinRT以及C++/CX.

  C++/CX全称是C++ Componenet Extension,也就是C++ + Component Extension。这个世界,

C是不可丢的,需要往上面不停的加东西。呵呵!  
  随着深入的学习,发现Metro的组件类似于COM组件,也还是要在注册表中注册,我不玩了。
  附张图
  
  
DSC0000.png
  最后的补充
  C++/CX的编译,链接不同于C++的编译与链接。编译不采用头文件,而是类似于COM类型库一样,寻找winmd元信息。链接也不同于C++,不采用符号链接。
  C++/CX不能生成静态库,当然,C++的部分可以。生成的组件库依赖注册表,和以前的COM一样。但是,不同于COM,所有接口继承于IInspectable
  typedef struct IInspectableVtbl

    {
        BEGIN_INTERFACE
        
        HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
            __RPC__in IInspectable * This,
            /* [in] */ __RPC__in REFIID riid,
            /* [annotation][iid_is][out] */
            _COM_Outptr_  void **ppvObject);
        
        ULONG ( STDMETHODCALLTYPE *AddRef )(
            __RPC__in IInspectable * This);
        
        ULONG ( STDMETHODCALLTYPE *Release )(
            __RPC__in IInspectable * This);
        
        HRESULT ( STDMETHODCALLTYPE *GetIids )(
            __RPC__in IInspectable * This,
            /* [out] */ __RPC__out ULONG *iidCount,
            /* [size_is][size_is][out] */ __RPC__deref_out_ecount_full_opt(*iidCount) IID **iids);
        
        HRESULT ( STDMETHODCALLTYPE *GetRuntimeClassName )(
            __RPC__in IInspectable * This,
            /* [out] */ __RPC__deref_out_opt HSTRING *className);
        
        HRESULT ( STDMETHODCALLTYPE *GetTrustLevel )(
            __RPC__in IInspectable * This,
            /* [out] */ __RPC__out TrustLevel *trustLevel);
        
        END_INTERFACE
    } IInspectableVtbl;  看似这里权限管理更严格,微软似乎不想把C++/CX引出Metro外。乱,就一个字。还不如用Java或是.Net了。.Net本身是微软的,而Google也因为Android用Java和Oracle打官司。苹果不必说,其它平台似乎一律都是JavaScript.组件平台的路还在继续。

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-69211-1-1.html 上篇帖子: 我的首个win8应用——课程表 下篇帖子: win8 app给GridView选择项添加动画效果
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表