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 七 作业 一 ...
随机推荐
- hdoj 5087 Revenge of LIS II 【第二长单调递增子】
称号:hdoj 5087 Revenge of LIS II 题意:非常easy,给你一个序列,让你求第二长单调递增子序列. 分析:事实上非常easy.不知道比赛的时候为什么那么多了判掉了. 我们用O ...
- WPF应用程序内嵌网页
原文:WPF应用程序内嵌网页 版权声明:本文为博主原创文章,转载请注明出处. https://blog.csdn.net/shaynerain/article/details/78160984 WPF ...
- cocos2d-x 3.2 它 2048 —— 第三
***************************************转载请注明出处:http://blog.csdn.net/lttree************************** ...
- spring boot 集成mybatis连接oracle数据库
1. POM文件添加依赖 <!-- Mybatis --> <dependency> <groupId>org.mybatis.spring.boot</gr ...
- 图形化界面安装oracle报错Could not execute auto check for display colors using command /usr/bin/xdpyinfo. Check if the DISPLAY variable is set.
问题描述: 在Linux + oracle 安装时,采有root 帐号登录x-windows 界面,然后 $su oracle 登录录安装Oracle 报以下错误: >>> Coul ...
- Ajax请求小结
参数说明 ajax请求异步刷新页面=把需要异步刷新的页面单独写成一个.cshtml进行操作$.ajax({}); -------ajax方法.type: ------- 类型,此处为“POST” 还有 ...
- MVC基架生成的Detele视图
@model MyMusicStore.Models.Album @{ ViewBag.Title = "Delete"; } <h2>Delete</h ...
- WMWaire使用FreeNAS硬盘挂载、Raid0
FreeNAS硬盘挂载.Raid0 发表于2012 年 03 月 28 日由admin 创建成功,FreeBSD的Hardware显示状态 今天,我们将在VMware工具的帮助下,学习“FreeNAS ...
- Gradle离线配置
原文:Gradle离线配置 1. 先在Gradle官网下载最新的离线zip压缩包. https://gradle.org/ 2. 将下载的zip压缩包,保存到本地磁盘下的目录中. 3. 修改(grad ...
- apache本地服务器的配置流程
安装Apache 一.目的: 1. 能够有一个测试的服务器,不是所有的特殊网络服务都能找到免费的! 二.为什么是 "Apache" 1. 使用最广的 Web 服务器 2. Mac自 ...