Web Broker(Web服务应用程序)入门教程(1)

1、介绍

Web Broker 组件(位于工具面板的“Internet”选项卡中)可以帮助您创建与特定统一资源标识符(URI)相关联的事件处理程序。当处理完成后,您可以通过编程方式构建 HTML 或 XML 文档,并将它们传输给客户端。

通常情况下,网页的内容来源于数据库。您可以利用 Internet 组件自动管理数据库连接,使得单个 DLL 或 SO 文件能够处理多个同时进行的、线程安全的数据库连接。

本系列的后续部分将详细解释如何使用 Web Broker 组件来创建一个 Web 服务器应用程序。
2、利用 Web Broker 构建 Web 服务器应用程序
Web Broker 组件(在工具面板的“Internet”标签下)使您能够创建与特定统一资源标识符(URI)相关联的事件处理程序。处理完成后,您可以编程生成 HTML 或 XML 文档,并将其传输给客户端。

在 Windows 上使用 Web Broker 架构创建新的 Web 服务器应用程序:

1). 选择File > New > Other
2). 在“新建项目”对话框中,选择 Delphi 下的“Web”标签,并选择“Web Server Application”。
3). 出现一个对话框,您可以从中选择 Web 服务器应用程序的类型:
   - Stand-alone application:为显示表单的 Web 服务器应用程序开发设置环境。
   - Stand-alone console application:为开发 Web 服务器控制台应用程序设置环境。
   - ISAPI dynamic link library:将您的项目设置为 DLL,并包含 Web 服务器所期望的导出方法。它会向项目文件添加库头文件,以及项目文件的 uses 列表和 exports 子句所需的条目。
   - Apache dynamic link module:将您的项目设置为 DLL。Apache Web 服务器应用程序是 Web 服务器加载的 DLL。信息传递给 DLL,处理后由 Web 服务器返回给客户端。
   - CGI stand-alone executable:将您的项目设置为控制台应用程序,并添加项目文件 uses 子句所需的条目。

在 Linux 上使用 Web Broker 架构创建新的 Web 服务器应用程序:

1. 选择 File > New > Other
2. 在“新建项目”对话框中,选择 Delphi 下的“Web”标签,并选择“Web服务器应用程序”。
3. 出现一个对话框,您可以从中选择 Web 服务器应用程序的类型:
   - 独立应用程序:为显示表单的 Web 服务器应用程序开发设置环境。
   - Apache 动态链接模块:将您的项目设置为 SO。Apache Web 服务器应用程序是 Web 服务器加载的 SO。信息传递给 SO,处理后由 Web 服务器返回给客户端。
   - CGI 独立可执行文件:将您的项目设置为控制台应用程序,并添加项目文件 uses 子句所需的条目。

2.1 Web 应用程序对象(Web Application Object)
为您的 Web 应用程序设置的项目中包含一个名为 Application 的全局变量。Application 是 TWebApplication 的一个派生类,适用于您正在创建的应用程序类型。它在 Web 服务器接收到 HTTP 请求消息时运行。

警告:在项目 uses 子句中,不要在 CGIApp、ApacheApp、ApacheTwoApp 或 ISAPIApp 单元之后包含 Forms 或 QForms 单元。Forms 也声明了一个名为 Application 的全局变量,如果它出现在 CGIApp、ApacheApp、ApacheTwoApp 或 ISAPIApp 单元之后,Application 将被初始化为错误类型的对象。

    Application->Initialize();
    Application->CreateForm(__classid(TForm1), &Form1);
        Application->Run();

2.2 web模块(web Module)

Web 模块(Web.HTTPApp.TWebModule)是 System.Classes.TDataModule 的一个衍生类,可以像数据模块一样使用:它为 Web 应用中的业务规则和非可视组件提供集中控制。

您可以添加任何内容生成器到您的应用中,以生成响应消息。这些可以是内置的内容生成器,比如在多层数据库应用中作为客户端的 Web 服务器。

