对于 .net 开发人员来说,进入移动开发的学习曲线是啥?
Posted
技术标签:
【中文标题】对于 .net 开发人员来说,进入移动开发的学习曲线是啥?【英文标题】:For a .net developer, what's the learning curve to get into mobile development?对于 .net 开发人员来说,进入移动开发的学习曲线是什么? 【发布时间】:2010-09-27 13:53:09 【问题描述】:对于 .net 开发人员,进入移动开发的学习曲线是什么?
有多少不同的操作系统运行 .net?
windows mobile 和 windows ce 一样吗?
【问题讨论】:
Xamarin 对你有好处。我很惊讶它还没有被提及,但这毕竟是一个非常古老的问题。 【参考方案1】:学习曲线
我不想说“这取决于”,但确实如此,而且取决于几个因素。您的“.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 可以选择在操作系统中包含或排除几乎任何功能。这意味着没有一个“Windows CE”。想想 Windows Mobile 和 Windows CE 客户。他们采用 CE 并选择可用功能的特定子集。然后他们添加他们自己的部分(如 WinMo shell、几个 API 等)。这意味着普通 CE 设备可以(并且通常会)拥有 Windows Mobile 设备所没有的东西。这也意味着所有 Windows Mobile 设备都包含普通 CE 设备无法提供的部分。为了让它更有趣,WinMo OEM 甚至可以添加他们自己的东西,所以一台 WinMo 设备可能有其他设备没有的东西。
这甚至没有涉及 WinMo 平台本身(专业版、标准版、智能手机版、手机版等)之间的差异。
其他相关 SO 问题
你可能想看看这些:
CF Tips, Tricks and Gotchas WinMo Development - where to begin Getting Started with WinMo development【讨论】:
很棒的链接!谢谢!另外,我很高兴我不是唯一一个遇到操作系统版本问题的人! 我认为这在您发布此答案后可用,但 Red5 Labs 有一个组件允许 Series 60 设备在 Series 60/Symbian 上运行 .Net CF 应用程序。当然,如果这些应用程序使用 P/Invoke、状态和通知代理或其他特定于 Windows Mobile 的功能,那么它们将无法工作。鉴于该组件必须获得许可,但我不会将其视为休闲开发人员会使用的东西。 我刚刚发现:“我们很遗憾地宣布,红五实验室已于 2010 年 1 月 18 日停止其业务活动。” redfivelabs.com 所以专业开发人员在使用该组件时肯定有问题。【参考方案2】:我认为曲线可能在一定程度上取决于您来自哪种 .Net 世界以及您想要进入哪种移动开发领域。例如,如果您是一名 Web 开发人员,并且想要在紧凑的 .Net 框架中使用 Mobile 控件构建一个站点,这可能不像 Web 开发人员尝试编写一个独立的应用程序那样困难,该应用程序的方式发生了变化。事情应该流动。还有一个问题,你想把什么叫做移动开发,因为 iPhone、Blackberries、Treo 智能手机和其他一些环境可能在某种程度上具有不同的功能。
你指的是哪个.Net:版本号不同,还有原始和精简的区别。
我认为还有另一个答案很好地解决了您的最后一个问题。
【讨论】:
【参考方案3】:一个大问题是如何设计用户界面。 WinCE 似乎仍然假设桌面 3 手用户操作(左、右和鼠标),以及使(要求)用户能够以非模态方式启动一切的事件驱动架构。这在手机上通常效果不佳。忘记下拉菜单。多面板窗口不是很有用。等等等等。你的许多基本设计假设和模式需要重新学习。
【讨论】:
【参考方案4】:我认为 .NET 开发背景肯定会有所帮助。两个平台之间存在一些差异,最大的差异在于 Compact Framework 仅提供了 .NET Framework 的一个子集。当您熟悉的某些功能未在 CF 上实现时,从桌面环境转换时,这可能会很困难。
为 Windows Mobile 设备开发时需要注意的其他一些事项:
迎合多种屏幕方向、尺寸和分辨率 处理器速度限制 内存限制/管理 UI 设计(您只是没有与桌面相同的屏幕空间) 数据输入(手写笔/软输入面板)【讨论】:
【参考方案5】:无法对已有的内容添加太多内容,但我会说,如果您只使用完整框架,您会在很多地方感到惊讶。
有真假和断电之分,写涉及系统资源的代码时记住这一点。 性能 - OMG,速度很慢,在某些地方可能比您预期的要慢得多。 缺少点点滴滴 - 您将不得不在几次重新编写***,因为有些东西由于空间而没有被移植。我有没有提到 Decimal.Round() 只支持庄家的四舍五入? 钥匙...钥匙数量有限。有时您可能希望键执行不同的操作,然后您会记得 WinForm 小部件会拦截键并执行预编程的操作。哦不! P/调用。您习惯于免费获得的一些东西将需要 P/Invokes。 The GC is different。如果您想创建一个大型应用程序,可能值得一读。 并非所有设备都一样,就像 PC 一样。【讨论】:
【参考方案6】:除了来自 ctacka 的 cmets 关于各种 OC 版本引起的混乱之外,我还要提到我最初对框架、SDK,尤其是 SQL Server 引擎和客户端的大量 CAB 选项的困难。选项似乎一直在变化,我仍在努力解决所有问题。我在移动开发学习曲线中最陡峭的部分是让开发和运行时环境以及安装流程正常工作。
【讨论】:
以上是关于对于 .net 开发人员来说,进入移动开发的学习曲线是啥?的主要内容,如果未能解决你的问题,请参考以下文章