陋室铭
永远也不要停下学习的脚步(大道至简至易)


WPF/E的官方名字正式命名为SilverLight 


2005年9月,微软在“专业开发人员大会”(PDC)和首届Business Summit会上宣布推出的一系列产品,让客户目瞪口呆。

PDC上展示了多项技术,但是有3件事非常关键:WinFX、WWF和Windows SharePoint 服务。WinFX SDK包括开发人员利用这套下一代API构建应用所需的一切,包括.Net Framework 2.0、WPF(Windows Presentation Foundation,以前叫Avalon)和WCF(Windows Communication Foundation,以前的代号是Indigo)。

WPF为开发人员提供比以往更丰富的GUI,而WCF提供了新的编辑通信模型,这种模型面向Web服务,并且对XML有着很大的依赖性,就像单一API确保应用到应用的安全通信一样,从而带来更高的效率。

 

  公司介绍了这款Windows Presentation Foundation Everywhere,简称WPF/E,是一款通过微软XAML页面布局语言与JavaScript相连接构建应用程序的软件。

  直到本周之前,人们还广泛认为微软的Windows Presentation Foundation(以前代码名称为Avalon)只能用于开发Windows平台上的丰富图形程序。但由于许多系统上都可以运行JavaScript,理论上开发人员们可以用WPF/E在多个操作系统上进行开发。

   Presentation Foundation Everywhere是Windows上的完整用户界面开发工具Windows Presentation Foundation的一个子集,因此不会提供与Windows相同的图形功能丰富程度。最终用户需要下载一个运行时文件来运行XAML代码,这个文件不会超过1MB。

 

   因此,微软周二公布了这一系列命名为Expression的设计相关工具,将于2006年底发布。这些产品目的在于简化构建那些使用动画和多媒体的Windows或网络应用程序的过程。

  Expression产品系列中包括微软的Sparkle Interactive Designer tool,它使用XAML创建动画等丰富图形前端程序。这一工具被业界视为目前网络图形中广泛使用的Adobe公司Flash格式的竞争对手。

  

WPF/E是WPF的轻便Runtime,“这是一个非常及早的工作”,这种技术将会提供一个“在一些设备和PC上的交互式体验”。

在接受eWEEK网站的采访时,Allchin说他努力争取开发轻便Runtime是因为他想看到Avalon用于蜂窝电话和其它设备上的好处。它的编程模型使用了微软的XAML(Extensible Application Markup Language)和JavaScript。

他还说,WPF的子集,WPF/E将能够在各种各样的平台上的启用内容丰富的外观。

关于WPF,他强调:“在这个空间中我们远远领先于任何人。”微软公司主席和首席软件设计师Bill Gates在他的开幕式主题演讲中说到,微软的目标之一就是“使人们更容易地利用可视化信息”。

 

Bill Gates看Vista

  InfoWorld高级分析师Jon Udell日前对Bill Gates进行了采访。Gates谈了Windows Presentation Foundation(以前的代号为Avalon)的新轻型版本,解释了他对企业将升到Vitsta为什么充满信心的原因。

  JU:当一些听众看到这种表示框架的轻型版本时,他们本能地做出了“Flash的竞争者”的评介。您认为这种看法公平吗?您认为它是否可能成为让Avalon接口不仅进入设备而且还进入非Windows桌面的媒介?将以这种方式扩展Avalon的应用范围吗?

  BG:从技术观点看……它与Flash做的很多事重叠。

  JU:目前,它是一种可移植的运行时程序,那么它是某种可以令人信服地将XAML应用扩展到Mac桌面或Linux桌面的程序吗?或者是一种设想?

  BG:Mac是我们明确讲过的目标之一。目前它并不是100%的XAML,我们必须说明这点。但我们选择的那一部分XAML将无处不在。绝对无处不在,并且它必须如此。至少对于阅读以及甚至某种水平的动画,你必须具有无处不在性。

 

 

对的Orcas无论WPF或WF皆是大量运用XAML,是为了让Web Designer也能够参与,但您也可以只用C#或VB来开发,不一定要用XAML,但XAML很重要,一如HTML般重要

 

 

