C#实际上是一种多平台语言吗?


20

C#(和一般的.net平台)看起来正成为多目标应用程序的不错选择:

  • 官方MS .net框架:全面的Windows开发,asp.net开发,Windows Phone开发等
  • mono及其所有派生产品:monotouch,monodroid:世界其他地区。该工具今天是RTM。

  • 这是否意味着C#成为针对最受欢迎的平台(台式机,Web和移动设备)的一种好语言?

  • 使用目标平台(目标C,Java等)的“本机”语言是否还更好?
  • 它只是一团烟雾,只有营销语言吗?

请注意,我实际上意识到我无法在平台之间复制/粘贴代码。但是我确信可以重用较低层的应用程序(模型,业务等),但是我知道我必须将较高层(Gui等)适应该平台。我的目标是更专注于必需的技能,而不是技术代码共享。

[edit]我一家大规模使用c#的公司的ac#开发人员。这就是为什么我在扩展公司目标平台范围的计划中谈到c#的原因。

Answers:


12

是的,总的来说,.NET Framework非常适合针对各种设备的应用程序。但这不是.NET独有的;Java早就做了。要牢记的是,对于特定平台,没有任何真正的替代本机工具的选择。

用.NET创建的Mac应用程序永远看起来都不像本地Mac OS X应用程序,并且绝大多数 OS X用户都认为这是一个问题。从战略上来说,这对您可能并不重要,具体取决于您的业务模型是否重视最大化饱和度而不是最大化用户满意度,但是在选择时一定要牢记这一点。

Linux和Windows中的GUI系统在哪些应用程序看起来是“本机”并与该平台非常匹配方面更具灵活性。但是,我主要归咎于缺乏清晰的界面指南以及应用程序开发人员历来愿意忽略那些确实存在的事实。许多Mac用户正是因为其一致的用户界面偏爱Mac 。

考虑到您将必须使GUI层适应特定的平台(并可能用另一种语言完全重写它,例如Objective-C),这使您仅将.NET平台用于库代码。在我看来,C#不会比C ++赢得明显的胜利。

对于快速的应用程序开发,没有什么替代方法比C#和.NET更好。快速推出一个应用程序并使其立即在多种平台上可用无疑是一项业务优势。但是对于旨在真正满足用户需求的真正的多平台应用程序,不一定是灵丹妙药。


9
“使用.NET创建的Mac应用程序永远看起来都不像本地Mac OS X应用程序,...”。让我向您介绍MonoMac:mono-project.com/MonoMac

3
@Dimitris:最好只是说我很怀疑。Qt的人们尝试了这一点,但是人们仍然对实现这一点感到惊讶。他们错了:他们没有错。Qt应用程序也不会像本地OS X应用程序。他们只是...错了。我没有在您建议的链接中看到任何屏幕截图,但是即使它们使UI完美,它们仍然会丢失所有行为和实现细节。不过,感谢您的参考。这是值得乐观的。
科迪·格雷

7
@Cody Gray:MonoMac看起来和表现得很原生,因为它不是跨平台的API,而是原生包装了底层的Cocoa API。它看起来是本地的,因为它是本地的。

1
@库迪·格雷(Cody Gray):Mac是Mac上的MonoMac,iOS是Mac上的MonoTouch。您可以编写本机应用程序,只需使用C#代替Obj-C。它不是“使WinForms或Gtk在Mac上看起来不错”。

2
我只是想参与上述讨论,因为我正准备构建一个跨iPad和Windows Phone,ASP.NET MVC3和NT Services与机器人控制系统接口的系统。正如Cody指出的,Mono,MonoDroid,MonoTouch等是一种用C#编写代码的方法,它使您可以利用C#和.NET Framework(包括Linq)的强大功能,同时还可以不受限制地访问您的代码选择平台的“本机” API ...,同时还避免了大多数本机C / C ++ / ObjC代码固有的许多内存管理问题。
理查德·特纳

6

Microsoft .NET是官方的CLR,DLR,BCL,CLI和CLS实现。其他公司,团体,社区或工作组与Microsoft的关联方式与最新框架和语言版本的1:1实现方式无关。

基本上,您需要查看要在具体项目中利用的语言和框架功能,并检查它们是否存在于非官方的.NET实现中。

如果您期望一次编译解决方案并在各处分发,那么您错了:您需要进行案例研究。


TLA太多了!
塔林2015年

@tamlyn啊哈哈哈哈
马蒂亚斯Fidemraizer

既然这么多的.NET的是开源的,一切都变了......
伊恩·

@Ian当然.......
马蒂亚斯Fidemraizer

2

我在XBOX和Windows计算机上运行的游戏上使用C#,在用于机器人解决方案的Compact Framework应用程序中使用它,在iPad开发中使用MonoTouch,在Linux上运行一些Web应用程序,以及其他一些解决方案。通常,有一种方法可以在给定的平台上进行操作。其中大多数的核心层大致相同(确实需要案例研究)。问题-我认为是一个系列问题-开发环境。我习惯了Visual Studio及其功能。但是,例如MonoDevelop使我发疯。


1
Novell最近发布了VS 2010扩展,因此您可以在VS中开发Mono代码。
Morgan Herlocker 2011年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.