写点什么

论道 WP(二):如何学习 WP 开发?

  • 2012-04-06
  • 本文字数:3098 字

    阅读完需:约 10 分钟

虽然 Windows Phone 还没正式进入中国大陆市场,但关注它的国内开发者已经越来越多了,这个时候摆在面前的一个问题就是,如何学习 Windows Phone 开发?如果你对此感到无从入手,或许这篇文章可以给你一点启发。

新的体验,新的开始

学习 Windows Phone 开发的目的是为了开发 Windows Phone 应用,但什么样的应用才算好的应用呢?毫无疑问,我们需要一些榜样作为参照,我们希望了解一个标准的 Windows Phone 应用应该是怎样的,而这正是学习 Windows Phone 开发的第一步。

一般而言,我们有以下 3 种途径体验 Windows Phone:

  • 买个 Windows Phone 手机亲自体验一下。这是最简单直接的,如果你真的打算加入 Windows Phone 开发阵营,Windows Phone 手机是必须的,买到之后不要急着越狱,先以一个普通用户的身份使用一段时间,并且观察和体验一下内置的应用是怎样设计的。
  • 如果你还在观望,不想现在入手 Windows Phone 手机,那么你可以通过网上的视频间接体验一下,这里推荐一个《解读 Windows Phone 7 Mango》视频(英文),短短 15 分钟涵盖了 Live Tiles、人脉、消息、Office、游戏、多任务、Bing 等多个特性。此外,官方的 windowsphone.com 上也有非常丰富的视频和文字内容。
  • 如果你喜欢看书,这里推荐《Windows Phone 7 Plain & Simple》《Windows Phone 7 For Dummies》,这两本书包含大量截图,并且详细讲述了 Windows Phone 的使用步骤,唯一的不足就是缺少 Windows Phone 7.5 的内容,不过就了解 Windows Phone 的体验来说已经足够了。

安装开发工具 ,写个 Hello World 应用

当你对 Windows Phone 有了一个感性的认识之后,接下来就是下载和安装开发工具了,并且熟悉一下开发工具。这套开发工具是免费的,包含Visual Studio 2010 Express for Windows Phone、Expression Blend 4 for Windows Phone 和Windows Phone 模拟器等,足以应付日常Windows Phone 应用的开发任务了。

安装开发工具之后,按照惯例应该写个Hello World 应用,这个应用不必很复杂,它的目的是为了让你经历一次简单的开发过程,同时验证开发工具的安装和配置没有问题。

值得提醒的是,Windows Phone 模拟器是不能在虚拟机里面运行的,而且它对显卡也有要求,需要“使用 WDDM 1.1 驱动程序的支持 DirectX 10 或更高版本的图形卡”,否则,Windows Phone 模拟器的表现会有点不正常,比如看不到一些动画效果、浅色主题渲染问题以及IE 浏览器和WebBrowser 控件无法显示网页内容等。

找个实际的需求开发一下,边做边学

有了前面的准备,接下来就可以正式学习Windows Phone 开发了。如果你想系统地学习,可以找一些书来看,这里推荐Charles Petzold 的《Programming Windows Phone 7》,这本书免费提供 PDF 版,并且附带完整的代码示例,喜欢阅读经典电子书的同学绝对不能错过。如果你倾向于中文内容,也没有问题,因为这本书已经由国内的Windows Phone 开发者林永坚、姜泳涛和李鹏翻译并出版了,书名是《Windows Phone 7 程序设计》

想要更好的把知识学到手,你需要通过一个实际的应用把它们串联起来,这里推荐Allen Lee 的《WP7 有约》,这个系列文章通过一个实际的应用详细展现一个完整的开发过程以及在这个过程中的所思所想,具有一定的借鉴价值。

实际上,你不必把Windows Phone 的知识塞满脑子才能开发,只要你有C#的基础,对Windows Phone 的基本概念有所了解,就可以开始了。你可以挑选一个常见的需求,比如很多人都做过的微博客户端,或者你自己想要的功能,然后着手分析和设计,接着进行实现。在这个过程中,你会遇到各种各样的问题,各种不懂和各种郁闷,但你不应感到失落,因为这些困难为你提供了学习的目标和方向,你的知识和经验正是从解决每一个这样的困难积累起来的,而所有这些困难串联起来最终成就了你要开发的应用以及你的成就感。

无论你选择什么需求进行开发,有一点必须切记,那就是你必须对它们有兴趣。这点很重要,因为在你做出决定之后的一段时间里你都要和它们打交道,所以最好是你有机会用到的,这样就能建立一个有效的反馈循环,帮助自己深入了解这些需求。当然,如果你能接触到潜在的用户就更好了,你可以通过与他们的交流拓宽你对这些需求乃至整个应用的视野。

还有一点值得提醒的,开始的时候不必太过担心你的设计和实现不好,因为随着时间的推移,你会发现需求产生变化,当初设想的某些需求消失了或者合并到其他需求里,以及一些新的需求产生了等等,这些都可能对设计和实现带来冲击。这对于你来说至少有两个好处,第一,它让你有机会重新审视原先设计和实现的不足,这些经验教训应该记录下来,第二,它让你深刻体会到需求变更对整个过程有哪些影响。

不管怎样,尽早开始!

学用第三方库

随着开发过程的推移,你很快就会发现标准的控件无法满足你的需要,这个时候就需要求助于第三方控件库了。

