.NET(WinCE、WM)转Android开发——Xamarin和Smobiler对比
对比
|
WinCE |
Android |
|
|
行业场景 |
扫描分拣、车载、工控 |
扫描分拣、车载定位 |
|
开发语言 |
C++、C# |
Java/.NET(Smobiler) |
|
开发环境 |
Visual Studio |
Android Studio/ Visual Studio(Smobiler) |
|
硬件 |
平板、手持机 |
平板、手持机 |
行业方案
WinCE从1995年诞生至今,已有20多年的发展历史,行业成熟方案覆盖范围广,从车载、工控、手持机都有涉及,且方案成熟。
近些年,Android以后来居上的态势,逐渐渗透至各行业领域,硬件手持大厂也把产品线重心向Android手持迁移,基于Android的行业解决方案越来越成熟,WinCE的开发人才流失,在WinCE解决方案上吃老本的企业寻求转型。
如何转型
拍脑门,招Android人才!学Android开发!不管是哪种转型,都需要付出时间或者费用成本的代价。现有的WinCE人才就不能继续利用他们在编程+行业知识的综合优势,继续在Android平台发挥价值吗?——答案是:可以的。
目前有两款基于.NET的APP开发平台,都是基于.NET框架,在Visual Studio环境中进行开发,一款是国外开发的Xamarin,后被微软收购,但因为并非“纯”依赖.NET技术(开发人员还需要掌握Java、object-C等技术),学习门槛不低,所以普及起来仍有困难。
另外一款是国内石磨科技团队开发的Smobiler,“纯”.NET开发,不需要配置Java等开发环境,安装Smobiler Designer后便可在Visual Studio中进行开发了。

Smobiler开发界面
Xamarin VS Smobiler
Xamarin可进行游戏开发,画面精美,但伴随的是投入的成本和精力,与Xamarin不同的是,Smobiler更针对企业类型的应用开发。
企业类型的应用,例如MES、WMS、CRM、OA这类的系统,对界面和娱乐性要求不高,开发商更追求开发高效和应用稳定,Smobiler的开发方式和Winform一样,拖拽控件完成UI界面,开发人员可以把更多的精力放在业务逻辑代码的开发上。
在调用底层硬件上,Smobiler支持调用手机、手持的底层硬件,GPS、相机、扫描头、RFID、蓝牙等,包括但不限于这些底层的调用,都封装在Smobiler框架中,在开发时可直接调用。
Xamarin和Smobiler开发的应用对比图片:


左Xamarin-右Smobiler


左滑菜单 左Xamarin-右Smobiler


