.NET平台开发Windows Phone 7、iPhone及Android应用
2011-09-17 23:18
579 查看
编者按:在Windows Phone 7发布之后,移动开发领域除iPhone和Android之外季军即
将明朗,越来越多的开发者开始向Windows Phone
7平台转移。本文为著名开发者赵劼为InfoQ撰写的一篇文章,详实记录了在近日举办的Modern .NET DDD
Conference会议上,著名开发者Chris Hardy在他的演讲中展示了如何基于.NET/C#,开发面向Windows Phone
7,iPhone及Android三个平台的应用程序,以及其中的注意事项。
首先Chris列举了三个平台上使用的工具及框架等周边环境:
iPhone VS Windows Phone 7 VS Android
MonoTouch是Novell公司推出的基于Mono的iPhone
OS应用程序开发套件,并可以将应用程序发布至苹果应用程序商店。Mono是一款基于ECMA标准开发的.NET运行环境,使用JIT(Just-in-
Time)编译方式来执行IL代码,不过由于iPhone
OS设备的限制,MonoTouch使用了AOT(Ahead-of-Time)编译方式,直接将原生代码部署至iPhone
OS设备(iPhone,iPhone
4,iPad)上。MonoTouch还提供了一个Linker,它会将SDK及程序代码中真正使用到的部分静态链接至应用程序中,从而削减了应用程序的
体积。使用MonoTouch开发出来的应用程序可以在iPhone
OS设备上独立运行,这是因为MonoTouch会将一个运行时放入应用程序内部的原因。据Chris称,这会给应用程序的体积带来大约6MB的增长。
使用MonoTouch,.NET/C#程序员可以利用现有的知识进行开发,能够使用反射、泛型、LINQ、Lambda等各种高级的.NET
/C#特性。面向原生API的绑定存放在monotouch.dll中的MonoTouch命名空间下,并与CocoaTouch(即用于iPhone
OS开发的原生Objective-C框架)的命名空间映射。在绑定时,MonoTouch不是一味地直接暴露出Cocoa
Touch的功能,而是在一定程度上将它的API改写为更倾向于.NET程序员的形式。例如UIView的Frame属性为
System.Drawing.RectangleF类型,而不是Cocoa
Touch中原本使用的CGRect。对于一些如NSArray这样的类型,MonoTouch也在合适的地方将其转化为强类型的数组。在调试方
面,MonoTouch使用了Mono的Soft-Debugger,支持在模拟器、真机,甚至通过WIFI进行调试。
MonoDroid是针对Android系统的应用程序开发套件,大体和MonoTouch相同,目前正处在预览发布阶段,只有少量早期预订的用户拿到了SDK。
据Chris称,有了MonoTouch和MonoDroid便可以复用相当部分的代码,包括现有的开源项目,如Json.NET、
FlickrNet及XnaTouch。XnaTouch是一款基于MonoTouch的XNA框架实现,简化XBox及Windows Phone
7上的游戏向iPhone OS上的移植工作。不过在复用时并不能共享二进制文件,而必须针对不同的平台重新编译代码。
在UI部分,三个平台各有原生的解决方案。除了Windows Phone
7以外,iPhone和Android分别使用MonoTouch及MonoDroid提供的原生API的C#绑定进行开发。例如,MonoTouch进
行UI开发时使用的是iPhone OS标准的应用程序的架构,包括其MVC驱动方式。开发人员可以通过Interface
Builder编辑XIB文件,MonoTouch会自动根据XIB的内容在局部类中生成C#代码,所有的outlet,action等元素都会在代码中
得到体现。
Chris也提到了其他一些必须针对平台编写特定代码的地方,例如在文件的存储上,MonoTouch和MonoDroid可以直接像本地路径写入数据,而在Windows Phone 7上则必须使用独立存储:
void SaveLocal(string data)
{
#if (MonoTouch || MonoDroid)
File.WriteAllText(_localPath, data);
#elif WINDOWS_PHONE
using (var appStorage =
IsolatedStorageFile.GetUserStoreForApplication())
{
var file = appStorage.OpenFile(_localPath, FileMode.Create);
FileExtension.WriteAllText(file, data);
}
#endif
}
同理,使用WebClient获取数据时,在MonoTouch及MonoDroid上可以直接调用DownloadFile相关方法来下载文件,而在Windows Phone 7中,则需要使用OpenRead相关方法处理二进制数据流。
将明朗,越来越多的开发者开始向Windows Phone
7平台转移。本文为著名开发者赵劼为InfoQ撰写的一篇文章,详实记录了在近日举办的Modern .NET DDD
Conference会议上,著名开发者Chris Hardy在他的演讲中展示了如何基于.NET/C#,开发面向Windows Phone
7,iPhone及Android三个平台的应用程序,以及其中的注意事项。
首先Chris列举了三个平台上使用的工具及框架等周边环境:
Windows Phone 7 | iPhone(MonoTouch) | Android(MonoDroid预览版) | |
操作系统 | Windows | Mac | 跨平台 |
开发工具 | Visual Studio 2010 | MonoDevelop | VS 2010 / MonoDevelop |
设计工具 | Expression Blend 4 | Interface Builder | XML文件 / DroidDraw |
开发框架 | Silverlight for WP | Silverlight 3的超集 | Silverlight 3的超集 |
社区情况 | 极好 | 较好 | 尚早 |
iPhone VS Windows Phone 7 VS Android
MonoTouch是Novell公司推出的基于Mono的iPhone
OS应用程序开发套件,并可以将应用程序发布至苹果应用程序商店。Mono是一款基于ECMA标准开发的.NET运行环境,使用JIT(Just-in-
Time)编译方式来执行IL代码,不过由于iPhone
OS设备的限制,MonoTouch使用了AOT(Ahead-of-Time)编译方式,直接将原生代码部署至iPhone
OS设备(iPhone,iPhone
4,iPad)上。MonoTouch还提供了一个Linker,它会将SDK及程序代码中真正使用到的部分静态链接至应用程序中,从而削减了应用程序的
体积。使用MonoTouch开发出来的应用程序可以在iPhone
OS设备上独立运行,这是因为MonoTouch会将一个运行时放入应用程序内部的原因。据Chris称,这会给应用程序的体积带来大约6MB的增长。
使用MonoTouch,.NET/C#程序员可以利用现有的知识进行开发,能够使用反射、泛型、LINQ、Lambda等各种高级的.NET
/C#特性。面向原生API的绑定存放在monotouch.dll中的MonoTouch命名空间下,并与CocoaTouch(即用于iPhone
OS开发的原生Objective-C框架)的命名空间映射。在绑定时,MonoTouch不是一味地直接暴露出Cocoa
Touch的功能,而是在一定程度上将它的API改写为更倾向于.NET程序员的形式。例如UIView的Frame属性为
System.Drawing.RectangleF类型,而不是Cocoa
Touch中原本使用的CGRect。对于一些如NSArray这样的类型,MonoTouch也在合适的地方将其转化为强类型的数组。在调试方
面,MonoTouch使用了Mono的Soft-Debugger,支持在模拟器、真机,甚至通过WIFI进行调试。
MonoDroid是针对Android系统的应用程序开发套件,大体和MonoTouch相同,目前正处在预览发布阶段,只有少量早期预订的用户拿到了SDK。
据Chris称,有了MonoTouch和MonoDroid便可以复用相当部分的代码,包括现有的开源项目,如Json.NET、
FlickrNet及XnaTouch。XnaTouch是一款基于MonoTouch的XNA框架实现,简化XBox及Windows Phone
7上的游戏向iPhone OS上的移植工作。不过在复用时并不能共享二进制文件,而必须针对不同的平台重新编译代码。
在UI部分,三个平台各有原生的解决方案。除了Windows Phone
7以外,iPhone和Android分别使用MonoTouch及MonoDroid提供的原生API的C#绑定进行开发。例如,MonoTouch进
行UI开发时使用的是iPhone OS标准的应用程序的架构,包括其MVC驱动方式。开发人员可以通过Interface
Builder编辑XIB文件,MonoTouch会自动根据XIB的内容在局部类中生成C#代码,所有的outlet,action等元素都会在代码中
得到体现。
Chris也提到了其他一些必须针对平台编写特定代码的地方,例如在文件的存储上,MonoTouch和MonoDroid可以直接像本地路径写入数据,而在Windows Phone 7上则必须使用独立存储:
void SaveLocal(string data)
{
#if (MonoTouch || MonoDroid)
File.WriteAllText(_localPath, data);
#elif WINDOWS_PHONE
using (var appStorage =
IsolatedStorageFile.GetUserStoreForApplication())
{
var file = appStorage.OpenFile(_localPath, FileMode.Create);
FileExtension.WriteAllText(file, data);
}
#endif
}
同理,使用WebClient获取数据时,在MonoTouch及MonoDroid上可以直接调用DownloadFile相关方法来下载文件,而在Windows Phone 7中,则需要使用OpenRead相关方法处理二进制数据流。
相关文章推荐
- Android平台的手机记账应用开发全程实录
- .Net语言 APP开发平台——Smobiler学习日志:快速实现应用中的图片、声音等文件上传功能
- 用Kotlin开发android平台语音识别,语义理解应用(olamisdk)
- 给Web设计与开发人员的16个优秀iPhone与Android应用
- 是否可以用cocos2d-x开发跨ios\android等平台应用
- 三、东软实践项目2-基于android平台的应用开发:打电话功与发短信功能
- Android应用开发(一):Android平台搭建与开发环境配置
- 蛙蛙推荐:用.net 4.0构建新浪微博开发平台应用
- Channel 9: Windows Mobile平台上的.NET应用开发视频
- iOS“.NET研究”平台应用开发的敏捷设计流程
- 用Kotlin开发android平台语音识别,语义理解应用(olamisdk)
- [转载]Android平台第三方应用分享到微信开发
- .Net语言 APP开发平台——Smobiler学习日志:Poplist控件在APP中的应用场景以及代码
- 开发.Net平台应用系统框架
- 产品与服务--应用升级 - 腾讯Bugly - 一种愉悦的开发方式 _android anr_android anr分析_iOS崩溃日志分析平台
- .Net语言 APP开发平台——Smobiler学习日志:在手机应用开发中如何实现线状图表
- android 分发平台的开发(相当于一个应用平台的窗口,其它应用把入口放在了一个app里)
- Basic4android:多功能的Android应用软件快速开发平台
- Android Wear之android穿戴式设备应用开发平台
- 移动平台前端开发总结(针对iphone,Android等手机)