Silverlight for Windows Phone Toolkit 是最常用的第三方库之一,它包含大量常用的控件,比如 WrapPannel、ContextMenu 等,同时也包含了大量不受欢迎的bug ,比如Allen Lee 在《WP7 有约(二):课后作业》最后一节提到的从新的页面返回LongListSelector 控件所在页面时出现的异状。这些开源的第三方库可以极大地丰富你的开发工具包,但在使用之前你需要有个心理准备,万一出了问题,你有可能需要自己阅读和调试代码,找出并修复问题。这是一个好的学习机会,你除了可以学习如何使用这些第三方库,还可以学习它们是如何设计和实现出来的,不过,如果项目比较紧就另当别论了。

Coding4Fun Windows Phone Toolkit 是另一个最常用的第三方库,它也包含大量常用控件,比如 RoundButton、Message Prompt 等,当然也存在问题,比如 Allen Lee 曾经在 Expression Blend 里使用它的某个版本时碰到的 RoundButton 模板异状。这个时候,你可以到官网那里反应问题,你需要尽可能把问题描述清楚,最好能够提供期望效果和实际效果的截图,帮助开发人员更好地你的问题。实际上,你在测试自己开发的应用,也应该详细地描述并存档,以便你或者你的搭档将来定位错误的时候不会无从入手,而且将来添加新的功能时也可以利用这些信息进行回归测试。

关键在于,你应该从现在开始一点一点地积累使用经验以及遇到问题时的应对措施,你可以把这些知识集中起来,比如 Alexis 的《Windows Phone 实用开发技巧合集》,它们将会在你日后开发应用的时候给予非常可观的回报。

分享和交流

当想法仅存在于你的脑子里时,它是无序的;当你把它写下来时,面前的文字马上就会化身成一面镜子,清楚地映出你的想法。事实上,在你写下它的过程中,你的大脑会非常努力地进行整理,你甚至会察觉有些想法正在发生变化,这对于理解你的想法非常有帮助。写下来之后,拿出给别人看看,你会得到别人的反馈,无论是正面反馈还是负面反馈,都能拓宽你的视野。

前面曾经说过,你不必在开始的时候担心你的设计和实现不够好,没有人能够把将来所有情况都考虑进来,某些经历的确实会导致归纳过程产生偏颇,这个时候你需要的不是独自苦思,而是拿着你的想法去找别人,从交流的碰撞中寻求更好的突破。如果你能在交流中暂时放下对某些想法的固着,你可能会发现更好的想法,而不是仅仅对原来想法的小修小补。

曾经有个老师说:“一个知识,你听懂了不算真的懂,你能把别人讲懂了才算真的懂。”我相信这是分享和交流的另一个好处,也正是许多人愿意在博客里分享心得的主要原因。

最后,我们把上面的内容总结成一条学习之路:


感谢崔康对本文的审校。

给InfoQ 中文站投稿或者参与内容翻译工作,请邮件至 editors@cn.infoq.com 。也欢迎大家通过新浪微博( @InfoQ )或者腾讯微博( @InfoQ )关注我们,并与我们的编辑和其他读者朋友交流。

2012-04-06 00:004944

评论

发布
暂无评论
发现更多内容

区块链赋能供应链金融 | 应用优势与四类常见模式

CECBC

区块链 供应商审核

区块链带来的业务流程优化是数字化转型最深层次的变革

CECBC

区块链 数字化

8.1文件与磁盘IO:如何把磁盘的读写速度提升十万倍?

张荣召

8.3红黑树原理与性能特性

张荣召

架构师训练营第 1 期 第 8 周作业

李循律

极客大学架构师训练营

Spring改变版本号命名规则:此举对非英语国家很友好

YourBatman

Spring Boot 语义化 Spring Framework 日历化

va_list 可变长参数原理

liu_liu

c 可变参数 va_list

适合初学者的Web Components教程[2019](译)

西贝

Java Web Component 组件

面试官:Redis 主从复制时网络开小差了怎么整?

redis 学习 面试

数字货币交易所开发定制,币币撮合交易开发商

13530558032

8.5网络通信基本原理与性能优化

张荣召

【干货】内存条的基础讲解,够用绝大多数情况

亚兰—硅的传奇official

计算机基础 内存 装机 硬件

【薪火计划】02 - 一将功成万骨枯

AR7

管理

架构师训练营 1 期 - 第八周总结(vaik)

行之

极客大学架构师训练营

作业--week08

张荣召

超赞!吃透这份Github点赞120k的Java知识面试笔记Offer拿到手软

比伯

Java 编程 程序员 架构 面试

训练营第4周作业

爱码士

训练营

每个程序员都应该知道的数字

多颗糖

数据库 计算机基础 存储

过滤Spark数据集的四种方法

大数志

大数据 spark 数据分析 数据科学

机器学习的产业化变革中,华为云ModelArts的新成绩单

脑极体

8.2常见数据结构与Hash表原理分析

张荣召

8.4经典算法

张荣召

8.6非阻塞网络I/O

张荣召

我画着图,FluentAPI 她自己就生成了

newbe36524

C# .net .net core netcore

区块链钱包APP开发,开发搭建数字货币钱包

13530558032

高可用可伸缩微服务架构:基于Dubbo、SpringCloud和ServiceMesh完整蓝光版PDF分享

Java架构追梦

Java 微服务 dubbo Service Mesh SpringCloud

训练营第四周学习总结

爱码士

训练营

区块链USDT系统开发解决方案,USDT支付系统技术开发

13530558032

学习总结--week08

张荣召

第5周 技术选型(一)-作业

SuGeek

极客大学架构师训练营

flink-sql流计算可视化UI平台

无情

sql flink 实时计算 平台

论道WP(二):如何学习WP开发?_移动_allenlooplee_InfoQ精选文章