设为首页 收藏本站
查看: 825|回复: 0

.NET平台开发Windows Phone 7、iPhone及Android应用

[复制链接]

尚未签到

发表于 2015-5-13 11:16:51 | 显示全部楼层 |阅读模式
  编者按:在Windows Phone 7发布之后,移动开发领域除iPhone和Android之外季军即将明朗,越来越多的开发者开始向Windows Phone 7平台转移。本文为著名开发者赵劼为InfoQ撰写的一篇文章,详实记录了在近日举办的Modern .NET DDD Conference会议上,著名开发者Chris Hardy在他的演讲中展示了如何基于.NET/C#,开发面向Windows Phone 7,iPhone及Android三个平台的应用程序,以及其中的注意事项。
  首先Chris列举了三个平台上使用的工具及框架等周边环境:
[tr]操作系统[td]Windows[tr]开发工具[td]Visual Studio 2010[tr]设计工具[td]Expression Blend 4[tr]开发框架[td]Silverlight for WP[tr]社区情况[td]极好
Windows Phone 7iPhone(MonoTouch)Android(MonoDroid预览版)
Mac跨平台
MonoDevelopVS 2010 / MonoDevelop
Interface BuilderXML文件 / DroidDraw
Silverlight 3的超集Silverlight 3的超集
较好尚早
http://t0.gstatic.com/images?q=tbn:ANd9GcRjZnGF8ea-vlBJ3VQ7JFe9h_2vCGwWvNy9u5LxnNAefB_xD5Y&t=1&usg=__SWUBSRYH1yctYYKuul9exBVXzlI=
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相关方法处理二进制数据流。

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-66567-1-1.html 上篇帖子: Windows Phone 7 Tip (5) 下篇帖子: windows 7 64位下安装python-2.7.5.amd64.msi 时 installer 报错 2203
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表