Create Native iOS, Android,
Mac and Windows apps in C#.

官方网站:http://xamarin.com/

使用武器

Run a C# app, get a C# shirt. Get yours now at xamarin.com/sharp-shirt

Xamarin 是由早期的Mono项目演变而来,原本是在Linux上执行C#程序的一个开放原始码项目。后来陆续发表支持iOS的Mono Touch framework以及Mono For Android Framework。因此它在市场上并不是一个新的产品。2011年,原本在Novell的Mono项目团队独立成立一家公司,正式将名称改为Xamarin。

Xamarin是一个行动App开发平台,提供跨平台开发能力,开发人员透过Xamarin开发工具与程序语言,即可开发出iOS、Android 与Windows 等平台的原生(Native) App 应用程序,不须个别使用各平台的开发工具与程序语言,不只是「write-once, run everywhere」的跨平台解决方案,更可达到 「write your code once, and present native UIs on each platform.」之跨平台开发能力。由于Xamarin可直接产生各平台之原生App应用程序,相较于其他跨平台方案,藉由Xamarin所开发出来的App应用程序,更能发挥出各行动平台的功能与特性,且具有最佳的执行效能。

以Xamarin开发App应用程序的方法概述如下 : 开发人员在单一开发环境中即能管理、撰写程序与测试各行动平台的App应用程序,可以在同一个方案中统合所有平台的项目,包括iOS、Android、Windows Phone与Windows 8 Store App。

Xamarin 开发平台主要包含以下4大部分 :
开发程序语言:Xamarin 以C# 作为开发程序语言,开发人员直接撰写C# 即可进行开发。
整合开发工具:Xamarin 提供整合开发工具 (IDE) Xamarin Studio,开发人员可直接于此工具上进行开发、除错、测试与仿真 等作业。Xamarin也针对Microsoft Visual Studio提供附挂套件 (Plug-In)。
跨平台开发框架: (Mono .Net Framework)Xamarin 提供开发框架,支持跨平台的功能实作 (cross-platform implementation)。
编译程序: Xamarin 具有各平台的编译程序,可直接编译为 iOS 与 Android 平台的机器码。

五大特色
快速建立原生(Native)的行动装置应用程序:
透过 C#亲和且功能齐全的语言特性,搭配.NET Framework 的 Base Class Library(BCL)的便利性,让开发人员能以最高的生产力开发行动装置应用程序。目前 Mono 支持 C# 5.0 的语言规范,开发人员可以用Lambda Expression、LINQ 甚至是 Async/Await 的异步处理。
程序代码共享:
现行由 Objective-C 所开发的 iOS 应用程序以及由 Java 所开发的 Android 应用程序,无法达到程序代码共享。Xamarin 则是采用C#撰写,因此透过良好的设计,可以在不同平台间共享商业逻辑以及数据存取等程序,毋需重新撰写。除了省下重新撰写的时间成本外,对于版本维护及一致性也有相当大的帮助。
与 Visual Studio 整合:
Xamarin 提供了 Visual Studio 2010/2012 的 plug-in,让原本就熟悉 Visual Studio 的开发者不用再熟悉其他的开发工具。在建立项目时,可以直接建立 iOS 及 Android 的项目模板。开发团队也可以将 iOS 及Android 的程序代码纳入到 ALM,使用 Team Foundation Server 进行版本及建置的管理。
确保第一时间更新:
Xamarin 对于 iOS 及 Android 的版本更新不遗余力,在 iOS SDK 5.0, 6.0 以 6.1, 都与 Apple 在同一天发表对应的 Framework 版本。7.0 也承诺会在同一天发表。而 Android 方面, Xamarin 甚至将 Android 的原始码, 从原本的 Java 改由 C#重新撰写,而且效能也得到大幅的提升。
原生的应用程序效能:
Xamarin 针对iOS及Android平台开发编译程序。将C#程序代码直接编译成ARM CPU的机器码。因此效能将与原生模式开发的应用程序相比,没有不同。而在Android 系统上,由于Xamarin 不使用Android的Dalvik 虚拟机,改为采用CLR,经测试其效能更甚于原生的应用程序。

下表为目前在行动平台上开发App应用程序的方法比较

Xamarin支持MVC设计模式,开发人员可以设计哪些是与用户接口相关的部份,并将与平台无关的商业逻辑、服务存取、数据存取以及数据层从接口抽离出来,依此为依据将应用程序区分为两部份, 分别为core以及user interface,有效达到程序代码共享,让设计架构更严谨。

来源:http://xamarin.csdn.net/module/btc/xamarin/product#id3

