当人们更喜欢使用JavaScript而不是C#来编写Windows8应用程序时,它是否会带来性能或可访问性方面的好处?

当人们更喜欢使用JavaScript而不是C#来编写Windows8应用程序时,它是否会带来性能或可访问性方面的好处?,c#,javascript,performance,windows-8,C#,Javascript,Performance,Windows 8,如果一个人可以选择JavaScript(带HTML)和C#(带XAML)来编写Windows8应用程序,他/她应该选择哪一个?它是否对性能有任何好处,或者C#对Windows8 API和系统调用具有更大的可访问性?您正在将脚本语言与本机(编译)语言进行比较 与C#相比,JS对系统的访问非常有限。但话说回来,根据您希望应用程序执行的操作,它可能是最佳选择。恐怕操作有些混乱。我们正在讨论为Windows 8开发应用程序。您可以使用多个语言堆栈以Windows 8为目标。您可以使用XAML/C#、XA

如果一个人可以选择JavaScript(带HTML)和C#(带XAML)来编写Windows8应用程序,他/她应该选择哪一个?它是否对性能有任何好处,或者C#对Windows8 API和系统调用具有更大的可访问性?

您正在将脚本语言与本机(编译)语言进行比较


与C#相比,JS对系统的访问非常有限。但话说回来,根据您希望应用程序执行的操作,它可能是最佳选择。

恐怕操作有些混乱。我们正在讨论为Windows 8开发应用程序。您可以使用多个语言堆栈以Windows 8为目标。您可以使用XAML/C#、XAML/C++、DirectX/C++或HTML/JavaScript。问题在于两个最流行的堆栈——XAML/C#和HTML/JavaScript——中哪一个具有更好的性能和更好的Windows API访问能力

我是微软的开发者传道者,这是我最常被问到的问题。我在网站上有一个帖子,涉及到问题的一部分,但不是全部

首先,关于对Windows API(WinRT)的访问,所有语言堆栈都是相同的。整个WinRT对象空间实际上被投影到不同的语言中,因此在任何语言中,您都可以调用Windoww API,它们总是以“Windows”开头

投影也遵循它们投影到的每种语言的约定,因此在C#中可以调用Windows.UI.Popups.MessageDialog(“Hello World”).ShowAsync(),而在JavaScript中可以调用Windows.UI.Popups.MessageDialog(“Hello World”).ShowAsync()。类似地,每种语言都使用自己的约定来处理异步。在C#中,您将使用异步/等待模式,但在JavaScript中,您将使用承诺模式

接下来,关于性能问题。由于语言之间的自然和巨大差异,语言堆栈之间将存在差异。需要知道的重要一点是,对于所有内置控件和场景,所有语言堆栈都设计为满足最低性能阈值。老实说,我不认为您需要担心任何语言堆栈在性能上落后,除非您有一些真正有趣的东西在进行,在这种情况下,您应该具体说明它是什么

每种语言都有自己的优缺点。如果你使用的是C#,你就有一套很好的.NET框架,很多人都非常熟悉它。它也是一种设计精良、富有表现力的语言。此外,XAML是一种非常强大的UI语言。如果您使用的是JavaScript,那么您的代码与互联网上的其他部分是相同的,并且可以共享很多代码。你可以找到JavaScript库来做任何你想做的事情,你也可以在Windows8应用程序中使用这些库中的任何一个。如果你使用C++,那么你可以访问现有的C和C++组件,并可以访问DirectX来制作3D应用程序。 <>记住,你可以使用混合程序来使用Cype或C++来创建WRET组件,然后你可以在任何语言栈中使用这些组件——包括JavaScript!因此,如果您了解C语言,并且希望用C语言编写业务逻辑,您可以这样做,然后在JavaScript应用程序中使用该逻辑

最后,我认为在决定选择哪个堆栈时,两个最大的因素是:1)你已经掌握了最多技能的堆栈和2)你喜欢使用的堆栈。这些都很重要,可能会帮你完成一个原本会放弃的项目


我希望这有助于你做出决定。如果您需要帮助制作Windows 8应用程序,我可以。

这取决于您正在构建什么。其次,当您从javascript调用时,一些库将在JS中执行额外的步骤。如果你能提供一些关于你是什么的细节,那就更好了doing@KamranShahid,谢谢你的回复。我还没有开始开发应用程序。但在开始工作之前,我只想确保我选择的语言能够最大限度地访问Windows-8 API,这样将来的任何升级或添加都不会迫使我切换语言,从而迫使我重新编写所有内容。嗯,我知道很难分享你们正在制作的应用程序类型,因为这是这些应用程序开发领域中最重要的想法。我希望我的应用程序在将来需要时可以扩展。若JS对系统的访问受限,那个么这可能是一个问题。在开始编写应用程序之前,我想确保我选择的语言将使我能够访问Windows-8中的大部分功能。在这种情况下,你必须使用C。与本地语言相比,Js在功能和效率方面都非常有限。Js并不像Cerburs所说的那样有限。它对WinRT API的访问权限不受限制。在C#中几乎没有什么是在JS中做不到的,JS可以做一些C#做不到的事情@Cerburs,请检查你的事实。我发现很难相信JS比本机代码有更多的功能。你有一些具体的例子吗,@JeremyFoster?