• 使用 RemObjects SDK 建立 WebService 应用


    1. 准备工作

      首先下载 RemObjects SDK,我用的是 4.0.19 版,可以安装在 Delphi2007 中。用其他版本 delphi 的也可以下载 4.0.19,用起来效果一样的。需要注意的是,RemObjects 是共享的框架,如果不注册,那么编译后的程序不能脱离 delphi 的 IDE 单独运行。注册的方法是去 RemObjects 官方网站(http://www.remobjects.com/shop/)下购买定单,付费后会收到 License 文件(别问我要 License,我不会给的)。

    2. 创建 VCL Standalone

      点击 File->New->Other,选择 RemObjects SDK,在右边会显出可用的框架,选择 VCL Standalone。会弹出如下窗口:

      点击 Advanced Project Options,详细的设置一下工程。
      然后点击 OK 保存设置,然后创建工程。在 Delphi2007 中建工程时,可能会发生工程组错误的问题,不需要理会,直接将建好的2个工程打开为一个工程组,如图:
      将当前工程设为 DemoService.exe,然后点击主菜单上的 RemObjects->Edit Service Library,启动服务编辑器。启动时,如果你没有注册,它将提示你需要注册,并且启动 30 天试用的倒计时。
      这里我添加 2 个方法,一个方法用于返回 hello world,另一个方法用于返回服务器端当前的时间。设置完成后,关闭服务编辑器。
      现在编译一下工程,系统会提示使用哪种服务器类型,这里我们选择 Simple Object。
      编译过之后,系统会生成 2 个新的文件,分别是 Intf 和 Impl,也就是接口和实现,这与 Delphi 自带的 WebService 完全一样。在 Impl 中,编写两个方法的实现代码:
      再次编译,完成后启动服务器。如图所示,当然你也可以自行设计服务器的界面,或是直接让它在后台运行。此处就不再多说了。
      现在服务器已经完成了,下面就要开发一个客户端,来调用服务器端提供的服务。将工程组的活动工程切换为 DemoServiceClient,然后点击 RemObjects->Import SOAP Web Service,导入 WSDL。这个导入工具也需要 License,不然也只能使用 30 天。
      看到此界面后,点击 Import 按钮,如果想看一下 WSDL 的具体内容,可以点击 View WSDL。导入完成后,会弹出对话框,提示是否将 ClientIntf 加入工程,选择 yes 即可。生成的 ClientInft 如下:
      这个文件是系统自动生成的,若没有特殊情况,不要对它进行修改,不然改错了就不能访问服务器了。
      按下图进行客户端界面的设计:
      最下面的三个控件是系统框架自动生成的,不需要自己拖控件。如果新建项目时没有建立客户端,则需要手动拖入这三个控件。
      为 2 个按钮编写 OnClick 事件代码:
      IDemoService 是服务器提供的,通过此接口能访问到服务器,然后通过 CoDemoService 对象对接口进行填充。CoDemoService 对象将在服务器端进行 ActiveX 初始化,客户端不需要对初始化做任何考虑。调用远程方法时,必须用 try 结构,如果服务器不存在,系统将抛出异常。调用方法结束后,必须将 IDemoService 对象置 nil。
    3. 执行程序
      启动服务器和客户端,在文本框内输入字串,点击 Hello 按钮。
    4. 总结
      至此,一个最简单的 RemObjects 应用就完成了,其实真正写的代码没几行,大部分的代码都是框架生成的,而且生成的代码不需要进行什么大的修改。
      使用 RemObjectds SDK 可以开发出各种类型的 Server,提供多种不同的服务,大家可以自行研究。由于 RemObjects 文档不完善,好多高级功能还是只能通过看 Demo 来掌握,我将于最近抽一点时间,整理一些有用的文档放上来。
     
    5. 程序下载
      本程序的源码,点击下载
      程序下载空间由点点提供,特此感谢!(点点的blog:http://hi.baidu.com/18moon)
      注意:Bin 目录下的为编译好的程序,Source 下为代码。Bin 下的程序均能脱离 Delphi 独立运行.
  • 相关阅读:
    省市区distpicker,从数据库里查出来回显,动态绑定
    ajax请求里面的success和error里面的layer.msg,status: "parsererror",刷新父界面,碰到的一些问题
    排序算法时间和空间算法度
    适配器模式
    守护线程
    工厂模式之简单工厂模式、工厂模式、抽象工厂
    ArrayList源码分析和缩减版手写ArrayList(jdk1.8和1.9)
    HashMap排序题
    二进制中1的个数
    anaconda指定镜像源,解决conda下载速度慢失败问题
  • 原文地址:https://www.cnblogs.com/MaxWoods/p/2155065.html
Copyright © 2020-2023  润新知