RSS
热门关键字:  数据挖掘  人工智能  数据仓库  搜索引擎  数据挖掘导论

Delphi编写soap服务器与客户端程序

来源: 作者:unkonwn 时间:2005-08-19 点击:

Delphi编写soap服务器与客户端程序

数据挖掘研究院

使用三层结构开发客户机、服务器软件已成为c/s系统中的主流;下面是自己在开发系统中的一些体会;本文已delphi7windows)或kylix3(linux9)为环境描述:

1、编写服务器程序

      首先,看看soap服务器的建立,在delphi7中的新建栏目中,选择“ WebServices”如下图,选择“Soap Server Application数据挖掘研究院
数据挖掘研究院

数据挖掘实验室


点击“
ok,开始选择创建服务程序的类型:
ISAPI/NSAPI Dynamic Link Library –将生成一个.dll文件,可以用IIS来进行发布;


CGI Stand-alone executable 将生成一个CGI程序;注意:CGI程序一般比较占用内存
Apache 1.x;Apache 2.x 可以用Apache来发布;可以实现在不同平台上用行;
Web App Debugger executable webappdbg.exe运行的一个方便调试的程序;

数据挖掘实验室

数据挖掘研究院


     我们这里选取
Web App Debugger executable ;主要是方便进行调试,但作为项目运行最好选取IIS(把编译好的程序dll放在发布目录下;在iis主目录配置选项下选取“脚本和执行程序”,在浏览器输入相应的地址即可)或Apache来作soap服务器的载体。 数据挖掘研究院

      接下来会提示是否创建soap module ;我在这里选取了“是”;服务端程序的编写需注意对客户端并发访问的处理。

数据挖掘实验室


将会生成:

数据挖掘研究院

myTestIntf.pas接口定义文件内容: 数据挖掘研究院

unit myTestIntf;
interface
uses
InvokeRegistry, Types, XSBuiltIns;
type
      ImyTest = interface(IInvokable)
      ["{FA05E275-DF6F-4C8D-BBF6-3F946B187BB3}"] 数据挖掘研究院
      function Login(name:string;pwd:string):boolean;stdcall;    //
需要发布的方法
end;
implementation
initialization
      InvRegistry.RegisterInterface(TypeInfo(ImyTest));
end.
数据挖掘研究院

数据挖掘研究院

myTestImpl.pas接口实现文件内容:

数据挖掘研究院

unit myTestImpl;
interface
uses
InvokeRegistry, Types, XSBuiltIns, myTestIntf;
type
      TmyTest = class(TInvokableClass, ImyTest)
  public
      function Login(name:string;pwd:string):boolean;stdcall; 数据挖掘研究院
  end;
implementation
{ TmyTest
}
function TmyTest.Login(name, pwd: string): boolean;       //
自己定义的方法的实现代码
begin
    if ((name="1") and (pwd="abc")) then

数据挖掘研究院


          result:=true
    else
          result:=false;
end
;
initialization
  InvRegistry.RegisterInvokableClass(TmyTest);
end.
数据挖掘实验室

数据挖掘研究院

delphi7带的webappdbgiis启动发
(1)       webappdbg做发布,点击delfault url 即可看到发布的接口;

数据挖掘研究院


(2)       iis做发布,在浏览器中输入“http://localhost/a/Project1.dll”发布的地址;

数据挖掘研究院

2、导出soap接口的xml文档

数据挖掘研究院

数据挖掘研究院


点击“
ImyTest,文件另存“ImyTest.xml即可。 数据挖掘研究院

3、客户端程序的编写

       首先,在下图中把上面导出的xml文件导入到你所用的客户端程序;

数据挖掘研究院

     数据挖掘实验室

1)如果服务端的接口是一个方法:在客户端放入THTTPRIO控件,选取其中wsdl


         的文件地址或URL即可;在代码中调用接口的列子如下:
         if (HTTPRIO1 as ImyTest).Login("1","abc") then
             showmessage("true")

数据挖掘研究院


         else
             showmessage("false");
数据挖掘研究院

2)如果服务端的接口是一个数据模块:在客户端放入TSoapConnection控件;设置它的URL即可;然后可以放置其他的数据控件(TClientDataSet)来在RemoteServer选项,选择上面的TSoapConnection;其他的数据操作与普通的数据控件操作相同。 数据挖掘研究院


最新评论共有 0 位网友发表了评论
发表评论
评论内容:不能超过250字,需审核,请自觉遵守互联网相关政策法规。
匿名?