老师,您好!在WPF中,WinForm究竟是否能完全能取代WebForm?如果说原有的Winform属于胖客户,那最终可以取代WebForm的Winform到底属于胖客户还是瘦客户?[2007-1-26 15:22:00]

嘉宾[奚江华]: WPF之中,本身就有分为Windows及Browser两种应用程序,另外再加上真正在Web上运行的WPF/E,故它其实是同时具备三种型态能力的. 然而虽然微软对WPF期望很大,但毕竟不能不面对现实,ASP.NET的人口更大,传统HTML仍主宰着现在及未来的网络世界,您可以反问自己一个问题,Flash出来后,为什么HTML没有消失?故同理可证,WPF出来后,ASP.NET不会消失,且下一版本的ASP.NET已在设计中,会随着Visual Studio Orcas一并推出,最终会形成WPF与ASP.NET各占一片天的两大势力

 

老师,您好!微软新推出的Gadgets,会对传统web系统发起冲击吗?[2007-1-26 15:32:00]

嘉宾[奚江华]: 不会,传统Web仍会持续壮大,开发更快速容易,未来在ASP.NET上不但会持续对HTML及CSS的支持,并且会大量融入AJAX与WPF/E的特性能力,让Web更接近Rich Client

 

问:大连市高新园区礼贤街30号创业园C座花旗软件的高国一来信问:WFF是成熟的技术么?如果和asp.net 2.0 结合使用,那么应该采用什么样的架构最合理呢?[2007-1-26 15:23:00]

2008年最新的趋势是ASP.NET AJAX + WPF/E,两者可以互动,互传传递Data,更进一步满足两种族群的整合

 

老师,您好!Atlas是不是太旧了?现在学习还有价值吗?谢谢[2007-1-26 16:16:00]

嘉宾[奚江华]: Atlas是Code Name,而ASP.NET AJAX则是正式的Product Name,但两者本质是一样的,唯一不同的是功能持续改良增强,变化中,而ASP.NET AJAX学习并不会太旧,而是要考虑投资报酬率,如果您花很多时间学ASP.NET AJAX,而Orcas届时又将AJAX弄得很容易,您可能有50%力气是浪费的,但不学的话,如果现在有AJAX需求,仍是无可避免的,因为Orcas至少要到2008年才发,所以是一个抉择,您可以以Orcas为观察指标

 

嘉宾[奚江华]: AJAX微软的答案就是ASP.NET AJAX,会一直持续支持ASP.NET AJAX,不会是过渡的,并会和WPF/E结合,展现最优的Web技术

 

WPF不会取代ASP.NET的,因为微软目前的工具,是走双轨的,需要HTML的人用ASP.NET,而需要Vector的人,则选WPF,另外ASP.NET可以结合WPF/E,且微软总部是有两组RD人马存在的,并没有要放弃谁,但ASP.NET仍会是传统主流,而WPF则是新势力,不可小看..因为力量很大,我自己是两个都学

 

南京焦点科技的刘民来信问:NET 3.0 和 WPF我们应该学习哪个更好?[2007-1-26 16:35:00]

嘉宾[奚江华]: WPF就是.NET 3.0的一员,你要打好.NET Framework 2.0的基础,再学WPF,就是等于学.NET 3.0,因为.NET 3.0是用.NET 2.0的Class Library及CLR

 

.NET对Linux的支持,坦白讲微软不会做的,目前只有MONO Projetc有在进行,甚至像WPF,WCF,WF等等,未来都会实作出来,可以在Linux上运行;而跨平台之事,微软只有考虑让WPF/E去跨平台,跨Browser,但仍然只支持Windows & Mac OS 10.0,而将Linux排除在外,目前看来是策略性故意不支持,而未来是否也有Linux平台的WPF/E的Runtime,则可能要看市场给微软的压力了

 

 

仍然兼容, 我不知道你说的Win32只包括所有window API还是只包括界面部分, 界面部分Wista下有WPF, 在XP sp2 + .Net Framework 3.0环境下也可以跑, MFC应该会很快被取代的, 不过MFC仍然可以用, 只是WPF做出的界面要比MFC强大漂亮的多, 慢慢大部分软件会使用WPF开发界面的. 其它Window API还会断续使用. 不过有一些有变化, 工程大的话, 一般情况总会碰到移植问题.

