对于一名.NET开发者来说,进入移动开发需要多长时间的学习曲线?

13

对于一位 .NET 开发者来说,进入移动开发需要多长时间的学习曲线?

.NET 支持运行在多少个不同操作系统上?

Windows Mobile 和 Windows CE 是同一个东西吗?


Xamarin 对你来说可能是不错的选择。虽然这是一个非常老的问题,但我很惊讶它还没有被提到过。 - JaKXz
6个回答

20

学习曲线

我不想说“这取决于”,但实际上确实如此,取决于几个因素。您的“.NET开发”经验是什么?请记住,CF支持C#和VB.NET,因此,如果您是COBOL.NET人员,则比如果您是C#人员则更困难。如果您主要在桌面上进行ASP.NET,则比如果您使用WinForms则更困难。如果您对偶尔连接的情况一无所知,并且对嵌入式系统一无所知,则会比如果您了解这些情况则更困难。

从桌面移动到移动设备相当简单,但Compact Framework包含完整框架的子集,但它不是纯子集。它还包含一些在桌面上根本不存在的东西。因此,有一些东西需要学习。

然而,比这更重要的是,您通常需要不同的思维方式。您没有交换文件。您的内存和存储空间有限。您有睡眠/唤醒功能。您具有较小的分辨率和动态分辨率和宽高比变化。桌面开发人员很少考虑这些问题。

操作系统

这更为简单。只有Windows CE平台(有关更多澄清,请参见下一个答案)支持Compact Framework。还有微型框架,但我会称其为更“嵌入式”而不是“移动”,因此您可能没有考虑它(如果我错了,请纠正我)。

CE与WinMo

这是很多初学者的主要疑惑点。与XP(为了讨论方便,排除XPe)或Vista不同,Windows CE是一个模块化操作系统。这意味着设备OEM可以选择包含或排除OS中的几乎所有功能。这意味着没有一个“Windows CE”。将Windows Mobile和Windows CE客户端考虑一下。他们采用CE并选择特定的可用功能子集。然后,他们添加自己的组件(如WinMo shell、几个API等)。这意味着香草CE设备可以(而且经常会)有一些Windows Mobile设备没有的东西。这也意味着所有Windows Mobile设备都包含着一些香草CE设备上没有的部分。更有趣的是,WinMo OEM可以添加他们自己的东西,因此一个WinMo设备可能会有另一个WinMo设备没有的东西。
这甚至没有涉及到WinMo平台本身之间的区别(专业版、标准版、智能手机、电话版等)。
其他相关SO问题
您可能需要查看以下内容:
· CF提示,技巧和陷阱 · WinMo开发-如何开始 · 开始WinMo开发

1
太棒了,感谢分享链接!同时,我很高兴不是唯一一个遇到操作系统版本问题的人! - Doug L.
1
我认为在你发布这个答案之后,Red5 Labs 推出了一个组件,允许 Series 60 设备在 Series 60/Symbian 上运行 .Net CF 应用程序。当然,如果这些应用程序使用 P/Invoke、状态和通知代理或其他仅适用于 Windows Mobile 的功能,则它们将无法工作。考虑到该组件必须获得许可证,我不认为这是一个普通开发者会使用的东西。 - Joel
我刚发现这个消息:“我们很遗憾地宣布,Red Five Labs 从2010年1月18日起停止了业务活动。”http://www.redfivelabs.com/ 因此,专业开发人员使用该组件可能存在问题。 - Larry Smithmier

2
一个重要的问题是如何设计用户界面(UI)。WinCE似乎仍然假定桌面三手操作(左、右和鼠标),以及事件驱动的架构,这使得(需要)用户以异步方式启动所有操作。这在手机上通常效果不佳。忘记下拉菜单。多面板窗口也不是很有用。因此,你需要放弃许多基本的设计假设和模式。

1

对于已经存在的内容,我无法添加太多,但我会说如果你只使用过完整框架,你会在很多地方感到惊讶。

  • 有真、假和关闭三种状态,请记住这一点,当编写涉及系统资源的代码时。
  • 性能-天哪,有些东西很慢,可能比你预期的要慢得多。
  • 缺少一些细节-您将不得不重新编写一些内容,因为由于空间限制,一些内容尚未移植。我是否提到Decimal.Round()仅支持银行家舍入?
  • 键...有限的键。有时您可能希望键执行不同的操作,然后您将记住WinForm小部件拦截键并执行预编程的操作。哦不!
  • P/Invoke。您习惯于免费获得的某些内容将需要P/Invokes。
  • GC不同。如果您想创建大型应用程序,阅读它可能是值得的。
  • 并非所有设备都像PC一样相同。

0
除了ctacka提到的各种OC版本引起的混乱之外,我还要提到我最初在框架、SDK以及特别是SQL Server引擎和客户端的CAB选项数量上遇到的困难。这些选项似乎一直在变化,我仍在努力弄清楚它们。对于移动开发来说,我学习曲线最陡峭的部分是使开发和运行时环境以及安装过程正常工作。

0

我认为曲线可能会有点取决于你来自哪种.Net世界,以及你想进入哪种移动开发。例如,如果您是Web开发人员,并希望使用紧凑的.Net框架中的移动控件构建网站,则这可能不像尝试编写独立应用程序的Web开发人员那样困难,因为流程发生了变化。还有一个问题,您想称移动开发为什么,因为iPhone,BlackBerry,Treo智能手机和其他一些环境可能在某种程度上拥有不同的功能。

您指的是哪个.Net:有不同的版本号以及原始版本和紧凑版本之间的区别。

我认为还有另一个回答很好地回答了您的最后一个问题。


0

我认为具备.NET开发背景肯定会有所帮助。这两个平台之间存在一些差异,最大的区别在于Compact Framework只提供了.NET Framework的子集。当从桌面环境转换时,你熟悉的某些功能在CF上没有实现,这可能会带来困难。

在为Windows Mobile设备开发时,还需要注意以下几点:

  • 适应多种屏幕方向、大小和分辨率
  • 处理器速度限制
  • 内存限制/管理
  • UI设计(与桌面相比,屏幕空间有限)
  • 数据输入(触笔/软输入面板)

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接