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 七 作业 一 ...
随机推荐
- 构建自己的PHP框架(Twig模板引擎)
完整项目地址:https://github.com/Evai/Aier Twig 模板引擎 模版引擎 twig 的模板就是普通的文本文件,也不需要特别的扩展名,.html .htm .twig 都可以 ...
- IAA32过程调用保护规则注册
因为操作系统共享性质,所以,寄存器已成为各种处理或共享资源的处理.然后,该过程发生 当所谓的.假设呼叫者使用内部寄存器值.但这个寄存器的内容,很可能在该呼叫者的执行的过程中改变,用过程执行之前,对该寄 ...
- matplotlib简单的新手教程和动画
做数据分析,首先是要熟悉和理解数据,所以掌握一个趁手的可视化工具是很重要的,否则对数据连个主要的感性认识都没有,怎样进行下一步的design 点击打开链接 还有一个非常棒的资料 Matplotlib ...
- OpenSSL RSA加解密 (.Net公钥加密/ Linux端私钥解密)
要求在.Net端生成公钥私钥对. 然后在.Net端使用RSA公钥加密:在Linux端使用RSA私钥解密. 最初的尝试是:.Net端使用RSACryptoServiceProvider; linux端使 ...
- 关于JSP
JSP的本质 JSP本质上就是Servlet, 正常情况下, 它会在第一次被访问的时候被容器转化成Java代码, 然后再从Java代码编译成.class文件, 之后实际就和Servlet没区别了, 也 ...
- 第0001题 : 产生随机数(顺便读random模块官方文档)
看这个之前我准备先看一下random模块的官方文档... 在整个随机模块中, 最基础的就是random, 它产生一个 [0.0, 1.0)的浮点数. 这个模块下所有的函数实际上是绑定在一个叫做ran ...
- 查看 Linux 发行版本的名称以及版本号
查看LINUX发行版的名称及其版本号的命令: lsb_release -a cat /etc/redhat-release(针对redhat,Fedora)
- 微信小程序把玩(二十五)loading组件
原文:微信小程序把玩(二十五)loading组件 loading通常使用在请求网络数据时的一种方式,通过hidden属性设置显示与否 主要属性: wxml <!----> <butt ...
- Delphi7 时钟(使用了多个自定义组件)
http://download.csdn.net/detail/akof1314/3073289
- 《KVM虚拟化技术实战和原理解析》读书笔记(十几篇)
第一章和第二章 第一章 虚拟化和云计算 Saas(软件即服务):将已经部署好的软件作为一种服务来提供,比如:Google Docs, Google Apps Paas(平台即服务):将开发环境作为一种 ...