上Xamarin-下Smobiler
总结对比
|
Xamarin |
Smobiler |
|
|
iOS和Android版本 |
得分别开发Android、iOS |
一次开发可同时生成Android、iOS两个版本 |
|
技能 |
C#、Java、object-C |
C#或VB.NET |
|
环境配置 |
Visual Studio、Java |
Visual Studio |
|
.NET开发者的上手周期 |
1~2周 |
1天 |
综合下来,Xamarin比较全面,不仅可以开发企业应用,还可以开发游戏等娱乐性要求较高的APP,但缺点就是对于.NET开发人员来说,学习门槛较高,开发过程比较繁琐。
Smobiler专攻企业移动应用,是专门从事企业ERP系统、执行系统开发的开发商们(传统的PC端ERP系统、WinCE系统开发商)寻求移动开发转型的秘密武器。
延申阅读
.NET(C#)能开发出什么样的APP?盘点那些通过Smobiler开发的移动应用
如何使用.net开发一款小而美的O2O移动应用? ——“家庭小秘”APP介绍及采访记录
从一个点子到一个社区APP,是如何通过.NET实现的?——“文林物业系统”APP介绍及采访记录
.NET(WinCE、WM)转Android开发——Xamarin和Smobiler对比的更多相关文章
- [译]:Xamarin.Android开发入门——Hello,Android Multiscreen深入理解
原文链接:Hello, Android Multiscreen_DeepDive. 译文链接:Xamarin.Android开发入门--Hello,Android Multiscreen深入理解. 本 ...
- [译]:Xamarin.Android开发入门——Hello,Android深入理解
返回索引目录 原文链接:Hello, Android_DeepDive. 译文链接:Xamarin.Android开发入门--Hello,Android深入理解 本部分介绍利用Xamarin开发And ...
- [译]:Xamarin.Android开发入门——Hello,Android快速上手
返回索引目录 原文链接:Hello, Android_Quickstart. 译文链接:Xamarin.Android开发入门--Hello,Android快速上手 本部分介绍利用Xamarin开发A ...
- Xamarin.Android开发实践(九)
Xamarin.Android之ActionBar与菜单 一.选项卡 如今很多应用都会使用碎片以便在同一个活动中能够显示多个不同的视图.在 Android 3.0 以上的版本中,我们已经可以使用Act ...
- Xamarin Android开发实战(上册)大学霸内部资料
Xamarin Android开发实战(上册)大学霸内部资料 试读文档下载地址:http://pan.baidu.com/s/1jGEHhhO 密码:vcfm 介绍: 本教程是国内唯一的Xamar ...
- Xamarin.Android开发实践(五)
原文:Xamarin.Android开发实践(五) 一.服务的生命周期 服务与活动一样,在它的整个生命周期中存在着一些事件,下图可以很好解释整个过程以及涉及到的方法: 在真实的使用中,Service来 ...
- Xamarin.Android开发实践(四)
原文:Xamarin.Android开发实践(四) Xamarin.Android下获取与解析JSON 一.新建项目 1.新建一个Android项目,并命名为为NetJsonList 2.右击引用,选 ...
- Xamarin.Android开发实践(三)
原文:Xamarin.Android开发实践(三) 一.前言 用过Android手机的人一定会发现一种现象,当你把一个应用置于后台后,一段时间之后在打开就会发现应用重新打开了,但是之前的相关的数据却没 ...
- Xamarin.Android开发实践(二)
原文:Xamarin.Android开发实践(二) 一.准备 开始学习本教程前必须先完成该教程http://www.cnblogs.com/yaozhenfa/p/xamarin_android_qu ...
随机推荐
- Python中Json对象处理的jsonpath-rw
这两天在写一个爬虫,需要从网站返回的json数据提取一些有用的数据. 向url发起请求,返回的是response,在python3中,response.content是二进制bytes类型的,需要用d ...
- linux下svn(subversion)服务端添加工程及配置权限
linux下svn(subversion)服务端添加工程及配置权限 转载请注明源地址:http://www.cnblogs.com/funnyzpc/p/9010507.html 此篇我只是将所做过的 ...
- 通过jdbc完成单表的curd操作以及对JDBCUtils的封装
概述:jdbc是oracle公司制定的一套规范(一套接口),驱动是jdbc的实现类,由数据库厂商提供.所以我们可以通过一套规范实现对不同的数据库操作(多态) jdbc的作用:连接数据库,发送sql语句 ...
- Python学习 Part5:输入输出
Python学习 Part5:输入输出 1. 格式化输出 三种输出值的方法: 表达式语句 print()函数 使用文件对象的write()方法 两种方式格式化输出: 由自己处理整个字符串,通过使用字符 ...
- 如何在Visual Studio和CodeBlocks中反编译C++代码
在Visual Studio中 第一步:打断点 第二步:Debug->Star Debugging 或直接按"F5" 第三步:Debug->Windows->Di ...
- Java 8 基础API的一些小的该进
Java8是一个较大改变的版本,包含了API和库方面的修正,它还对我们常用的API进行很多微小的调整, 下面我会带你了解字符串.集合.注解等新方法. 字符串 经常会遇到这样一种情况, 需要将一组字符串 ...
- 【Java入门提高篇】Java集合类详解(一)
今天来看看Java里的一个大家伙,那就是集合. 集合嘛,就跟它的名字那样,是一群人多势众的家伙,如果你学过高数,没错,就跟里面说的集合是一个概念,就是一堆对象的集合体.集合就是用来存放和管理其他类对象 ...
- (二)Linux下的crontab定时执行任务命令详解
在LINUX中,周期执行的任务一般由cron这个守护进程来处理[ps -ef|grep cron].cron读取一个或多个配置文件,这些配置文件中包含了命令行及其调用时间.cron的配置文件称为&qu ...
- 系列博文-Three.js入门指南(张雯莉)-网格 setInterval方法 requestAnimationFrame方法 使用stat.js记录FPS
第6章 动画 在本章之前,所有画面都是静止的,本章将介绍如果使用Three.js进行动态画面的渲染.此外,将会介绍一个Three.js作者写的另外一个库,用来观测每秒帧数(FPS). CSS3动画那么 ...
- ConcurrentHashMap简介
ConcurrentHashMap为了高并发而设计,相比于HashTable和HashMap有更多优势.HashTable是同步的,在多线程环境下,能保证程序执行的正确性,每次同步执行的时候都要锁住整 ...