.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 ...
随机推荐
- 为什么在JDBC要使用Class.forName();这句话
为什么在调用JDBC的时候,我们总要写这句话:Class.forName("驱动类");解释:在JDBC编程中一般有以下几个步骤:1>加载驱动,也就是Class.forNam ...
- build.gradle使用gradle.property中定义的字段及乱码问题的解决
gradle.property文件可以用来定义一些字段 而这些字段可以被build.gradle文件引用到 例如:给大家贴出来一个gradle.property文件 # Project-wide Gr ...
- Python_sqlite3
import sqlite3 #导入模块 conn = sqlite3.connect('example.db') #连接数据库 c = conn.cursor() #创建表 c.execute('' ...
- 微信企业向用户银行卡付款API开发详解(PHP)
最近在实现微信企业向用户银行卡付款时遇到了一些问题,发现官方文档说的太笼统,走了不少弯路,想要在此记录,希望可以帮到大家. 案例:企业付款到银行卡 微信接口链接:https://api.mch. ...
- 0516js综合练习
<!DOCTYPE html><html> <head> <meta charset="UTF-8"> ...
- 使用 GNU profiler 来提高代码运行速度
各种软件对于性能的需求可能会有很大的区别,但是很多应用程序都有非常严格的性能需求,这一点并不奇怪.电影播放器就是一个很好的例子:如果一个电影播放器只能以所需要速度的 75% 来播放电影,那么它几乎就没 ...
- PAT1027:Colors In Mars
1027. Colors in Mars (20) 时间限制 400 ms 内存限制 65536 kB 代码长度限制 16000 B 判题程序 Standard 作者 CHEN, Yue People ...
- Alibaba(阿里) RocketMQ入门实例
摘自:码友18年(www.mayou18.com) what is rocketMQ? RocketMQ作为一款分布式的消息中间件(阿里的说法是不遵循任何规范的,所以不能完全用JMS的那一套东西来看它 ...
- RPC详解
RPC(Remote Procedure Call),即远程过程调用,是一个分布式系统间通信的必备技术,本文体系性地介绍了 RPC 包含的核心概念和技术,希望读者读完文章,一提到 RPC,脑中不是零碎 ...
- [ Java面试题 ]算法篇
1.堆和栈在内存中的区别是什么? 概念: 栈(stack)是为执行线程留出的内存空间.当函数被调用的时候,栈顶为局部变量和一些 bookkeeping 数据预留块.当函数执行完毕,块就没有用了,可能在 ...