除了存储非可视组件和业务规则,Web 模块还充当 Web 调度器,将传入的 HTTP 请求消息匹配到生成这些请求响应的动作项。

如果您已经有一个数据模块,其中包含了您希望在 Web 应用中使用的许多非可视组件和业务规则,您可以用现有的数据模块替换 Web 模块。只需删除自动生成的 Web 模块,并用您的数据模块替换它。然后,向您的数据模块添加一个 Web.HTTPApp.TWebDispatcher 组件,这样它就可以像 Web 模块一样调度请求消息到动作项。如果您想要改变选择动作项以响应传入 HTTP 请求消息的方式,可以从 Web.HTTPApp.TCustomWebDispatcher 派生一个新的调度器组件,并将其添加到数据模块中。

您的项目中只能包含一个调度器。这可以是创建项目时自动生成的 Web 模块,或者是您添加到替换 Web 模块的数据模块中的 TWebDispatcher 组件。如果在执行过程中创建了第二个包含调度器的数据模块,Web 服务器应用将会引发运行时错误。

注意:您在设计时设置的 Web 模块实际上是一个模板。在 ISAPI 和 NSAPI 应用中,每个请求消息都会生成一个单独的线程,并且为每个线程动态创建 Web 模块及其内容的单独实例。

警告:在基于 DLL 或 SO(针对 Linux 平台)的 Web 服务器应用中,Web 模块被缓存以供后续重用,以提高响应速度。调度器及其动作列表的状态在请求之间不会重新初始化。在执行过程中启用或禁用动作项可能会导致在该模块用于后续客户端请求时出现意外结果。
 

3. Web Broker 应用程序的结构

当 Web 应用程序接收到一个 HTTP 请求消息时,它会创建一个 Web.HTTPApp.TWebRequest 对象来表示这个 HTTP 请求消息,以及一个 Web.HTTPApp.TWebResponse 对象来表示应该返回的响应。然后,应用程序将这些对象传递给 Web 调度器(可以是 Web 模块或 TWebDispatcher 组件)。

Web 调度器控制着 Web 服务器应用程序的流程。调度器维护着一个动作项(TWebActionItem)的集合,这些动作项(action items)知道如何处理特定类型的 HTTP 请求消息。调度器识别出合适的动作项或自动调度组件来处理 HTTP 请求消息,并将请求和响应对象传递给识别出的处理器,以便它执行任何请求的操作或制定响应消息。

动作项负责读取请求并组装响应消息。专门的内容包括生成器组件协助动作项动态生成响应消息的内容,这些内容可以包括自定义 HTML 代码或其他 MIME 内容。内容包括生成器可以利用其他内容包括生成器或 THTMLTagAttributes 的派生类来帮助它们创建响应消息的内容。

如果您正在创建一个实现 Web 服务的服务器,您的 Web 服务器应用程序可能包括一个自动调度组件,该组件将基于 SOAP 的消息传递给一个解释并执行它们的调用器。在尝试了所有动作项之后,调度器调用这些自动调度组件来处理请求消息。

当所有动作项(或自动调度组件)通过填写 TWebResponse 对象完成响应创建后,调度器将结果返回给 Web 应用程序。然后应用程序通过 Web 服务器将响应发送给客户端。
 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/59277.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

<HarmonyOS第一课>HarmonyOS SDK开放能力简介的课后习题

不出户&#xff0c;知天下&#xff1b; 不窥牖&#xff0c;见天道。 其出弥远&#xff0c;其知弥少。 是以圣人不行而知&#xff0c;不见而明&#xff0c;不为而成。 本篇<HarmonyOS第一课>HarmonyOS SDK开放能力简介是简单介绍了HarmonyOS SDK&#xff0c;不需要大家过多…

【Java并发】乐观锁、悲观锁、CAS、版本号机制

前言 在现代计算机系统中&#xff0c;处理并发操作时&#xff0c;锁机制是至关重要的。本文将介绍乐观锁、悲观锁以及CAS&#xff08;Compare and Swap&#xff09;这三种常见的并发控制技术&#xff0c;帮助理解它们的原理和应用场景。 1.悲观锁 1.1 定义 悲观锁是一种在访…

