TMS Xdata Server
Xdata 在TMS中扮演的桥的角色,一年前仔细看过TMS 的源码,当时对流程很清晰,随着时间慢慢的过去,现在该忘记的都忘记了。所以用此文章来记录自己对Xdata还剩下的一点点的记忆...
光有xdate是不能工作的,xdata的底层走的是sparkle,sparkle可以走indy,httpsys,或者其他通讯协议。具体参看下图(字写得不好,不要吐槽):
其中客户端可以使用xdata的客户端,同样也可以使用标准的http,https.进行访问。
关于数据加密和权限的问题,其实作者早就设计好了,在Sparkle层或者xdata Server都有,不过xdata Server层的用户密码访问是脱离掉Sparkle的,其实Sparkle层的用户账号和密码和权限接口已经开放,我不知道为什么xdata还要另外在做一套。关于ORM的设置我这里就不说了。
这里主要讲解下官网的Xdata 的Server服务。
1:初始化XdataServer,XdataServer层决定了Http,Https访问时候的一级地址。
其中BaseUrl为Server的一级地址。D
Dispatcher为使用底层sparkle通讯的组件。
ModelName这个是模型的名字,对应了后面Server定义时候的模型名。
2: 设置xdata层的用户名和密码。
procedure TDataModule1.XDataServer1ModuleCreate(Sender: TObject; Module:
TXDataServerModule);
begin
Module.UserName := 'admin';
Module.Password := '123456';
end;
2: 创建一个服务端接口以及服务类
A): 服务接口创建
[ServiceContract]
[Model('System')] //这里要对应xdata modelname的名字
[URIPathSegment('Demo')] //这里对应于http访问二级路径名
ISystemService = interface(IInvokable)
['{99BD59AA-8978-4D0F-8C04-65F8F05F5363}']
[HttpGet] function Sum( A, B: double) : double;
end;
initialization
RegisterServiceType(TypeInfo(ISystemService)); //不要忘记注册,虽然进入是个空函数,好像经过测试必不可少
B): 服务类创建
type
[ServiceImplementation]
TSystemService = class(TInterfacedObject, ISystemService)
public
function Sum( A, B: double) : double;
end; function TSystemService.Sum(A, B: double): double;
begin
Result := A+B;
end; initialization
RegisterServiceType(TSystemService); end.
3: 客户端访问
FClientSystem := TXDataClient.Create(TXDataAureliusModel.Get('System')); //
FClientSystem.Uri := 'http://localhost:89/Test/Demo'; //
FClientSystem.UserName := 'admin';
FClientSystem.Password := '123456';
double value := FClientSystem.Sum(8,15);
客户段中
TXDataAureliusModel.Get('System')其中'System'对应模型名字,如果不对应,那么后面访问的时候会出现找不到地址。
FClientSystem.Uri := 'http://localhost:89/Test/Demo'; uri的地址是组合出来的,
A): localhost:89/Test为XdataServer组件中BaseUrl的地址。
B): Demo是定义接口的时候,[URIPathSegment('Demo')]里面Demo的数据。你也可以定义其它的地址。
用户的密码和账号要对应Model初始化时候的账号和密码。
很简单吧,如果是普通Http的,
http://localhost:89/Test/Demo/Sum?a=8&b=9
会提示输入密码, 输入初始化的密码即可。
TMS Xdata Server的更多相关文章
- tms web core程序部署
tms web core程序部署 笔者把已经开发好的TMS WEB CORE程序部署到阿里云服务器上面,来作为例子. 1)复制TMS WEB CORE前端程序到服务器的c:\room\ 2)复制TMS ...
- Everything starts with a dream(A day has only 24 hours and these things take time,所以要抓紧)
There is the famous quote: "Everything starts with a dream" and many years ago, Michael Va ...
- XData -–无需开发、基于配置的数据库RESTful服务,可作为移动App和ExtJS、WPF/Silverlight、Ajax等应用的服务端
XData -–无需开发.基于配置的数据库RESTful服务,可作为移动App和ExtJS.WPF/Silverlight.Ajax等应用的服务端 源起一个App项目,Web服务器就一台,已经装了 ...
- Portable Basemap Server:多数据源多客户端的底图服务器
Portable Basemap Server:多数据源多客户端的底图服务器 [poll id=”1″]2014.3.8更新v3.1~在线切片转换为MBTiles时,增加RecreateEmptyCa ...
- Host myCloudData.net on your own server (支持自建服务器)
http://www.myclouddata.net/#/home Host myCloudData.net on your own serverUse the myCloudData.net SDK ...
- geotrellis使用(三十五)Cesium加载geotrellis TMS瓦片
前言 做任何事情都不是想象中的那么简单.好久没有更新技术博客了,跟最近瞎忙有很大关系,虽说是瞎忙也抽空研究了些技术. 主要是前端渲染,像原生的WebGL和Cesium.WebGL写了几篇博客,自我感觉 ...
- 基于USB网卡适配器劫持DHCP Server嗅探Windows NTLM Hash密码
catalogue . DHCP.WPAD工作过程 . python Responder . USB host/client adapter(USB Armory): 包含DHCP Server . ...
- tms web core 与 kbmmw 第一次亲密接触
最近,tms 经过1年多,集合了数十名高手大牛,开发出了一个跨时代的产品,就是tms web core. 具体的介绍详见官网,https://www.tmssoftware.com/site/tmsw ...
- python获取bing地图发布自己的TMS服务(一)下载瓦片
部分结果 bing地图瓦片使用QuadKey作为命名方式. QuadKey简介 如何计算quadkey 在给定level下,把行号tileY和列号tileX转换为2进制,然后行列交叉存储,再转换为4进 ...
随机推荐
- java基础(八) 深入解析常量池与装拆箱机制
引言 本文将介绍常量池 与 装箱拆箱机制,之所以将两者合在一起介绍,是因为网上不少文章在谈到常量池时,将包装类的缓存机制,java常量池,不加区别地混在一起讨论,更有甚者完全将这两者视为一个整体, ...
- 用JS实现的常见几种排序算法
1.快速排序法 function quickSort(a) { if (a.length <= 1) { return a; } var midLength = Math.floor(a.len ...
- UNIX高级环境编程(6)标准IO函数库 - 流的概念和操作
标准IO函数库隐藏了buffer大小和分配的细节,使得我们可以不用关心预分配的内存大小是否正确的问题. 虽然这使得这个函数库很容易用,但是如果我们对函数的原理不熟悉的话,也容易遇到很多问题. 1 ...
- How To create extension in Hybris(创建Hybris的扩展)
How To create extension in Hybris What is an extension? An extension is an encapsulated piece of the ...
- $.ajax 在请求没有完成,是可以往下继续执行js代码的
$.ajax({ url:url, data:{}, success:function(arr) { var varHtml='<option value="" checke ...
- 'Table is Marked as crashed and should be repaired Error'.Mysql表损坏解决方案
问题表现:由于服务器崩溃导致表损坏无法打开或者能打开但是无法写入数据(提示主键重复但实际没有该主键且该主键值在最大值范围内). 本文提供两种检查修复方式:mysqlcheck 和 myisamchk ...
- 【教程】【FLEX】#005 拖动
在Flex中,组件的拖动分为: 1. 加强型(即本身就可以拖动设置是否可以拖动的属 [dragEnabled ,dropEnabled ] 即可) 2. 非加强型(可以通过DragManager,Dr ...
- MapReduce实例2(自定义compare、partition)& shuffle机制
MapReduce实例2(自定义compare.partition)& shuffle机制 实例:统计流量 有一份流量数据,结构是:时间戳.手机号.....上行流量.下行流量,需求是统计每个用 ...
- JavaScript动画
早期的JS动画 早期的JS循环动画主要是通过setInterval/setTimeout实现的 function jump() { console.log("我跳了一下"); } ...
- Php发送post请求方法
因为自己时常用到 所以还是发布一下吧 /** * 发送post请求 * @param string $url 请求地址 * @param array $post_data post键值对数据 * @r ...