为什么 WinRT 的托管版本不包括对 .NET API 的访问?
Why does the managed version of WinRT not include access to the .NET API?
最近我开始在 WinRT 中使用 C# 为 Windows 商店应用程序(以及即将推出的 Windows 10 个通用应用程序)工作。在之前使用 .NET 工作了一段时间后,我很高兴能在移动设备上使用 .NET,却发现 WinRT 根本不像家。
我经常发现自己必须搜索我在 .NET 中熟悉的某些 类 的替代方案,因为它们通常不相同,甚至在 WinRT 中实现也不相同。我认为缺乏实现是因为 WinRT 的核心是非托管的,即使 CLR 从托管代码绑定到它。
我的问题是:是什么阻止了 Microsoft 允许开发人员从托管代码导入和使用所有熟悉的 .NET 类,即使使用 WinRT 运行ning behind? 我知道这不是设备的限制,因为我的 Surface Pro 可以 运行 桌面 .NET 应用程序,而且 Mono 项目已经成功移植了几乎整个 .NET API各种设备。
感谢您的意见!
这是一个很大的话题,但您无法从 Windows 商店应用程序中获得完整的 .NET API 的三个基本原因。
- API 不适合手机等较小的设备。 因为通用 Windows 平台的目的是让应用程序可以运行 无处不在,它不能包括 API 资源密集型(磁盘、内存、CPU 等)到 运行 在较小的设备上。 (请注意,即使托管 API 看起来很小,它也可能依赖于大型底层 Win32 API)。
- APIs 与商店应用程序模型不兼容。许多需要未授予商店应用程序权限的 APIs 属于此问题类别,API 可以使应用程序对您的机器执行 "unwanted" 操作("unwantedness" 的程度是主观的)。
- API已弃用或有更新的替代品。 Windows 中有很多 API 就是这种情况8,其中文件系统访问和网络套接字之类的东西被商店应用程序阻止,因为有更新的 WinRT 等价物。
请注意,Microsoft 始终愿意重新评估是否应包含特定 API。例如,Windows 10 带回了许多在 Windows 8.1 中被禁止的 API(例如 System.IO
和 System.Net.Sockets
),并扩展了授予的功能应用。您可以通过 Windows 反馈应用程序或 on UserVoice 提交反馈,如果您想要额外的 API 反馈(添加详细的理由永远不会有坏处)。
最近我开始在 WinRT 中使用 C# 为 Windows 商店应用程序(以及即将推出的 Windows 10 个通用应用程序)工作。在之前使用 .NET 工作了一段时间后,我很高兴能在移动设备上使用 .NET,却发现 WinRT 根本不像家。
我经常发现自己必须搜索我在 .NET 中熟悉的某些 类 的替代方案,因为它们通常不相同,甚至在 WinRT 中实现也不相同。我认为缺乏实现是因为 WinRT 的核心是非托管的,即使 CLR 从托管代码绑定到它。
我的问题是:是什么阻止了 Microsoft 允许开发人员从托管代码导入和使用所有熟悉的 .NET 类,即使使用 WinRT 运行ning behind? 我知道这不是设备的限制,因为我的 Surface Pro 可以 运行 桌面 .NET 应用程序,而且 Mono 项目已经成功移植了几乎整个 .NET API各种设备。
感谢您的意见!
这是一个很大的话题,但您无法从 Windows 商店应用程序中获得完整的 .NET API 的三个基本原因。
- API 不适合手机等较小的设备。 因为通用 Windows 平台的目的是让应用程序可以运行 无处不在,它不能包括 API 资源密集型(磁盘、内存、CPU 等)到 运行 在较小的设备上。 (请注意,即使托管 API 看起来很小,它也可能依赖于大型底层 Win32 API)。
- APIs 与商店应用程序模型不兼容。许多需要未授予商店应用程序权限的 APIs 属于此问题类别,API 可以使应用程序对您的机器执行 "unwanted" 操作("unwantedness" 的程度是主观的)。
- API已弃用或有更新的替代品。 Windows 中有很多 API 就是这种情况8,其中文件系统访问和网络套接字之类的东西被商店应用程序阻止,因为有更新的 WinRT 等价物。
请注意,Microsoft 始终愿意重新评估是否应包含特定 API。例如,Windows 10 带回了许多在 Windows 8.1 中被禁止的 API(例如 System.IO
和 System.Net.Sockets
),并扩展了授予的功能应用。您可以通过 Windows 反馈应用程序或 on UserVoice 提交反馈,如果您想要额外的 API 反馈(添加详细的理由永远不会有坏处)。