smobiler介绍(二)
类似开发WinForm的方式,使用C#开发Android和IOS的移动应用?听起来感觉不可思议,那么Smobiler平台到底是如何实现的呢,这里给大家介绍一下。
客户端
Smobiler分为两种客户端,一种是开发版,一种是打包版
开发版:顾名思义,就是用来做开发时候的版本,在上面一章节中,大家其实都用过了,就是扫描服务端的二维码,添加服务端后,就可以进行开发调试了。这个客户端是官方的应用,可以在如下地址下载:https://www.smobiler.com/download.html
IOS对应苹果客户端,Android对应安卓客户端,内测版本是代表还没有正式发布的版本,比如上面,正式版本是4.5,内测版本是4.6,内测版本官方说是每周更新,和内部开发保持一致。所以如果有一些Bug类的,内测版本很快能解决,不用等正式版了。下面是开发版的样子。
打包版:打包版的意思就是把生成自己独立可安装的APP,可以自定义应用名称,应用图标,企业用户还可以自定义启动页面,关于页等等。可以分别打包Android和IOS的,不过IOS的是要去买苹果的开发者账号的,这个具体有文档,去看官方的文档吧。 https://www.smobiler.com/yunapp.aspx#应用打包
另外对于客户端的可扩展性,Smobiler推出了插件开发,就是可以开发原生的Android或者IOS的功能,然后集成到Smobiler的客户端里,这个方便了一些需要个性化实现的功能。还是很方便的,可以看文档 https://www.smobiler.com/guide/plugin.aspx
服务端
Smobiler的服务端其实就是一个完整的.Net Framework,所以你需要实现Socket、WebService、WCF,以及调用数据库接口,甚至COM接口都是可以的,只要是.Net Framework支持的,Smobiler都支持。另外如果你需要修改界面和代码,不需要修改客户端,只需要在服务端上修改,重新布置就可以了。另外如果你关掉客户端,再重新打开,那么你还会回到上次你操作的地方,而且数据也不会丢失,你可能会说,这就是一个Web吧,其实不是,因为客户端是原生的,另外如果是Web,都是无状态的,但是Smobiler的界面是有状态的。所以它不是一个Web。那么它是什么呢?
你可以这么理解,一个原生展现的客户端 + 类似于WebForm+WinForm结合体的服务端。这样来理解就简单多了。客户端只是一个展现层,把客户端上输入或者操作通过socket与发送给服务端做处理,服务端把界面和业务逻辑通过socket发送给客户端显示。所以服务端缓存和客户端的数据和状态,这也解释了为什么关闭客户端,还能回到上一次操作的地方。因为你的数据在服务端。另外也解释了为什么修改业务和界面,只需要修改服务端即可。总结来说:SmobilerDesigner通过实现.NET的component组件方式,借助Visual Studio集成开发环境来开发移动应用。SmobilerClient是通用的框架客户端,使用自有的stml协议实现客户端的原生控件渲染和事件。
这种方式可能有人说好,有人说不好,不过考虑开发速度,开发成本,开发门槛(比如一个只会c#的简单开发的人,可以很快开发出一个应用出来,不用去学习Android或者IOS的复杂的知道,甚至也不用学习webapi这种接口,这就产生了价值)。所以Smobiler也提供了一些开源的产品,比如SmoONE是面向OA的,SmoSEC是面向设备管理的,SmoWMS是面向仓库管理的,这些开源的项目可以拿来修修改改就可以上手了,进一步降低使用门槛。
smobiler介绍(二)的更多相关文章
- Lucene.Net 2.3.1开发介绍 —— 二、分词(六)
原文:Lucene.Net 2.3.1开发介绍 -- 二.分词(六) Lucene.Net的上一个版本是2.1,而在2.3.1版本中才引入了Next(Token)方法重载,而ReusableStrin ...
- Lucene.Net 2.3.1开发介绍 —— 二、分词(五)
原文:Lucene.Net 2.3.1开发介绍 -- 二.分词(五) 2.1.3 二元分词 上一节通过变换查询表达式满足了需求,但是在实际应用中,如果那样查询,会出现另外一个问题,因为,那样搜索,是只 ...
- Lucene.Net 2.3.1开发介绍 —— 二、分词(三)
原文:Lucene.Net 2.3.1开发介绍 -- 二.分词(三) 1.3 分词器结构 1.3.1 分词器整体结构 从1.2节的分析,终于做到了管中窥豹,现在在Lucene.Net项目中添加一个类关 ...
- Lucene.Net 2.3.1开发介绍 —— 二、分词(四)
原文:Lucene.Net 2.3.1开发介绍 -- 二.分词(四) 2.1.2 可以使用的内置分词 简单的分词方式并不能满足需求.前文说过Lucene.Net内置分词中StandardAnalyze ...
- Lucene.Net 2.3.1开发介绍 —— 二、分词(二)
原文:Lucene.Net 2.3.1开发介绍 -- 二.分词(二) 1.2.分词的过程 1.2.1.分词器工作的过程 内置的分词器效果都不好,那怎么办?只能自己写了!在写之前当然是要先看看内置的分词 ...
- Lucene.Net 2.3.1开发介绍 —— 二、分词(一)
原文:Lucene.Net 2.3.1开发介绍 -- 二.分词(一) Lucene.Net中,分词是核心库之一,当然,也可以将它独立出来.目前Lucene.Net的分词库很不完善,实际应用价值不高.唯 ...
- {Django基础十之Form和ModelForm组件}一 Form介绍 二 Form常用字段和插件 三 From所有内置字段 四 字段校验 五 Hook钩子方法 六 进阶补充 七 ModelForm
Django基础十之Form和ModelForm组件 本节目录 一 Form介绍 二 Form常用字段和插件 三 From所有内置字段 四 字段校验 五 Hook钩子方法 六 进阶补充 七 Model ...
- MySQL之多表查询一 介绍 二 多表连接查询 三 符合条件连接查询 四 子查询 五 综合练习
MySQL之多表查询 阅读目录 一 介绍 二 多表连接查询 三 符合条件连接查询 四 子查询 五 综合练习 一 介绍 本节主题 多表连接查询 复合条件连接查询 子查询 首先说一下,我们写项目一般都会建 ...
- MySQL行(记录)的详细操作一 介绍 二 插入数据INSERT 三 更新数据UPDATE 四 删除数据DELETE 五 查询数据SELECT 六 权限管理
MySQL行(记录)的详细操作 阅读目录 一 介绍 二 插入数据INSERT 三 更新数据UPDATE 四 删除数据DELETE 五 查询数据SELECT 六 权限管理 一 介绍 MySQL数据操作: ...
- {MySQL完整性约束}一 介绍 二 not null与default 三 unique 四 primary key 五 auto_increment 六 foreign key 七 作业
MySQL完整性约束 阅读目录 一 介绍 二 not null与default 三 unique 四 primary key 五 auto_increment 六 foreign key 七 作业 一 ...
随机推荐
- 几种常见RuntimeException
一般面试java Exception(runtimeException )是个问题必须要问 常见的异常上市45种,它的基本要求.许多其他....需要注意的积累 常见的几种例如以下: NullP ...
- python3 基本使用多线程
#coding=utf-8 import threading #进口threading from time import sleep import time def task1(): print (& ...
- 从零开始学习 asp.net core 2.1 web api 后端api基础框架(一)-环境介绍
原文:从零开始学习 asp.net core 2.1 web api 后端api基础框架(一)-环境介绍 版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.ne ...
- ThreadPoolExecutor原理和使用
大家先从ThreadPoolExecutor的整体流程入手: 针对ThreadPoolExecutor代码.我们来看下execute方法: public void execute(Runnable c ...
- TASM 5.0 安装及使用教程
安装TASM 5.0很简单,您只需要下载本站[相关工具]中的"TASM50.zip"文件,解压后在Windows9x/NT下执行"INSTALL.EXE"即可开 ...
- Linux学习之“fork函数”
n返回值: fork函数调用一次,但是返回两次:在子进程中返回0,在父进程中返回子进程ID,出错返回-1.通过返回值,可以确定是在父进程还是子进程中. n子进程和父进程继续执行fork调用之后的指令. ...
- 深度学习概述教程--Deep Learning Overview
引言 深度学习,即Deep Learning,是一种学习算法(Learning algorithm),亦是人工智能领域的一个重要分支.从快速发展到实际应用,短短几年时间里, ...
- ADB 基础命令使用
1.adb shell(>=2个设备显示:error: more than one device/emulator,仅连接一个设备可用) adb -d shell 只运行在真实设备中 adb - ...
- 零元学Expression Blend 4 - Chapter 33 简单轻松的学会如何使用Visual States(下)
原文:零元学Expression Blend 4 - Chapter 33 简单轻松的学会如何使用Visual States(下) 上篇提到了Visual State Manager中文翻译为视觉状态 ...
- sql语句查询重复值
select * from user where name in (select name from user group by name having count(*)>1)