强调一点:WPF仍然可以使用VC开发. 不过用C#或VB.NET或许更好, 尤其是用C#.

 

所以做界面的话, 考虑使用VC++ + WPF或C# + WPF比较好. 如果做底层的话, 不需要改变现在的知识结构.

 

 

确实感觉WPF是未来前台界面编程的首选,但是现在研究的人太少,资料也不全。我去买vs2005市面上居然还没有,都是vs2003,打击积极性啊!

 

framework 3.0出现

标志着.net 的真正成熟和完善

1.1   ,2.0, 也只过是个半成品

 

 

展望未来的表现层技术avalon,是XAML描述页面布局,C#编写事件响应代码,与现在的webforms的HTML描述页面布局,asp.net编写事件响应代码,两种方式都是非常相似的。要注意的是,在这种技术趋势中,我们没有看到Javascript的影子。

 

HTML在被创造出来的时候,只是用来描述文本信息,以及文本之间的关系的,Tim Benas Lee也不会预料到Internet时代的热潮。不论人们后来在Browser上面附加了多少功能,Javascript也好,Applet也罢,ActiveX(Flash),都没有从根本上面改变HTML交互能力弱的问题。其实大部分人都意识到了,不彻底改变当前的HTML,就没有办法改变Browser的弱点。

 

然而彻底改变HTML的方式的前提就是Broswser功能的扩充,考虑到Windows操作系统和IE浏览器占据了绝大部分市场份额,这个功能最有希望完成的也只有MS公司了。

 

在MS下一代表示层技术Avalon中,XAML将取代HTML,Browser的功能被扩充,页面不再是扁平的,而是立体俄,事件处理代码不再是Javascript,而是C#。然而考虑到Longhorn在2006年上市,到普及推广,我觉得可能要到2010年前后,XAML才有可能全面取代HTML。那么在此之前,仍然会是HTML/Javascript的方式。

 

在过去,Browser端的主流是HTML/Javascript,在将来,Browser端的主流是XAML/C#,那么当前一些富Javascript技术的Browser方案是否会成为过渡时期的主流呢?我的看法是没有成熟的开源框架的情况下,是不会的。

 

 

现在我想亮明一下我的态度:我喜欢AJAX的效果,但不喜欢AJAX的实现方式,我非常赞同CSDN那些人的看法,基于XML布局的RIA将异军突起,“在WPF、Flash(Apollo)等RIA技术的夹攻之下,越来越多的Web应用将同时部署传统Web页面和新的RIA UI。之后此消彼长,几年之内RIA将成为主流。”(摘自孟岩的blog)。

 

RIA技术会是怎么一番景象?
RIA 的提出其实已经是几年前的事情了。在C/S-->B/S之风兴起的时候,就已经有人提出,B/S过于单调的用户体验以及与服务器端交互性能的问题,其实无法满足用户的需求。一种综合C/S丰富用户体验以及免去安装部署维护等问题的富客户端应用,必然是网络时代应用的一个发展趋势。宽带网络的普及加速了用户对RIA的需求。然而真正阻碍RIA发展的其实是技术本身。一直以来也没有一个具有很好跨平台性能的富客户端技术来满足程序设计的需求。而无论是ASP.NET也好还是其它PHP web开发技术一个致命的问题是,无法真正把客户端与服务器交互的问题解决好,最基本的大量本应该由客户端去解决的展示层问题,也不得不通过服务器端来处理。谁能真正解决这个问题。AJAX这个时候便自然的充当了消防员的角色,解决一时之需。但它能承担起推动RIA发展的重任吗?已经争论的口水满天飞。一直在页面设计领域占有霸主地方的Adobe,已经暗暗的借助其flash应用的优势,发展自己的AS脚本语言。阿波罗计划,开放AS VM给firefox,flex等等一系列举措已经显示了自己的决心。然而摆在它面前的问题是,如何说服广大的设计人员再去学习一套AS脚本语言。微软自然不会放弃这个市场,WPF,XAML,Atlas框架的大变样,Expression产品的独立推出,也展现了自己的雄心壮志。对于微软来讲它的优势是客户端操作系统平台和浏览器市场的统治地位,但究竟Expression能有多大的吸引力扭转广大设计人员的习惯去学习全新的设计工具和语言,也将面临挑战。

 

 

