使用delphi 开发多层应用(十五)使用kbmMW 的代理服务

简介: 首先,当一个企业要给外网用户提供服务时,应用服务器上应该配置外网IP,同时外网防火墙也要进行相关的配置, 但是当对外的服务器比较多时,可能需要很多外网IP,同时防火墙上要频繁设置,非常麻烦。第二,分发客户端后,一般 配置都要默认设置好(否则会给客户造成不必要的麻烦),那么客户端都会指向一个相对比较固定的服务器IP,也就是说 客户端理想状态是通过一个统一的入口连接到服务器上,调用相关的服务。

   首先,当一个企业要给外网用户提供服务时,应用服务器上应该配置外网IP,同时外网防火墙也要进行相关的配置,

但是当对外的服务器比较多时,可能需要很多外网IP,同时防火墙上要频繁设置,非常麻烦。第二,分发客户端后,一般

配置都要默认设置好(否则会给客户造成不必要的麻烦),那么客户端都会指向一个相对比较固定的服务器IP,也就是说

客户端理想状态是通过一个统一的入口连接到服务器上,调用相关的服务。第三,当一个服务器同时运行多个服务比较繁忙时,

可以把多个服务分离出来,部署到不同的服务器上,但是服务分离应该对客户端是透明的,也就是说客户端不应该感觉到服务

器上的变化,能够按照过去的逻辑进行工作。最后,具有业务逻辑的应用服务器也应该保证一定的安全保护,尽量不要直接

连到外网。为了解决以上的几个矛盾,我们就要采取kbmMW的代理服务实现以上要求。

 我们先来做一个最简单的代理服务。

1.建立一个vcl application(在delphi XE2 以后,同样可以使用FM 应用,这里为了方便,使用VCL 框架).

 

放置相关控件,一个是servertransport, 一个是clienttransport.

注意:servertransport的端口是客户端要访问的端口,

clienttransport.的端口是我们以前做的服务的端口。

2.使用kbmMW 的服务向导生成一个ProxyService.

并设置相关属性

3.然后在主界面里面输入对应的代码

procedure TForm1.Button1Click(Sender: TObject);
begin
   pserver.Active:=true;
end;

procedure TForm1.FormCreate(Sender: TObject);
var
sd:TkbmMWCustomServiceDefinition;
begin

   sd:=pserver.RegisterService( TkbmMWProxyService2,true);


end;

4.运行原来的服务器程序

5. 运行刚做的代理服务器

6. 把客户端的访问服务器端口改成3000,并运行


客户端成功通过代理服务器访问到真正的应用服务器。

代理服务一般有四种用法:

1.客户端通过代理服务器连到一个应用服务器上

注册代码为

var
   sd:TkbmMWCustomServiceDefinition;
begin
   sd:=kbmMWServer1.RegisterService(TMyProxyService1,true);
end;

 这里的True意味着代理服务器将所有的客户端请求无条件发送到应用服务器上。

2)代理服务器提供一些服务,其余的转发到应用服务器上

注册代码为:

var
     sd:TkbmMWCustomServiceDefinition;
begin
     sd:=kbmMWServer1.RegisterService(TMyInternalService1,false);
     sd:=kbmMWServer1.RegisterService(TMyInternalService2,false);
     sd:=kbmMWServer1.RegisterService(TMyProxyService1,true);
end;

 这里代理服务器也提供两个服务,其他的由应用服务器提供。
3)通过代理服务器连接两个以上的应用服务器

注册代码为

var
      sd:TkbmMWCustomServiceDefinition;
begin
    sd:=kbmMWServer1.RegisterServiceByName(‘SOMESERVICE1’,TMyProxyService1,
false);
    sd:=kbmMWServer1.RegisterServiceByName(‘SOMESERVICE2’,TMyProxyService2,
false);
end;

 这里代理服务器根据不同的服务,将客户端的请求转发到对应的应用服务器上。

 

4)客户端既访问代理服务器的服务,也访问不同应用服务器的服务

这个其实就是以上的几种方式组合。

总之,利用代理服务可以解决很多比较麻烦的问题,大家可以灵活使用,以适应自己的实际工作情况。

目录
相关文章
|
缓存 安全 iOS开发
iOS网络编程之四——请求类NSURLRequest使用详解
iOS网络编程之四——请求类NSURLRequest使用详解
466 0
|
缓存 iOS开发
iOS网络编程之六——数据缓存类NSURLCache使用解析
iOS网络编程之六——数据缓存类NSURLCache使用解析
165 0
|
JavaScript 前端开发
|
SQL 数据格式 XML
SharePoint开发 - TimerJob简单实例讲解
博客地址 http://blog.csdn.net/foxdave SharePoint中的TimerJob类似于Windows系统的计划任务,可以实现定时执行指定操作的功能。
825 0
使用delphi 开发多层应用(二十三)KbmMW 的WIB
解释WIB 是什么之前,先回顾以下我们前面的各种服务工作方式。前面的各种服务的工作方式都是请求/应答方式。 客户端发送请求,服务器端根据客户端的请求,返回相应的结果。这种方式是一种顺序式访问,是一种紧耦合的方式。
997 0
|
数据安全/隐私保护
使用delphi 开发多层应用(二十二)使用kbmMW 的认证管理器
从kbmmw 4.4 开始,增加了认证管理器,这个比原来的简单认证提供了更多的功能。细化了很多权限操作。 今天对这一块做个介绍。   要做一个认证管理,大概分为以下5步:        1.  定义你要保护的资源,一般是服务、函数,当然你只要不限麻烦,可以是任何东西;        2.  定义使用者(用户);        3.  定义角色,使用者通过角色与服务器打交道;        4.  定义角色或用户可以访问的资源(授权);        5. 定义认证与登录的限制(本步不是必须的)。
987 0
|
Web App开发 JSON 数据库
使用delphi 开发多层应用(二十一)使用XE5 RESTClient 直接访问kbmmw 数据库
delphi XE5 出来了,增加了android 的开发支持,另外增加了一个RESTClient 来支持访问REST 服务器。 这个功能非常强大,可以直接使用非常多的REST 服务器。同时也可以支持访问kbmmw 的web 服务器, 并完美的通过JSON支持使用kbmmw 的JSON 数据格式。
1524 0