我对WinRT和.NET感到困惑。
这些名称空间:http://msdn.microsoft.com/en-us/library/windows/apps/br211377.aspx存在于WinRT中,但它们并不完整(例如System.IO
不存在)。
对于套接字编程,有两个名称空间:
.NET库中的 1- System.Net.Sockets
。
2- Windows.Networking.Sockets
。
我应该在.NET项目中使用WinRT API吗?如果答案是“是”那么为什么我应该使用WinRT API而不是.NET API?
答案 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沙盒环境中不允许这样做。