三层交换技术,eNSP实验讲解

三层交换技术&#xff0c;eNSP实验讲解 一、简要介绍1、概念2、工作原理3、优点4、应用场景5、与路由器的区别 二、eNSP仿真实验1、步骤一&#xff1a;创建连接&#xff0c;明确参数。2、步骤二&#xff1a;设置PC1和PC2参数3、步骤三&#xff1a;配置交换机&#xff0c;通过命…

C++设计模式创建型模式———生成器模式

文章目录 一、引言二、生成器/建造者模式三、总结 一、引言 上一篇文章我们介绍了工厂模式&#xff0c;工厂模式的主要特点是生成对象。当对象较简单时&#xff0c;可以使用简单工厂模式或工厂模式&#xff1b;而当对象相对复杂时&#xff0c;则可以选择使用抽象工厂模式。 工…

Python 如何在 Web 环境中使用 Matplotlib 进行数据可视化

Python Matplotlib 在 Web 环境中的可视化 数据可视化是数据科学和分析中一个至关重要的部分&#xff0c;它能帮助我们更好地理解和解释数据。在现代应用中&#xff0c;越来越多的开发者希望能够将数据可视化结果展示在网页上。Matplotlib 是 Python 中最常用的数据可视化库之…

模型部署流程

神经网络部署流程 工业界应用神经网络时&#xff0c;往往要对学术界产出的模型进行优化&#xff0c;才能在推理设备/服务器上实现更高的效率&#xff0c;从而降低成本&#xff0c;这整个过程也一般称之为模型部署&#xff08;Deployment&#xff09;。 部署的目的 模型部署目…

vue2中使用vue-awesome-swiper实现轮播

swiper官方文档&#xff1a;Swiper中文网-轮播图幻灯片js插件,H5页面前端开发 1.安装 注意&#xff1a;swiper和vue-awesome-swiper的版本一定一定一定要相对应&#xff0c;版本对应如下&#xff1a; Swiper 5-6 vue-awesome-swiper4.1.1(vue2) Swiper 4.x vue-awesome-swi…

less解决function中return写法在浏览器被识别成Object导致样式失败的问题

问题描述&#xff1a; 一开始写的是: baseFontSize: 37.5px;//基于屏幕尺寸/10得出的基准font-size// return失败,浏览器显示为[object Object],[object Object] .pxToRem(px){value: px / baseFontSize * 1rem;return value; } 使用height: .pxToRem(40px);之后浏览器却是这…

【04】【Maven项目热部署】将Maven项目热部署到远程tomcat服务器上

1.虽然现在Maven中央仓库中支持的tomcat插件只支持到tomcat7这个版本&#xff0c;但是可以利用这个插件对Web项目进行热部署&#xff0c;热部署到远程服务器的tomcat服务器上&#xff0c;远程服务器上的tomcat版本可以是更高的版本&#xff0c;比如说tomcat8、9、10或更高的版本…

开源一款前后端分离的企业级网站内容管理系统,支持站群管理、多平台静态化,多语言、全文检索的源码

大家好&#xff0c;我是一颗甜苞谷&#xff0c;今天分享一款前后端分离的企业级网站内容管理系统&#xff0c;支持站群管理、多平台静态化&#xff0c;多语言、全文检索的源码。 前言 在当今的数字化时代&#xff0c;企业网站和个人博客已成为信息传播和品牌建设的重要渠道。…

mfc | mfc集成opencv,实现摄像头监控、拍照、视频图像处理(亮度、对比度、色调、饱和度)功能

这里是引用 文章目录 一、开发环境二、MFC项目创建三、集成opencv3.1 opencv安装3.2 添加项目属性3.3 测试OpenCV&#xff08;打开摄像头&#xff09;3.4 OPENCV视频嵌入到弹框中 四、关闭摄像头、拍照功能实现4.1 添加按钮4.2 添加全局静态变量4.3 关闭摄像头功能实现4.4 拍照…