从总体来看,.NET 3.0框架并没有改进现有技术,而是引入了四种适应未来发展的基本新技术:

  ·Windows描述基础(WPF)

  ·Windows通信基础(WCF)

  ·Windows工作流基础(WWF)

  ·Windows CardSpace(WCS)

  这其中的每一种技术都将成为开发者基于新一代操作系统及.NET平台用来实施新方案的基础。

  其中,WPF无可争辩地成为四个新式基础类集中最为重要的。这主要是由于两点:一致性WPF方案;新式的名为XAML的XML标准编程语言。

  首先,WPF为基于ASP.NET框架进行Web开发提供了一种一致的方案来构建编程模型,并且支持使用更为丰富的控件和设计技术来开发Windows程序。一个开发出来的单个WPF程序最终能够被发行到桌面,Web以及智能设备等多种环境下。

  其次,WPF中创新性引入了一种名为XAML的XML标准编程语言。开发人员利用它能够控制对象的布局。从表面上看,这种语言似乎与Flash 极为相似,其实二者之间存在相当的不同。Flash是一个成熟的、可控制的、独立于操作系统的封闭式框架。而相比之下,WPF允许你与操作系统及其它. NET框架技术进行集成。总之,二者服务于不同的市场需求但又存在一些“边缘交叉”。

  在这个“网络即是一切”的社会里,Windows通信基础(WCF)显得极为重要。这个编程模型把web服务、.NET远程技术、分布式事务和消息队列统一到单个面向服务的编程模型中,从而实现真正意义上的分布式计算。

  Windows工作流基础(WWF)是一种定义、执行和管理工作流的微软技术。工作流由一系列的活动组成;开发者能够编写他们自己的域特定的活 动,然后把它们应用于工作流中。.NET框架3.0/Windows工作流基础还提供了一组涉及若干控制流构建方面的通用目的的活动。值得注意的是,这个 框架了还包括了许多Visual Studio 2005扩展(可视化工作流设计器、支持用户调试工作流的可视化调试器、工作流编译系统)。总之,借助于WWF,新一代应用程序开发过程的流程控制方面将 得到极大的改善。

  最后,Windows CardSpace(WCS)为程序开发中一直令人头疼的认证问题上提供了一种新的解决方案。不同于以前的方案,现在,微软使用CardSpace实现了 一种几乎是全新的安全设计尝试,其基本原理依据“任何用户都能够创建并且共享他的或她的唯一的身份”。

  总之,WCS有望改变你到一个应用程序(基于Web、手机或桌面程序)的认证方式,从而极有助于保护用户的私有数据。

 

 

.NET3.0:Windows表现层基础类库WPF揭密

WPF会带来什么? 
  Windows表现层基础类库(WPF) ,曾以Avalon为代号,是.Net 框架3.0(曾使用代号WinFX)的图形子系统,与XAML密切相关。在微软下一代WINDOWS操作系统 VISTA 中会预装WPF。WPF也可安装在Windows XP SP2 和 Windows Server 2003操作系统。WPF为构建应用系统提供了一致的编程模型,对用户界面和商业逻辑给予清晰地划分。基于WPF的应用程序可以部署在本地系统或者浏览器平台。WPF为windows应用程序的视觉效果提供了更丰富的控制、设计和开发等方面支持。WPF整合了一系列的应用服务:用户界面、二维和三维绘图、固定和适应性文档、矢量图形、光栅图形、动画、数据绑定、音频和视频。


  WPF/E是WPF的子集,代表“Windows表现层基础类库无处不在的意思”。WPF/E基于XAML和Javascript技术,构成了WPF移动版本的核心。WPF/E不提供3D特性,但是包括了XPS(XML文档规范)、矢量绘图和硬件加速等功能。

