WPF仍具有更丰富的三维渲染能力。
此外,即使他们宣布了对命令和绑定功能的增强,也不能保证它将拥有WPF当前或下一版本所具备的全部功能。
编辑:在尝试Silverlight 4 beta之后,看起来几乎所有新功能(网络摄像头、文件访问、全屏键盘、COM互操作等)仅在应用程序处于提升的信任级别时才能工作,并且只有在离线运行时才能启用提升的信任级别。其中一些可能会在RTW时发生改变,但目前,在浏览器窗口内执行这些操作似乎仍然只有使用WPF是唯一的选择。
在等待包含WPF完整模板和数据绑定功能的Silverlight版本之前,我主要使用XBAP进行浏览器部署。也许Silverlight 4会实现它。
Silverlight 4肯定无法做到以下几点:
unsafe
和StructLayoutAttribute
轻松地复制原始C++代码)我实际上还没有下载Silverlight 4 beta版,所以这个列表不完整。
下一个版本的Visual Studio将不会使用Silverlight编写 ;) 我迫不及待地想在WPF中编写音频实用程序,而Silverlight必须与令人难以置信的Windows音频子系统隔离开来。然而,我可以看到有一天WPF将被称为Silverlight(或者可能是反过来)。
Silverlight始终会优先考虑小负载而非功能。战略上,微软将尝试使用Silverlight超越Adobe的产品,而WPF将与其他重型平台竞争。如果您看看WPF 4,您会注意到它推出了更重的功能。我试着记住,WPF最初是作为Avalon启动的,旨在永久取代Win32。如果有一天Windows XX成为“本地”WPF,而Win32将被模拟,我也不会感到惊讶。
如果您需要进行大量的富文本(FlowDocument)编辑,则仍需要使用WPF。Silverlight 4增加了新的RichTextBox,但其功能仅限于非常基本的内容,并且没有提供WPF中FlowDocuments的全部功能集。FlowDocument实际上可以完成WinForms RichTextBox所能做的事情;但是如果您只需要基本功能,Silverlight中的RichTextBox可能已经满足您的需求。
如果你想通过ADO.NET进行直接数据库访问,那么在Silverlight 4中你将无法做到这一点。设备访问仍然会受到限制,尽管现在你将拥有一些打印支持和网络摄像头/麦克风。我还没有听说过64位支持的消息,所以如果你想提供一个64位版本的应用程序,你需要使用WPF。我认为即使Silverlight 4更好地利用了GPU,它仍然不会达到WPF利用它的水平。
.NET框架中还有大量其他的程序集,Silverlight没有包含,所以如果你需要其中任何一个,你需要使用WPF。
就像HTML5在某些情况下减少了Flash或Silverlight等插件的需求一样,Silverlight将减少对WPF的需求,但仍有很多情况需要使用WPF。
归根结底,Silverlight 有限制。因此,如果您要使用一种功能较弱的技术,您应该有一个令人信服的理由。我能想到的唯一一个,在某些情况下非常重要的理由是,Silverlight 更加平台无关。我无法想象任何人希望将浏览器及其所有问题引入解决方案中。必须有一个很好的理由。