Rust 力扣 - 289. 生命游戏

文章目录 题目描述题解思路题解代码题目链接 题目描述 题解思路 我们记录上一行和当前行转换之后的状态&#xff0c;当前行转换之后的状态计算完毕后调整上一行状态&#xff0c;直至最后一行状态计算完毕后调整最后一行状态 题解代码 pub fn game_of_life(board: &mut V…

【eNSP】华为ensp快速入门实验

一、安装准备 1. 检查和卸载已安装的软件 检查是否已经安装 eNSP 和依赖软件&#xff1a; 打开控制面板&#xff0c;点击“程序和功能”。 搜索列表中是否存在 eNSP 或依赖软件&#xff08;如 WinPcap、Wireshark&#xff09;。 卸载已安装的软件&#xff1a; 如果找到 e…

一:Linux学习笔记(第一阶段)-- 安装软件 vmware workstation 虚拟机软件 centos系统

目录 学习计划&#xff1a; 资源准备 虚拟机软件&#xff1a;就别自己找了 现在换网站了 下载比较费劲 Centos8&#xff1a; 阿里云镜像地址下载&#xff08;下载比较版 但是有不同版本&#xff09;&#xff1a;centos安装包下载_开源镜像站-阿里云 百度网盘地址&#xff…

Java项目:165 springboot人事管理系统

作者主页&#xff1a;舒克日记 简介&#xff1a;Java领域优质创作者、Java项目、学习资料、技术互助 文中获取源码 项目介绍 人事管理系统分为管理员和用户两部分操作角色 本次开发的人事管理系统实现了财务报销管理、字典管理、试卷表管理、试题表管理、考试记录表管理、答题…

单臂路由实现不同VLAN之间设备通信

转载请注明出处 本实验为单臂路由配置&#xff0c;目的为让不同VLAN之间的设备能够互相通信。 1.首先&#xff0c;按照要求配置两个pc的ip地址&#xff0c;以pc0为例子&#xff1a; 2在交换机创建vlan10和vlan20 3.划分vlan&#xff0c;pc0为vlan10的设备&#xff0c;pc1为vla…

【FL0013】基于SpringBoot和微信小程序的机电公司管理信息系统

&#x1f9d1;‍&#x1f4bb;博主介绍&#x1f9d1;‍&#x1f4bb; 全网粉丝10W,CSDN全栈领域优质创作者&#xff0c;博客之星、掘金/知乎/b站/华为云/阿里云等平台优质作者、专注于Java、小程序/APP、python、大数据等技术领域和毕业项目实战&#xff0c;以及程序定制化开发…

2024保姆级微信 AI 机器人教程:如何打造私人和群聊助手

欢迎点击领取 -《前端开发面试题进阶秘籍》&#xff1a;前端登顶之巅-最全面的前端知识点梳理总结 *分享一个使用比较久的&#x1fa9c; 大家好&#xff0c;我是SunnyRun 微信 AI 机器人-人工智能技术&#xff0c;为用户提供服务的自动化系统&#xff1a;具备自然语言处理能…

HyperWorks进阶教程:Altair及其软件介绍

1.1 Altair 简介 Allair是一家全球技术公司&#xff0c;在产品开发、高性能计算和数据智能领域提供软件和云解决方案自1985年成立以来一直致力于为企业的决策者和技术的执行者开发用于仿真分析、优化、信息可视化、流程自动化和云计算的高端技术。Altair 公司的总部位于美国密…

Halcon3D image_points_to_world_plane详解

分三个部分来聊聊这个算子 一,算子的参数介绍 二,算法的计算过程 三,举例实现 第一部分,算子的介绍 image_points_to_world_plane( : : CameraParam, WorldPose, Rows, Cols, Scale : X, Y) 参数介绍: CameraParam,:相机内参 WorldPose 世界坐标系,也叫物体坐标系(成…