速来报名!AICon北京站鸿蒙专场~ 了解详情
写点什么

基于.NET/C#开发跨平台 Windows Phone 7、iPhone 及 Android 应用程序

  • 2010-10-28
  • 本文字数:1850 字

    阅读完需:约 6 分钟

在近日举办的 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 的超集 社区情况 极好 较好 尚早 MonoTouch 是 Novell 公司推出的基于 Mono 的 iOS 应用程序开发套件,并可以将应用程序发布至苹果应用程序商店。Mono 是一款基于 ECMA 标准开发的.NET 运行环境,使用 JIT(Just-in-Time)编译方式来执行 IL 代码,不过由于 iOS 设备的限制,MonoTouch 使用了 AOT(Ahead-of-Time)编译方式,直接将原生代码部署至 iOS 设备(iPhone,iPhone 4,iPad)上。MonoTouch 还提供了一个 Linker,它会将 SDK 及程序代码中真正使用到的部分静态链接至应用程序中,从而削减了应用程序的体积。使用 MonoTouch 开发出来的应用程序可以在 iOS 设备上独立运行,这是因为 MonoTouch 会将一个运行时放入应用程序内部的原因。据 Chris 称,这会给应用程序的体积带来大约 6MB 的增长。

使用 MonoTouch,.NET/C#程序员可以利用现有的知识进行开发,能够使用反射、泛型、LINQ、Lambda 等各种高级的.NET/C#特性。面向原生 API 的绑定存放在 monotouch.dll 中的 MonoTouch 命名空间下,并与 CocoaTouch(即用于 iOS 开发的原生 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 及 WP7 上的游戏向 iOS 上的移植工作。不过在复用时并不能共享二进制文件,而必须针对不同的平台重新编译代码。

在 UI 部分,三个平台各有原生的解决方案。除了 WP7 以外,iPhone 和 Android 分别使用 MonoTouch 及 MonoDroid 提供的原生 API 的 C#绑定进行开发。例如,MonoTouch 进行 UI 开发时使用的是 iOS 标准的应用程序的架构,包括其 MVC 驱动方式。开发人员可以通过 Interface Builder 编辑 XIB 文件,MonoTouch 会自动根据 XIB 的内容在局部类中生成 C#代码,所有的 outlet,action 等元素都会在代码中得到体现。

Chris 也提到了其他一些必须针对平台编写特定代码的地方,例如在文件的存储上,MonoTouch 和 MonoDroid 可以直接像本地路径写入数据,而在 WP7 上则必须使用独立存储:

复制代码
void SaveLocal(string data)
{
<strong>#if (MonoTouch || MonoDroid)</strong>
File.WriteAllText(_localPath, data);
<strong>#elif WINDOWS_PHONE</strong>
using (var appStorage =
IsolatedStorageFile.GetUserStoreForApplication())
{
var file = appStorage.OpenFile(_localPath, FileMode.Create);
FileExtension.WriteAllText(file, data);
}
<strong>#endif</strong>
}

同理,使用 WebClient 获取数据时,在 MonoTouch 及 MonoDroid 上可以直接调用 DownloadFile 相关方法来下载文件,而在 WP7 中,则需要使用 OpenRead 相关方法处理二进制数据流。

Chris 在演讲中演示了一个跨平台的 Twitter 应用程序的开发过程,您可以在他的博客上访问WP 7 和MonoDroid 的开发录像,以及完整的幻灯片内容。Chris 与他人还合著了一本讲解 MonoTouch 开发的书籍。此外,在国内技术社区也有关于 MonoTouch 的内容,如老赵在博客上描述了在虚拟机中安装 Mac OSX 雪豹操作系统以及利用 Visual Studio 开发 MonoTouch 应用程序的方式(上)。

2010-10-28 02:545915
用户头像

发布了 157 篇内容, 共 54.9 次阅读, 收获喜欢 6 次。

关注

评论

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

新书上市|一位家长的忠告:长大后不成才的孩子,父母都忽视了这个点!

图灵教育

育儿 教育 脑科学 基因

ApacheCon Asia 2022 精彩回顾 | 如何让更多人从大数据中获益?

白鲸开源

工赋开发者社区 | 从零开始的新跨平台浏览器:Ladybird 正式起飞

工赋开发者社区

QA如何高效参与技术设计评审

转转技术团队

质量管理 测试 技术设计质量把控

提高数据可视化效果的五个原则

博文视点Broadview

漏洞管理流程

SEAL安全

漏洞修复 漏洞管理 企业号九月金秋榜

中国的时区为什么是Asia/Shanghai,而不是Asia/Beijing?

Sher10ck

TiFlash 源码阅读(九)TiFlash 中常用算子的设计与实现

PingCAP

#TiDB TiDB 源码解读

融云云盘,不止于存储

融云 RongCloud

云盘 云存储

限时开源!阿里P8架构师手写Spring全家桶核心知识学习笔记

了不起的程序猿

Java spring 编程 程序员 Spring全家桶

年轻一代程序员:社牛、不卷、玩开源

腾源会

开源 腾源会

聊聊数据库主键那点事儿

Steven

MobTech短信验证ApiCloud端SDK

MobTech袤博科技

API 短信验证

技术分享| 分布式系统中服务注册发现组件的原理及比较

anyRTC开发者

音视频 分布式系统

DataLeap的Catalog系统近实时消息同步能力优化

字节跳动数据平台

大数据 kafka 数据治理 实时同步 数据研发

自学Java和java培训哪个好就业

小谷哥

Java之static关键字的应用【工具类、代码块和单例】

Fire_Shield

static 9月月更 实际应用

SQL为什么历经半个世纪却经久不衰?

雨果

sql

易观千帆 | 2022年7月银行APP活跃用户规模盘点:江浙沪城商行表现亮眼

易观分析

App 金融 银行

如何利用OpenHarmony ArkUI的Canvas组件实现涂鸦功能?

OpenHarmony开发者

OpenHarmony

过等保是浪费钱吗?一定要过等保吗?

行云管家

等级保护 过等保 等保2.0

如何进行 Apache Doris 集群 Docker 快速部署

SelectDB

数据库 Doris Docker 镜像 安装 & 部署 企业号九月金秋榜

新书上市|一位家长的忠告:长大后不成才的孩子,父母都忽视了这个点!

图灵社区

育儿 教育 脑科学 基因

10CSS动画案例,学会了惊艳所有人

大师兄

CSS 前端 9月月更

马蹄链Dapp系统开发(智能合约)

薇電13242772558

区块链追溯:让冷链物流“热”起来!

旺链科技

区块链 产业区块链 企业号九月金秋榜 冷链物流

面了个阿里拿38k出来的,让我见识到了基础顶端

程序知音

Java java面试 后端技术 秋招 八股文

常见堡垒机小知识汇总-行云管家

行云管家

安全 IT 堡垒机 IT运维

【微信小程序】页面导航详解

陈橘又青

9月月更

2022年8月中国网约车领域月度观察

易观分析

网约车

信用卡市场发展洞察:浦大喜奔APP探索大零售融合经营体系

易观分析

金融 银行 信用卡

基于.NET/C#开发跨平台Windows Phone 7、iPhone及Android应用程序_.NET_赵劼_InfoQ精选文章