WPF的主要特性 

  以下是WPF的主要特性: 
  图形服务 
  所有的图形(包括桌面的窗口等对象)都将通过Direct3D渲染,旨在提供统一的图形显示通道,以实现高级的图形表现效果。 
    
  凭借Direct3D渲染图形的好处是,操作系统可以将图形处理任务委托给计算机显示卡上的图形处理芯片,以减轻CPU的负担。
WPF支持任意比例无损缩放的矢量化图形,支持在2D应用程序中进行3D模型的渲染和交互操作。 
  WPF除了构建传统的独立运行桌面应用程序,也支持基于XAML技术的浏览器应用(XBAP)。两种类型应用的编程模型很相似。桌面应用程序是可信度最高,采用ClickOnce或MSI等软件安装在本地计算机的应用程序,对计算机资源拥有完全的访问权限。为了保护计算机免受恶意软件的攻击,XBAP应用只能在一块由系统专门划分的部分信任沙箱内运行,不能访问计算机的全部资源,也不能使用WPF的全部功能。 用户从网页内XBAP类型应用没有安全或安装方面的提示),反之亦然。XBAP应用虽然看起来像是在浏览器内运行,实质上是创建了另一个进程。 

  互操作性 
  WPF提供了同Win32的互操作性。通过嵌入模式,可以在Win32 代码中使用WPF,也可在WPF中使用Win32 代码。同Windows 窗体的互操作可通过ElementHost类和WindowsFormsHost类来实现。
媒体服务 
  WPF为二维图形提供了基本几何元素,以及一整套画刷、画笔、几何体和变形等工具。WPF的三维特性局限于Direct3D现有的功能。然而,WPF提供了与用户界面、文档和媒体介质等的紧密集成。这使得三维界面、三维文档、三维媒体成为可能。    WPF支持大多数通用图像格式,以及WMV, MPEG and AVI等视频格式。WPF支持时基动画而不是桢动画,从而使动画的播放速度不受系统性能的影响。WPF使用ClearType技术实现文本渲染。ClearType提供了次像素级定位、自然步幅、纵向反锯齿等特性。WPF同时支持OpenType字体特性。 

  数据绑定 
  WPF 内置了一系列数据服务,使得开发人员可以在应用程序之间自如地绑定和操纵数据。WPF提供三种数据绑定方式:
  一次性:客户端忽略服务器端的数据更新的情况
  单向性:客户端对服务器端的数据有只读权限的情况
  双向性:客户端对服务器端的数据拥有读写权限的情况 
  数据绑定不依赖于数据表现。WPF提供数据模板用来控制数据的表现。 

  用户界面 
  WPF内置一系列控件:按钮、菜单、列表框等。 
  WPF提出了一个功能强大的概念:将控件的逻辑层和表现层分离。通过重载控件的模板就可彻底改变其外观。控件可包容任何其它控件,从而通过组合实现无限的控制功能。 

  图像 

  开发人员使用WPF的Windows图像组件,可以针对特殊的图像文件格式或者特殊的位图效果以及图像元文件进行图像编码。 

  文字 

  WPF包括了一些GDI中没有提供的文字渲染特性。首次面向开发人员提供了OpenType 的Windows编程接口,支持OpenType、TrueType和TrueType CFF字体。内置了文字阴影和模糊效果,而像反射等其它效果则很容易实现。 

  WPF对于OpenType的支持包括:
  连字符:老式的数字(例如:数字的部分比划位于文本基线以下)
  变体字
  分数
  上标和下标
  小体大写字母 
  WPF提供的其他排版特性还包括行级别对齐、注音字母等。 
  WPF的文本渲染采用了ClearType技术。ClearType为文本渲染提供了硬件加速功能,可以将预渲染的文本在显示内存中进行缓存,具体的支持范围则取决于显卡的性能。支持DirectX 10.0的显卡能够将文本字形预先缓存在显示内存内,然后全部在硬件上进行字形组合(将字形按照正确的顺序组合起来,并且填充适宜的空格)、透明混合(反锯齿应用)、RGB混合(ClearType的次像素级颜色运算)等操作。这意味着只需将每种字体的原始文本字形一次性地保存在显存中(微软估计每种字体需占2兆显存),其它像在图像和视频上叠加反锯齿文字等操作也不占用CPU的计算资源。支持DirectX 9.0的显卡仅能将透明混合处理过的文本字形缓存在显存区域,从而需要CPU进行字形组合和透明混合等计算,然后将计算结果输送到显卡。缓存这些局部渲染处理过的字形则需更多的显示内存(微软估计每种字体约需5兆显存)。不支持DirectX 9.0的显卡则不能对文本渲染操作进行硬件加速。 

  WPF支持动画文字,涉及到的技术包括字形动画,以及实时改变文本的位置、尺寸、颜色和透明度等。