Xamarin简介与Xamarin支持MVC设计模式的更多相关文章

  1. Xamarin简介

    简介 简单来说,Xamarin提供了使用C#完成iOS,Android和Windows Phone三个移动平台开发的可能性Xamarin包括Xamarin.Andriod.Xamarin.IOS.Xa ...

  2. Django框架(一):MVC设计模式、Django简介

    1. MVC设计模式 MVC设计模式:Model-View-Controller简写. 最早由TrygveReenskaug在1978年提出,是施乐帕罗奥多研究中心(Xerox PARC)在20世纪8 ...

  3. Java Web开发中MVC设计模式简介

    一.有关Java Web与MVC设计模式 学习过基本Java Web开发的人都已经了解了如何编写基本的Servlet,如何编写jsp及如何更新浏览器中显示的内容.但是我们之前自己编写的应用一般存在无条 ...

  4. MVC设计模式简介

    刚刚学习了MVC相关知识,在这里进行一下总结MVC设计模式提高了Java开发中的代码可读性,提高了开发效率,实乃开发利器 1在MVC中由客户端发送一个带参数的请求,经过servlet处理后做出相应的处 ...

  5. 第80节:Java中的MVC设计模式

    第80节:Java中的MVC设计模式 前言 了解java中的mvc模式.复习以及回顾! 事务,设置自动连接提交关闭. setAutoCommit(false); conn.commit(); conn ...

  6. AngularJS_01之基础概述、设计原则及MVC设计模式

    1.AngularJS: 开源的JS框架,用来开发单一页面应用,以及数据操作频繁的场景:2.设计原则: ①YAGNI原则:You Aren't Gonna Need It! 不要写不需要的代码! ②K ...

  7. 传智播客JavaWeb day07、day08-自定义标签(传统标签和简单标签)、mvc设计模式、用户注册登录注销

    第七天的课程主要是讲了自定义标签.简单介绍了mvc设计模式.然后做了案例 1. 自定义标签 1.1 为什么要有自定义标签 前面所说的EL.JSTL等技术都是为了提高jsp的可读性.可维护性.方便性而取 ...

  8. javacript中的mvc设计模式

    以下内容为原创翻译,翻译不对的地方还请原谅,凑合着看吧. 原文网址是: 来源:http://www.alexatnet.com/articles/model-view-controller-mvc-j ...

  9. 【原创翻译】认识MVC设计模式:web应用开发的基础(实际编码篇)

    原文地址:http://www.larryullman.com/2009/10/15/understanding-mvc-part-3/ 全系列INDEX [原创翻译]认识MVC设计模式:web应用开 ...

随机推荐

  1. kmalloc、vmalloc、malloc的区别

    简单的说: kmalloc和vmalloc是分配的是内核的内存,malloc分配的是用户的内存 kmalloc保证分配的内存在物理上是连续的,vmalloc保证的是在虚拟地址空间上的连续,malloc ...

  2. 进程已经被attach debug,如何解除其debug权限?

    今天碰到一个问题,详情: 进程A创建了进程B,并且进程A在创建进程B的时候指定了debug权限: 我的进程C启动了一个Hook,然后系统将我的X dll载入到进程B中: 此时,用visual stud ...

  3. MPEG 编解码相关资料收集

    以下是我搜集的关于MPEG1/2的编解码相关的资料: (注:mpge帧内编码是基于jpeg编码的,所以请务必先理解jpeg的编解码原理.) 1:Introduction to MPEG 2 Video ...

  4. [Unity3D]Unity3D游戏开发之伤害数值显示

    大家好,我是秦元培,欢迎大家关注我的博客,我的博客地址是blog.csdn.net/qinyuanpei.众所周知,在RPG游戏策划中最为重要的一个环节是数值策划.数值策划是一个关于游戏平衡方面的概念 ...

  5. 《从零开始学Swift》学习笔记(Day 41)——类的继承

    原创文章,欢迎转载.转载请注明:关东升的博客 Swift中的继承只能发生在类上,不能发生在枚举和结构体上.一个类可以继承另一个类的方法.属性.下标等特征,当一个类继承其他类时,继承类叫子类,被继承类叫 ...

  6. javascript获取客户端默认打印机

    JS <script language="javascript"> function startRequest() { var oShell = new ActiveX ...

  7. 截取字符(pos,copy,Leftstr,MidStr,RightStr)以逗号为准把字符串拆分,判断字符串是否有数字、字母(大小写), 去掉字符串空格

    1.copy(a,b,c) 举个例子: str := “123456”;str1 := Copy(Str,2,3);结果就是 str1 等于 234.Copy有3个参数,第一个是你要处理的字符串,第二 ...

  8. alert弹窗方法1

    1.代码 <!DOCTYPE html> <html lang="zh-CN"> <head> <meta http-equiv=&quo ...

  9. Storm 提交任务过程详解 (不对地方麻烦指正)

    1.使用的是Storm中自带的一个测试jar包 提交下这任务到storm中去 storm jar /usr/local/app/storm/examples/storm-starter/storm-s ...

  10. SQLServer中exists和except用法

    一.exists 1.1 说明 EXISTS(包括 NOT EXISTS)子句的返回值是一个BOOL值.EXISTS内部有一个子查询语句(SELECT ... FROM...),我将其称为EXIST的 ...