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的更多相关文章

  1. tms web core程序部署

    tms web core程序部署 笔者把已经开发好的TMS WEB CORE程序部署到阿里云服务器上面,来作为例子. 1)复制TMS WEB CORE前端程序到服务器的c:\room\ 2)复制TMS ...

  2. 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 ...

  3. XData -–无需开发、基于配置的数据库RESTful服务,可作为移动App和ExtJS、WPF/Silverlight、Ajax等应用的服务端

    XData -–无需开发.基于配置的数据库RESTful服务,可作为移动App和ExtJS.WPF/Silverlight.Ajax等应用的服务端   源起一个App项目,Web服务器就一台,已经装了 ...

  4. Portable Basemap Server:多数据源多客户端的底图服务器

    Portable Basemap Server:多数据源多客户端的底图服务器 [poll id=”1″]2014.3.8更新v3.1~在线切片转换为MBTiles时,增加RecreateEmptyCa ...

  5. Host myCloudData.net on your own server (支持自建服务器)

    http://www.myclouddata.net/#/home Host myCloudData.net on your own serverUse the myCloudData.net SDK ...

  6. geotrellis使用(三十五)Cesium加载geotrellis TMS瓦片

    前言 做任何事情都不是想象中的那么简单.好久没有更新技术博客了,跟最近瞎忙有很大关系,虽说是瞎忙也抽空研究了些技术. 主要是前端渲染,像原生的WebGL和Cesium.WebGL写了几篇博客,自我感觉 ...

  7. 基于USB网卡适配器劫持DHCP Server嗅探Windows NTLM Hash密码

    catalogue . DHCP.WPAD工作过程 . python Responder . USB host/client adapter(USB Armory): 包含DHCP Server . ...

  8. tms web core 与 kbmmw 第一次亲密接触

    最近,tms 经过1年多,集合了数十名高手大牛,开发出了一个跨时代的产品,就是tms web core. 具体的介绍详见官网,https://www.tmssoftware.com/site/tmsw ...

  9. python获取bing地图发布自己的TMS服务(一)下载瓦片

    部分结果 bing地图瓦片使用QuadKey作为命名方式. QuadKey简介 如何计算quadkey 在给定level下,把行号tileY和列号tileX转换为2进制,然后行列交叉存储,再转换为4进 ...

随机推荐

  1. solidity 语法学习

    基于 cryptozombies.io ZombieFactory pragma solidity ^0.4.19; contract ZombieFactory { // 事件, web3.js 可 ...

  2. 一步一步pwn路由器之uClibc中malloc&&free分析

    前言 本文由 本人 首发于 先知安全技术社区: https://xianzhi.aliyun.com/forum/user/5274 栈溢出告一段落.本文介绍下 uClibc 中的 malloc 和 ...

  3. Python 操作数据库pymysql

    import pymysql #添加数据 conn , user='root', passwd='', db='yyy') #更改获取数据结果的数据类型,默认是元组,可以改为字典等:#cursor=c ...

  4. sun.misc.BASE64Encoder在Eclipse中不能直接使用的原因和解决方案

    1.为什么在Eclipse中不能直接使用sun.misc.BASE64Encoder和sun.misc.BASE64Decoder呢? 因为sun.misc.BASE64Encoder和sun.mis ...

  5. java ee思维导图

    该图是以网上的脑图作为参考,结合教材具体内容完成.

  6. CDH5.11安装spark2.x详细步骤

    简介: 在我的CDH5.11集群中,默认安装的spark是1.6版本,这里需要将其升级为spark2.x版本.经查阅官方文档,发现spark1.6和2.x是可以并行安装的,也就是说可以不用删除默认的1 ...

  7. Leetcode题解之Container With Most Water

    1.题目描述 2.题目分析 首先,这个题可以使用暴力解法,时间复杂度是O(n^2),这个显然是最容易的做法,但是效率不够高,题目提供了一种解法,使用两个指针,一个从头向尾部,另外一个从尾部向头部,每一 ...

  8. MySQL · 数据恢复 · undrop-for-innodb

    Ref:https://www.aliyun.com/jiaocheng/1109809.html  摘要: 简介 undrop-for-innodb 是针对 innodb 的一套数据恢复工具,可以从 ...

  9. 一、Linux中的常用命令2 二、Vim编辑器的使用

    一.Linux的常用命令###<1>文件目录操作 13. echo:用于输出字符串,shell编程,echo 1. 输出字符串 : echo str ,shell编程会使用(类似java中 ...

  10. Python运算符之三元运算符

    三元运算符:也称之为条件表达式 [条件为真的结果] if 条件 else [条件为假的结果] 如: ium01 = 100 if100 > 200 else200 print(num01) #三 ...