`
阿尔萨斯
  • 浏览: 4168539 次
社区版块
存档分类
最新评论

WPF,一次洗牌……

 
阅读更多

WPF,一次洗牌……

昨天,在CSDN上看一篇孟岩的文章,谈及WPF带来的震撼,其实,WPF对今天的开发者来讲,已经不是很新的概念了,在MSN里,也与部分朋友交流对WPF的看法。最早体验WPF,也许是在2004年,当时还被称为“XAML”(出于技术需要,也曾在2004年购买另外一家公司的关于XAML的实现产品)。从那以后,没有进一步的了解这个东西,直到昨天,在与一位好友沟通的时候,才开始下载Microsoft最新的SDK,北京毕竟不同于其他地方,下载的速度令好友羡慕,1.15G的东西,没有使用任何加速工具,在2小时内下载完毕。WPFi是令人炫目的东西,但对缺乏艺术创意能力的我,感觉真是怪怪的,只好从技术层面了解这个庞大的SDK

记得1993年最初接触Visual Basic的时候,我在想,这个东西可真奇妙!比起SDK模式的Windows编程,Visual Basic 2.0真让我感到吃惊!没有注册窗口类,看不到消息队列,没有消息循环,这些令人烦恼的东西,统统不见了!当时我在想,既然这样的东西都出来了,C风格的SDK该没落了吧?事实证明我错了,有一次,我到Microsoft北京研究院,谈及软件开发,Microsoft的人说,他们很少用VB,也很少用MFC之类的东西,其实,只要稍稍看一下Microsoft自己的东西,Microsoft在如何开发呢?WPF虽好,但却是Microsoft给别人准备的,OfficeIEVisual Studio等都是.NET框架的“Host”,但确实是真正的Win32架构,Microsoft打算让别人允许它“托管”一切,真是绝妙的构想!

我与朋友偶尔也谈论WPF,从多年与Microsoft技术打交道积累的感觉上看,WPF的确是一个精明的策略,从用户体验上入手,使得炫目的门槛降低,技术开发者,只要停留在Microsoft预期的阶层就可以了,不用再深入研究其他的东西,这样,Microsoft就可以高枕无忧了……。然而,Microsoft面对自己平台上庞大的“积累”,也不得不给别人留有充分发展的余地,其实,从Host技术上看,WPF表现为一种Active Document,在这方面,与Microsoft处理HTML的方式如出一辙,虽然WPF表面看是建立在托管环境之上,但无法回避最底层的Win32机制,因此,虽然WPF带来了冲击,但充其量是一次洗牌,不是终结,更不是毁灭。

让别人托管,毕竟不是一件很“舒服”的事情,因此,WPF面世了,最大的受益者可能是精通Win32的开发者,从这一点上看,WPF也提高了门槛。如何开发一个灵活、强大的Win32系统,使得其可以“HostWPF,是一个有意思想法,那么,现在的COM框架,在真正的Win32架构之上,能够“HostWPF吗?答案是肯定的,你可以自由的做你想做的一切,Just like MicrosoftMicrosoftIEOfficeVisual Studio等都可以Host WPF,同样,你也可以Host WPF,使得你的系统成为一个WPF的“Shell”,这样,WPF就成了你的系统的“内容”提供者,例如,你可以将WPF与其它组件融合在一起开发IE插件:

(我的WPF制作水平很差,因此借用了Microsoft SDK的例子)

你也可以在你的MFC框架里使用WPF

<shapetype id="_x0000_t106" adj="1350,25920" coordsize="21600,21600" o:spt="106" path=" ar0,7165,4345,13110,1950,7185,1080,12690 at475,11732,4835,17650,1080,12690,2910,17640 at2387,9757,10107,20300,2910,17640,8235,19545 at7660,12382,14412,21597,8235,19545,14280,18330 at12910,11080,18695,18947,14280,18330,18690,15045 at14822,5862,21597,15082,18690,15045,20895,7665 at15772,2592,21105,9865,20895,7665,19140,2715 at14330,0,19187,6595,19140,2715,14910,1170 at10992,0,15357,5945,14910,1170,11250,1665 at6692,650,12025,7917,11250,1665,7005,2580 at1912,1972,8665,11162,7005,2580,1950,7185 x e ar0,7165,4345,13110,1080,12690,2340,13080 nf e ar475,11732,4835,17650,2910,17640,3465,17445 nf e ar7660,12382,14412,21597,7905,18675,8235,19545 nf e ar7660,12382,14412,21597,14280,18330,14400,17370 nf e ar12910,11080,18695,18947,18690,15045,17070,11475 nf e ar15772,2592,21105,9865,20175,9015,20895,7665 nf e ar14330,0,19187,6595,19200,3345,19140,2715 nf e ar14330,0,19187,6595,14910,1170,14550,1980 nf e ar10992,0,15357,5945,11250,1665,11040,2340 nf e ar1912,1972,8665,11162,7650,3270,7005,2580 nf e ar1912,1972,8665,11162,1950,7185,2070,7890 nf e m@23@37 qx@35@24@23@36@34@24@23@37 x e m@16@33 qx@31@17@16@32@30@17@16@33 x e m@38@29 qx@27@39@38@28@26@39@38@29 x e"><formulas><f eqn="sum #0 0 10800 "></f><f eqn="sum #1 0 10800 "></f><f eqn="cosatan2 10800 @0 @1 "></f><f eqn="sinatan2 10800 @0 @1 "></f><f eqn="sum @2 10800 0 "></f><f eqn="sum @3 10800 0 "></f><f eqn="sum @4 0 #0 "></f><f eqn="sum @5 0 #1 "></f><f eqn="mod @6 @7 0 "></f><f eqn="prod 600 11 1 "></f><f eqn="sum @8 0 @9 "></f><f eqn="prod @10 1 3 "></f><f eqn="prod 600 3 1 "></f><f eqn="sum @11 @12 0 "></f><f eqn="prod @13 @6 @8 "></f><f eqn="prod @13 @7 @8 "></f><f eqn="sum @14 #0 0 "></f><f eqn="sum @15 #1 0 "></f><f eqn="prod 600 8 1 "></f><f eqn="prod @11 2 1 "></f><f eqn="sum @18 @19 0 "></f><f eqn="prod @20 @6 @8 "></f><f eqn="prod @20 @7 @8 "></f><f eqn="sum @21 #0 0 "></f><f eqn="sum @22 #1 0 "></f><f eqn="prod 600 2 1 "></f><f eqn="sum #0 600 0 "></f><f eqn="sum #0 0 600 "></f><f eqn="sum #1 600 0 "></f><f eqn="sum #1 0 600 "></f><f eqn="sum @16 @25 0 "></f><f eqn="sum @16 0 @25 "></f><f eqn="sum @17 @25 0 "></f><f eqn="sum @17 0 @25 "></f><f eqn="sum @23 @12 0 "></f><f eqn="sum @23 0 @12 "></f><f eqn="sum @24 @12 0 "></f><f eqn="sum @24 0 @12 "></f><f eqn="sum #0 0 0 "></f><f eqn="sum #1 0 0 "></f></formulas><path o:connectlocs="67,10800;10800,21577;21582,10800;10800,1235;@38,@39" textboxrect="2977,3262,17087,17337" o:extrusionok="f" o:connecttype="custom"></path><handles><h position="#0,#1"></h></handles><complex v:ext="view"></complex></shapetype><shape id="图片_x0020_1" style="VISIBILITY: visible; WIDTH: 414.75pt; HEIGHT: 282.75pt; mso-wrap-style: square" coordsize="21600,21600" type="#_x0000_t75" o:spid="_x0000_i1025" alt="image001.png"><imagedata o:title="image001" src="WPF%EF%BC%8C%E4%B8%80%E6%AC%A1%E6%B4%97%E7%89%8C.files/image004.png"></imagedata></shape>

.NET框架,包括WPF,会使得相当一部分开发者自然淘汰,这是没办法的事情,但正如C++无法淘汰汇编语言一样,这些东西,也会催生更强大的Win32开发,因为,Microsoft本身就在这样做,但是,win32开发者应该挖掘更深入的东西,使得.NET框架上强大的环境为你所用。

回想往事的时候,我经常怀念1997年往返北京、大连的日子,那个时候经常在北京站候车,当时我住的地方在交通部附近,靠近北京国际饭店,没事的时候,也经常在那一带遛弯,当时的印象是,那一带豪华的建筑很多,但顺着居民胡同往里面走,你会看到一些老北京的东西,这是一个典型的北京现象,即古老的东西会与现在的东西并存,往往是老的东西比较金贵,Win32比之.NET 3.0,也算是“老”,但,毕竟是.NET 3.0的根,如果你能够掌握“根”,还担心其树上开花、发芽吗?




<iframe align="center" marginwidth="0" marginheight="0" src="http://www.zealware.com/csdnblog.html" frameborder="0" width="728" scrolling="no" height="90"></iframe>
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics