写点什么

论道 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:005485

评论

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

Python代码阅读(第12篇):初始化二维数组

Felix

Python 编程 Code Programing 阅读代码

AI+云原生,把卫星遥感虐的死去活来

华为云开发者联盟

AI 容器 云原生 k8s 遥感影像

抖音快手短视频智能询盘获客系统软件开发介绍

有效管理数据安全性—— Pulsar Schema 管理

Apache Pulsar

Apache Pulsar StreamNative schema

面试官:你说说一条更新SQL的执行过程?

艾小仙

JS对象拷贝:深拷贝和浅拷贝

华为云开发者联盟

js 对象 对象拷贝 深拷贝 浅拷贝

接口测试--apipost如何自定义变量

与风逐梦

软件测试 接口测试

Compose 中的文字

Changing Lin

8月日更

LT浏览器——响应式网站测试利器

FunTester

性能测试 自动化测试 web测试 兼容性测试 测试报告

前端,测试如何修改后端接口返回的响应数据

CodeNongXiaoW

项目管理 大前端 测试 后端 接口管理工具

老用户运营从哪里切入?

boshi

运营 私域运营

spring 大事务

Rubble

8月日更

netty系列之:自定义编码和解码器要注意的问题

程序那些事

Java Netty 程序那些事

AI 场景的存储优化之路

焱融科技

人工智能 云计算 AI 分布式 高性能

Go 语言,一文彻底搞懂 slice 实现原理

微客鸟窝

Go 语言 8月日更

波场链DAPP开发|波场链TRONCHAIN介绍

Geek_23f0c3

DAPP智能合约交易系统开发 波场链DAPP开发 tronchainDAPP

基于AOP和HashMap原理学习,开发Mysql分库分表路由组件!

小傅哥

小傅哥 hashmap 分库分表 aop 数据散列

【LeetCode】合并两个排序的链表Java题解

Albert

算法 LeetCode 8月日更

如何请求一个需要登陆才能访问的接口(基于cookie)——apipost

Proud lion

大前端 后端 Postman Cookie 接口工

摄影利器一加9 Pro,让你轻松成为手机摄影师

Geek_8a195c

抖音快手短视频获客系统软件开发

Java筑基 - JNI到底是个啥

码农参上

Java jni 8月日更

2分钟玩转中文接口测试工具-ApiPost

CodeNongXiaoW

项目管理 大前端 测试 后端

业内首发!腾讯位置服务推出移动端3D数据可视化图层

架构实战营第一期 -- 模块五作业

clay

架构实战营

JVM集合之类加载子系统

阿Q说代码

JVM 加载 类加载器 双亲委派 8月日更

手撸二叉树之单值二叉树

HelloWorld杰少

数据结构与算法 8月日更

低代码:时代的选择

华为云开发者联盟

云计算 软件开发 低代码 硬件 IT系统

【Flutter 专题】64 图解基本 TextField 文本输入框 (一)

阿策小和尚

Flutter 小菜 0 基础学习 Flutter Android 小菜鸟 8月日更

vue入门:http客户端axios

小鲍侃java

8月日更

Apache HBase MTTR 优化实践:减少恢复时长

华为云开发者联盟

Apache hadoop zookeeper HBase MapReduce服务

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