我应该在.NET(例如C#)项目中使用WinRT API吗?

时间:2012-01-30 10:08:29

标签: .net windows-runtime

我对WinRT和.NET感到困惑。

这些名称空间:http://msdn.microsoft.com/en-us/library/windows/apps/br211377.aspx存在于WinRT中,但它们并不完整(例如System.IO不存在)。

对于套接字编程,有两个名称空间:

.NET库中的

1- System.Net.Sockets

WinRT中的

2- Windows.Networking.Sockets

我应该在.NET项目中使用WinRT API吗?如果答案是“是”那么为什么我应该使用WinRT API而不是.NET API?

2 个答案:

答案 0 :(得分:5)

如果您正在编写一个普通的.NET应用程序(即传统的Windows桌面应用程序,ASP.NET网站,WCF服务等),那么您将使用标准的.NET配置文件,而WinRT将不是一个可用的选项

如果您正在为Windows 8编写Metro风格应用程序,那么您将被限制为.NET的Metro配置文件。这将删除您习惯使用的许多常用命名空间,并用WinRT API替换它们。这是Microsoft为改善Metro应用程序的安全性,可移植性和响应性而进行的深思熟虑的选择。

答案 1 :(得分:2)

如果您想开发在Windows 8中的Metro环境中运行的应用程序(因此可能在Windows 8市场中可用),则需要使用WinRT API。 .NET CLR在WinRT上以“API限制”模式运行,以允许城域应用程序正确地沙箱化。缺少文件IO,因为在Metro沙盒环境中不允许这样做。