原生扩展进一步模糊了 Silverlight 和 WPF 的边界

阅读数:838 2011 年 3 月 15 日

话题:.NET语言 & 开发

为了可以在浏览器外的 Silverlight 里使用,它通过 COM 自动化提供 Windows 7 的相关特性。主要功能包括消息截获、传感器 API、H.264 视频编码、任务栏扩展、语音 API 以及对便携设备的访问。

  • 消息截获:允许应用程序截获发向所属窗口的 Window 消息。
  • 传感器 API:提供对 Windows 7 传感器 API 的完全访问。
  • 本地编码:允许应用程序把网络摄像机的音频 / 视频输入捕获到本地 H.264/AAC-LC 编码的媒体文件。此外,允许把应用程序用户界面的活动捕获成带有音频的视频。
  • 任务栏访问:允许应用程序整合各种 Windows 7 任务栏特性,比如任务栏按钮重叠、跳转列表、任务栏按钮进度通知等等。
  • 语音 API:允许应用程序使用 Windows 7“语音到文本”和“文本到语言”功能。
  • 便携设备:允许应用程序枚举诸如音乐播放器、数码相机等连接设备上的内容。

微软宣称“目前大部分 Windows 平台的 API 无法以这种方式被 Silverlight 访问。一些虽然支持 COM,但不支持自动化;而其它的仅能通过 C/C++ 等原生语言进行访问。”然而,这对于 Silverlight 5 来说将不是问题,因为它将会获得 p/invoke 的能力,大多数.NET 开发者非常不喜欢使用非托管调用。与此同时,Native Extensions 2.0 for Microsoft Silverlight提供了必要的封装。

原生扩展需要安装在客户端机器上。这可以预先安装或者在应用程序里使用 Installer.CheckNESLInstalled 和 Installer.InstallNESL。后者的弊端是你不得不把 NESLSetup.msi 打包到你的应用程序里。


查看英文原文Native Extensions further to blur the boundary between Silverlight and WPF