XAML与开发工具 

  关于XAML 
  由于标记语言在WEB开发中的成功应用,WPF引进了一种基于XML的全新语言XAML—— “扩展应用标记语言”。XAML旨在提供更快速开发应用程序用户界面的方式,利用XAML设计者和开发者之间可以更好地协作。 
  使用XAML开发用户界面可实现模型和视图的分离,这被认为是优秀的软件架构原则。XAML中的每一项元素,映射为底层API的一个类,元素的属性设置为实例类的属性。WPF中所有的元素都可以使用.NET 语言(C#, VB.net等)编码。XAML代码最终编译成托管程序集。这意味着使用XAML开发不会造成任何性能损失。
PowerPoint和Word等多数应用程序都将支持以XAML格式输出。 

  XAML有几个子集:
  XAML-P —— XAML描述,汇集了WPF 1.0所有元素
  XPS —— XML文档规范, 是XAML-P的子集,代表固定格式文档,用于Vista打印子系统的联机文档格式。 

  工具 
  有几个beta版的工具可用于基于WPF应用的开发。
  微软开发的Cider面向开发人员,作为Visual Studio 2005设计器的一个插件提供。
  微软的Expression Interactive Designer面向设计人员,提供了为WPF应用创建二维和三维图形、文本、表单等内容的画布。可将结果以XAML格式输出到其它工具中。
  微软的Expression Graphic Designer 用于创建位图和二维图形。
  Electric Rain ZAM 3D 提供三维模型交互设计工具,以及XAML输出。
  Mobiform Aurora 可用于创建WPF用户界面。 

  WPF/E 
  WPF/E为Windows Vista之外的平台提供视频硬件加速、矢量图形、动画等WPF子集特性,是对WPF特性的跨平台扩展。值得一提的是,WPF/E将以插件的方式对Windows XP 、Windows 2000、Mozilla Firefox、Apple Safari、Linux以及移动设备等提供支持。这些扩展组件使得浏览器以及其它应用系统充分利用WPF/E强大的图形处理能力。IE 将对WPF提供本地化支持,并对先前的版本提供WPF/E的支持。 
  WPF/E 与XAML协同运行,并将在脚本化方面与Javascript互相调用,在以后推出的公共语言运行时版本则可直接执行VB.Net 和C#代码。 

 

 

今天收到风,说WPF/E已经放出CTP(社区技术预览版)。所谓WPF/E,即Windows Presentation Foundation Everywhere,即Avalon的跨平台版本。大体上,WPF/E有点像Flash的模式,通过一个浏览器插件,来执行XAML脚本语言。放下不表。

配合WPF和WPF/E,微软也做了一系列开发工具,总和起来,叫做Expression。这个在孟岩的文章和我的文章中已经提到过。一听说WPF/E放出CTP,我条件反射地打开Expression站点,想看看有什么变动。看上去网站总有点什么不对,仔细看了一下,原来列出的Expression套件中的三个软件,变成了四个软件。

回顾一下原来的三个软件:

Expression Web Designer
Expression Graphic Designer
Expression Interactive Designer

功能上似乎可以分别对应到Adobe的Dreamweaver、Illustrator和Flash。不过,今天我看到的情况,除了3个变4个外,连原有三个软件的名字都变了:

Expression Web
Expression Design
Expression Blend
Expression Media

在CTP阶段,改变软件名称,甚至出现“分身”异状,实在并不多见。再琢磨一番,原来是这样——

Expression Web,就是原来的Expression Web Designer
Expression Design,就是原来的Expression Graphic Designer
Expression Blend,就是原来的Expression Interactive Designer

改名的原因,想必是为了更为清楚地体现软件功能。原来都叫Designer,有点让人不明白,到底是给designer用的呢,还是给developer用。现在很清楚了,Design就是给designer用,web就是给web页面设计人员用,而blend则是协同开发(blend=“混同”)。

那么,新增的那个Expression Media,是什么东西?是从原有三个软件中分出来呢?还是不知来处的石猴出世?点击download free trial链接后,跳到另外一个站点,这个站点的域名是ivew-multimedia.com,但版权声明却是微软的。

iView什么来头?有读者可能回忆起来了,原来就是那家几个月之前被微软收购的英国数字媒体处理软件公司。今年6月,MacWorld曾经报道了这起收购案。在公开信中,iView创始人Yan Calotychos表示,收购事件揭开了iview公司和客户的令人兴奋的一页。

iview的最重要产品是MediaPro,一个运行于Mac和Windows平台的数字素材管理(digital asset management)软件。包含到Expression中的MediaPro改名为Expression Media后,是否在功能上有所改进,目前还不得而知,但有一点是肯定的,即与套件中其他三个软件的协同开发特性会被加以足够的强调。

 

 

 

 

 

WPF进入我们的生活已经很多年。(写这句话让我想起来了“我不做大哥好多年”。 ) 个人认为在UI的实践中,用户需要的是易于操作的,更加绚丽的界面。这两个应该是最基本、也是最重要的宗旨。而对于开发人员就是要用最简单的方法开发出尽可能漂亮的界面,并且效率也不能太差。(要求是不是有些过分啦!)除了在一些Web开发和特殊的应用中,很少有开发组配备单独的美工,至少目前是这样吧!根据自己目前对WPF的了解程度,感觉WPF在其中某些方面确实有超强的震撼力。

客观上讲,Vista操作系统确实给我们带来了无可比拟的视觉效果。我自己深有体会,在近2个月的时间里每天都是在Vista下的开发,回家后看到XP系统,始终有些不爽的感觉。

WPF可以认为是MS利用原有.NET框架的一些特色,加上DirextX的产物。从下图的WPF组件中,我们可以看出最底层仍然是一些内核API。(以下两张图片都来自互联网。)

 

其中红色显示的组件是WPF的核心。Milcore是一个和DirectX交互的非托管组件,非托管代码能带给我们更高效的处理,能更好的和DirextX交互。WPF的所有显示都是由Dirext完成的。milcore中一个非常重要的功能就是Composition引擎,这个引擎对效率的要求很高,它的具体作用稍后介绍。所以milcore放弃了一些CLR的特征来换取效率。而另外两个红色的组件都是建立在CLR基础之上,利用了.NET的优势。  

至于其中的User32组件有什么作用,偶目前的知道的就是在WPF的某些应用场景中为了某些兼容需要使用User32,其中就有DWM(桌面窗口管理)。DWM的内容又可以写上一大堆,感兴趣的朋友可以看SDK文档。

我们除了关心WPF的基本结构外,更重要的 是WPF提供了什么功能,请看下图:

 

图中的每个黄色块都是一种媒体类型。这就表示WPF可以处理几乎所有的媒体类型:位图、3D、音频、视频和文本等等。通过WPF,它集成了现在的GDI/GDI+、D3D/OPENGL以及多媒体的DSHOW等等。所有的东西都是等同对象,不管的3D还是2D,或者文本。

结构图中的Animate块贯串了整个的结构,因为在WPF中我们可以对所有的可视内容进行动画操作。这是非常让人期待的功能。Animate下面我们再次看到了Composition引擎,前面提到过它是位于milcore组件中。开发过程中,我们的界面元素功能有多种,比如图片,视频等等,最后显示到窗口的内容可以认为只是一张图片(准确说是Surface)。这个引擎的作用就是合成这些图片和视频元素最后进行提交显示。

 

posted on 2007-04-17 12:48  宏宇  阅读(1392)  评论(0编辑  收藏  举报