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):  服务接口创建

1

2

3

4

5

6

7

[ServiceContract]

[Model('System')]      //这里要对应xdata modelname的名字

[URIPathSegment('Demo')]  //这里对应于http访问二级路径名

ISystemService = interface(IInvokable)

['{99BD59AA-8978-4D0F-8C04-65F8F05F5363}']

  [HttpGet] function  Sum( A, B: double) : double;

end;<br>initialization<br>  RegisterServiceType(TypeInfo(ISystemService));    //不要忘记注册,虽然进入是个空函数,好像经过测试必不可少

B): 服务类创建

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

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:  客户端访问

1

2

3

4

5

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

会提示输入密码, 输入初始化的密码即可。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

tjsoft

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值