intreweb 在Http.sys 部署

Delphi与Intraweb Web开发实战指南 本文还有配套的精品资源,点击获取 简介:本书第二版专注于在Delphi环境下利用Intraweb框架构建Web应用程序的实战技术。Intraweb框架简化了Web开发流程,允许开发者使用Delphi VCL组件直接在服务器端创建动态、交互式的Web应用,无需复杂的前端技术。涵盖从安装配置到用户界面设计,再到数据处理与业务逻辑实现,以及高级特性如状态管理、会话控制、安全性和性... 阅读详情

Http.sys 应用程序

使用 IntraWeb 创建 Http.sys 应用程序

什么是 http.sys?

Http.sys 是 Windows 内核模式设备驱动程序,用于处理 Windows 系统中的 Http 和 Https 请求。它侦听来自 TCP 堆栈的此类请求并将它们转发给已注册的应用程序。这些应用程序生成对这些请求的完整响应。w3wp.exe 就是一个这样的应用程序,它是 IIS 本身的工作进程。在 IIS 中创建的每个虚拟应用程序都会启动一个新的 w3wp.exe 进程,该进程将自己注册到 Http.sys。因此,如您所见,当我们直接与 Http.sys 对话而不是通过 IIS 时,我们实际上移除了一层间接性,使整个过程更加简单并提高了整体性能。

您可以在此处找到有关 Http.sys 的完整信息:  https ://docs.microsoft.com/en-us/iis/get-started/introduction-to-iis/introduction-to-iis-architecture

为什么 Http.sys 这么酷?

出于各种原因:它速度超级快,扩展性非常好,管理简单——比 IIS 好得多,而且可以正常工作!除此之外,您可以在同一服务器端口(例如标准端口 80 和 443)上运行多个应用程序,甚至可以使用 IIS 使用的同一端口,这意味着您实际上可以在端口 80 上安装 Http.sys IW 应用程序(或 HTTPS 标准端口 443),即使您在同一台服务器上激活了 IIS!这真是太棒了!

它超级快,因为 Http.sys 是内核模式设备驱动程序

我是否需要 IIS 来开发或部署 Http.sys IntraWeb 应用程序?

不,绝对不是!您甚至不需要在开发机器上安装 IIS!您也不需要在服务器上安装它!

Http.sys 应用程序是否像 ISAPI 一样部署为 DLL?

不,他们不是!Http.sys IW 应用程序是独立的可执行文件(一个简单的 EXE),应该作为服务安装。它们的工作方式与基于 Indy 的 IntraWeb 应用程序完全相同,但它们根本不使用 Indy。

Http.sys 是否有任何其他外部依赖项?

再次, 不!唯一的依赖是 http.sys 设备驱动程序,它是每个 Windows 操作系统的核心部分。只需将您的 EXE 复制到服务器上的文件夹即可运行。

那么它是怎样工作的?

以非常简化的方式:

当您的应用程序运行时,它会告诉 Http.sys 每个具有特定地址的请求都应该转发给它,以便我们可以处理它并做出响应。示例:您的应用程序希望将在端口 8888 中接收到的每个请求都转发给它,并且 URL 路径中包含 /MyIWApp/。所以它像 Http.sys 一样注册

http://+8888/MyIWApp/

这称为“URL 保留”。加号称为强通配符(在此处阅读更多信息: https ://docs.microsoft.com/en-us/sql/reporting-services/install-windows/url-reservation-syntax-ssrs-configuration-  manager?view=sql-server-2017

在 URL 注册成功后,所有以 /MyIWApp/ 作为 URL 基础的端口 8888 的请求都将被转发到您的应用程序。这正是 IIS 在后台对托管在其上的每个应用程序所做的事情。

收到新请求后,您的 Http.sys IW 应用程序将像处理任何其他请求一样处理它,生成响应,将其压缩并写回,使用其他 Http.sys API 函数。Http.sys 将负责其余的工作,并将其发送回浏览器。很简单,不是吗?

如何创建 Http.sys IntraWeb 应用程序?

您需要做的就是:

- 从 Delphi/C++ Builder IDE 中,选择 File – New – Other。然后是 IntraWeb,IntraWeb 应用程序向导

– 然后选择:

应用程序类型:独立应用程序 (Http.sys)

Url Base(可选):您的应用程序将使用 url base 创建用作应用程序地址的 url。它的格式为:http(s) : //yourserver.com/urlbase/

如果您愿意,您可以稍后设置或更改 URL 库。

而已!只需单击确定,您的应用程序将被创建。构建它,它就会工作!

第一次运行/调试它

如果您构建最近创建的应用程序并运行它,它应该可以正常工作,就像任何常规的 IntraWeb 独立应用程序一样。但是,在调试它时,您可能会收到这样的异常:

如消息所示,Http.sys 应用程序调用的某些特定功能(例如 URL 注册)需要 管理员权限。这就是它引发此异常的原因。在 Delphi/C++ Builder 调试器之外运行时,如果发生同样的情况,您应该会看到如下内容:

http://+8888/MyIWApp/ 是注册失败的 URL。

如何解决这个问题?简单 -> 以本地管理员身份运行您的 Delphi IDE  。

在 IIS 上调试 ISAPI 应用程序时也需要这样做(有时调试 ISAPI 很痛苦,但当您以本地管理员身份运行 Delphi 时,痛苦会减轻)。

Http.sys 应用程序选项

检查应用程序的 ServerController 时,您会发现以下新属性:

AddDefaultBinding:意味着您的应用程序将在运行时向 Http.sys 注册默认 URL(也称为“URL 保留”)。由协议(http 或 https)、通配符(强或弱)或虚拟主机名、端口和 Url Base(如果适用)组成的默认 URL。

HostWildcard:它可能是强或弱。简而言之,强通配符意味着所有到达该端口的东西,与请求的 URL 无关。弱通配符意味着对那个端口的所有请求都没有被其他保留捕获。

LimitThreadCountInDebug:当 True(默认)时,IntraWeb 将忽略属性 ThreadsPerCore(设置时)并使用默认 ThreadsPerCore = 0,仅在调试时(即在 Delphi IDE 上运行)。它使应用程序的启动和关闭稍微更快,调试更方便。

ThreadsPerCore:当设置(任何大于零的值)时,IntraWeb 将在为 Http.sys 进程创建线程时将此值用作每个核心的线程数。未设置时(即 ThreadsPerCore = 0,默认值),IntraWeb 将为每个核心创建 16 个线程。例如,如果机器有 8 个内核,应用程序将总共创建 128 个线程。请注意,在调试时此数字可能不同(请参阅 LimitThreadCountInDebug)。根据我们的测试,这是此类应用程序的平均推荐值。我们建议您使用默认值,除非您有充分的理由更改它。

VirtualHostNames:您可以使用 VirtualHostNames 来创建使用 主机名而不是通配符(强或弱)的 URL 保留。例如:http://myvirtualhostname:8888/MyIWApp/。这样,Http.sys 会将具有该确切 URL 的所有请求转发到您的应用程序。可以提供多个虚拟主机名(逗号分隔)。到达端口 8888 的所有其他请求都不会转发到您的应用程序(它们可以转发到不同的 IW 应用程序、IIS 或使用 Http.sys 的任何其他应用程序)。

还有一个新事件可用于配置 Http.sys IW 应用程序:

OnBind: 您可以使用 OnBind 事件来设置自己的应用程序使用的 http 和 https 绑定。例子:

过程 TIWServerController.IWServerControllerBaseBind(const aHttpBindings, aHttpsBindings: TStrings);  
开始    
  aHttpBindings.Add('http://+:8888/MyIWApp/');  
结尾;  

Http.sys 应用程序项目的结构

这是一个标准的 Http.sys 应用程序项目:

程序 HttpSysDemo;  

用途    
  IWRtlFix,    
  IWJclStackTrace,    
  IWJcl调试,    
  IWStartHSys,    
  'Unit1.pas' {IWForm1: TIWAppForm} 中的 Unit1,    
  'ServerController.pas' {IWServerController: TIWServerControllerBase} 中的 ServerController,    
  “UserSessionUnit.pas”中的 UserSessionUnit {IWUserSession: TIWUserSessionBase};    

{$R *.res}  

开始    
  TIWStartHSys.Execute(True);  
结尾。  

请注意 使用了单元IWStartHSys.pas(而不是 Indy 服务器项目中的 IWStart.pas)和行 TIWStartHSys .Execute()(而不是 Indy 服务器项目中的 TIWStart.Execute())。

将 Indy SA 转换为 Http.sys 应用程序

这真的很容易!您现有的 IntraWeb 14 SA 应用程序可以修改为作为 Http.sys 应用程序运行,在您的 DPR 文件中编辑 2 行!

请按照以下简单步骤操作:

1) 用 IWStartHSys 替换 IWStart 单元

2) 用 TIWStartHSys.Execute() 替换对 TIWStart.Execute() 的调用

构建并运行您的应用程序。一切都应该正常工作,现在使用 Http.sys 作为 Http 服务器而不是 Indy 服务器。

Http.sys 应用程序的部署

通常,您可以像部署 Indy IW 应用程序一样部署 Http.sys 应用程序。应该使用命令行将它们安装为 Windows 服务:

YourApplicationName.exe /安装

请注意,您必须在 TIWStartHSys.Execute() 方法中将 aForceUI 参数设置为 FALSE,就像在:

开始    
  TIWStartHSys.Execute(False);  
结尾。  

否则将使用 GUI 版本。应用程序的 GUI 版本非常适合调试、测试和原型设计,但不适用于生产中的部署。 始终使用服务版本!

在哪里可以找到 Http.sys IW 演示?

此演示有 2 个独立的应用程序,它们共享相同的端口(8888,但您可以使用任何其他端口)但响应不同的地址(它们具有不同的 UrlBase 属性)。它显示了 Http.sys 应用程序的主要功能之一。如您所见,它与任何 Indy 服务器应用程序一样简单,也可以轻松部署。

也可以看看

有关 Http.sys 的一般信息:

网址预订:

Delphi开发者专用Intraweb 15.0.18高性能Web开发框架 Intraweb 15.0.18颠覆了传统Web开发模式,采用事件驱动+状态保持的架构设计,使Delphi开发者无需学习HTML、CSS或JavaScript即可构建现代化Web应用。其核心在于将VCL组件模型无缝迁移至Web环境,通过服务器端维护UI状态,自动生成客户端交互逻辑。Intraweb 允许通过 CSS 类和内联样式控制控件外观。除了设置DefaultCss外,还可为特定实例指定Css属性。例如,高亮警告行:begininherited;color:red。 阅读详情

相关推荐

Delphi电子体温单控件详解与实战应用

Delphi 是一款基于 Object Pascal 的集成开发环境(IDE),以其高效的可视化设计和强大的组件库广泛应用于 Windows 平台的桌面应用程序开发。随着医疗信息化的发展,Delphi 依然在特定行业领域中保持其独特优势,尤其在需要快速开发(RAD)和高稳定性的场景中。本章将介绍 Delphi 开发环境的基本构成,包括 VCL(Visual Component Library)框架和组件化开发理念,并引出电子体温单控件的功能定位。

weixin_42298164的博客 1101

DelphiWebMVC 框架使用http.sys

delph盒子上的朋友把webbroker修改为http.sys, 借机把DelphiWebMVC 框架的http服务部分修改为了 http.sys 支持。 性能不错并发支持很高。 https://download.csdn.net/download/joman5/10791347 下载地址 官网http://www.delphiwebmvc.com/  ...

PRSoft的博客 1551

intraweb部署windows服务http.sys详细方法

本文编译环境是 win7+Delphi xe+iw15.0.10。使用http.sys,能够让delphi 的多层服务飞起来。本程序适用于intraweb开发。使用http.sys 作为web 服务核心,开机就自动运行,无需再部署到复杂的IIS上了。运行本文里bat即可自动安装服务自动部署了。非常简单非常实用。

使用http.sys,让delphi 的多层服务飞起来

      一直以来,delphi 的网络通讯层都是以indy 为主,虽然indy 的功能非常多,涉及到网络服务的 各个方面,但是对于大多数多层服务来说,就是需要一个快速、稳定、高效的传输层。Delphi 的 datasnap 主要通过三种实现数据通讯的,一种是大家恨得牙痒痒的indy,另外一种是通过iis 的isapi,最后一种是通过 apache  的动态模块(DSO) 来实现。   ...

weixin_34148456的博客 718

intraweb15部署windows服务http.sys方法

intraweb15部署windows服务http.sys方法 1

微软 HTTP.SYS 服务配置工具 HttpConfig(1.0.0.0).rar

在使用微软 的 HTTP(IIS) 服务API 时,需要对请求路径,端口等进行配置,如果没有配置,打开时会提示错误,导致无法打开,使用这个工具就很容易配置好。

intraweb部署windows服务http.sys方法

intraweb部署windows服务http.sys方法 一、创建服务程序“Project1.exe” 1、编译环境是 win7+Delphi xe+iw15.0.10,如果是win10,Delphi需要选择管理员权限运行才能生成exe。 2、打开xe>file>new>other,选择intraweb application  wizard。 3、向导界面上applicati...

qq_39843608的博客 1427

快手极速版抓包实战:安卓/iOS双端获取client_salt全流程解析(避坑指南)

本文详细解析了在安卓和iOS平台上获取快手极速版关键参数`client_salt`的全流程,包括环境配置、抓包工具使用、参数识别与转换等实战技巧。特别针对双端差异和反抓包机制提供了避坑指南,帮助开发者高效安全地完成数据获取任务。

weixin_29021195的博客 714

Delphi Http Https 最好的解决方法(二)

Delphi http https

2091

SpringBoot与Flowable整合:构建高效审批工作流的实战指南

本文是一份SpringBoot与Flowable整合构建高效审批工作流的实战指南。通过一个经典的二级审批场景,详细介绍了从项目搭建、BPMN流程设计、核心服务编写到RESTful API构建的完整步骤。文章深入探讨了如何利用Flowable工作流引擎实现审批流程的自动化驱动与灵活管理,并分享了变量管理、监听器、异步执行等进阶技巧与常见避坑指南,帮助开发者快速构建健壮、可维护的企业级审批系统。

qsc9012345的博客 519

逆向工程实战:解密AppleAccount的X-MMe-Nas-Qualify签名生成机制

本文通过逆向工程实战,详细解析了AppleAccount服务中X-MMe-Nas-Qualify签名的生成机制。作者利用Frida进行动态追踪定位签名源头,结合IDA Pro进行静态分析,并借助LLDB动态调试还原核心算法。文章最终分享了如何独立于苹果官方库,通过Python代码复现签名算法,为自动化测试和深度交互苹果服务的开发者提供了关键技术路径。

weixin_29323049的博客 706

使用http.sys,让delphi 的多层服务真的飞起来

原delphi窑洞洞主xalion在自己的博客上发过一篇文章: 《使用http.sys,让delphi 的多层服务飞起来》 http://www.cnblogs.com/xalion/p/6219515.html 这里边提到如何把mormot的httpserver抠出来,嫁接到webbroker上,非常好的思路。 可惜xalion没贴出全部源代码。 最近对WebBroker做了点深入研究...

dediaokou5596的博客 645

某银行大数据分析平台之云原生架构

软考架构师论文

doudoudouy的博客 768

IW如何在StandAlone(Indy)IntraWeb应用程序中启用HTTPS

如何在StandAlone(Indy)IntraWeb应用程序中启用HTTPS 1)设置ServerController.SSLOptions.Port = 443(您也可以使用任何其他端口,但是443是标准HTTPS端口) 2)生成证书。在开发过程中,您可以使用自签名证书。 在此处免费获取一个:https : //zerossl.com3)如果您从ZeroSSL.com获得了自签名证书,则将文件重命名为:crt.txt-> cert.pem key.txt- > key.pem 4 ..

pulledup的博客 973

常学常新:《Attention Is All You Need》万字解读!

常学常新:《Attention Is All You Need》万字解读!

hunteritself的博客 3647

Python大数据舆情分析系统开发实战

舆情监测系统是大数据分析的重要应用场景,通过自然语言处理(NLP)技术解析社交媒体文本情感倾向。基于Python技术栈的解决方案整合了Scrapy爬虫框架进行数据采集,PySpark处理海量文本数据,结合SnowNLP和Jieba实现中文语义分析。系统采用微服务架构设计,包含数据采集层、处理层、存储层和应用层,通过情感分析优化和实时热点检测算法提升监测准确率。典型应用包括企业品牌监测、公共事件预警等场景,开发过程中需特别注意数据合规性和分布式集群的性能调优。

weixin_34408624的博客 387

Delphi 实现http请求

在把idhttp改成nethttpclient过程中,碰到一些参数了解不全面,故此来整理下请求头包含哪些,进行深入了解和熟悉。2. nethttpclient可以支持https无需带dll,idhttp需要openssl的几个dll才可以实现。旧项目维护时发现使用的是TIdHttp,查阅资料发现目前都是使用TNetHTTPClient。这是一个登陆接口,账户account是一个中文字符的传输,使用idhttp的时候涉及转码。HTTP Request Header 请求头,这里以百度的请求头为例进行分析。

weixin_43487532的博客 7476

基于加速科技ST2500的SN74HC00N芯片测试计划

实际上随着工艺的进步,器件内部和引脚间的绝缘氧化膜越来越薄,导致漏电流发生的概率更大,另外制造过程中的工艺缺陷导致的桥接,异物或封装过程中造成的芯片划伤、引裂,都会造成IC的漏电流偏大,有部分产品可能会表现出漏电流偏大,但功能正常,此类产品具有潜在的可靠性问题,漏电流测试的目的就是把具有此类缺陷的产品筛选出来,避免其流到最终产品造成更大的损失。漏电流的测试方法相对简单,就是根据产品手册或测试规范对被测引脚施加额定的电压,然后测量其输入或流出的电流是否符合相应的设计规范。74HC00引脚功能如表所示。

weixin_68288412的博客 1434

http.sys的简单应用

//public void Run() //{ // //httpListener提供一个简单,可通过编程方式控制的Http协议侦听器。此类不能被继承。 // if (!HttpListener.IsSupported) // { // //该类只能在Win...

dibeichan3033的博客 285

【Matlab】如何使用Simulink进行电池建模和SOC预估

“通过Simulink电池建模进行SOC预估,其实挺容易!” 1 声明 本文只描述一般性电池建模方法,文中出现的电池相关数据来自一些论文或者外文文献,对数据的真实性不做任何保证。 本文参考了不少国内高校的硕士论文和外文文献,所以本篇文章只作为学术性交流,未经...

wanff1204的博客 2万+

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

delphiwebmvc 框架加入http.sys性能得到很大提升

2019独角兽企业重金招聘Python工程师标准>>> ...

weixin_34308389的博客 419

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

使用http.sys,让delphi的多层服务真的飞起来【第二部】

这是本专题的续集,没读过第一部的看这里:http://bbs.2ccc.com/topic.asp?topicid=548153之所以要搞第二部是因为第一部跟贴太多,读起来不方便,浪费大家的时间。今天咱们聊的主题是:Delphi的DataSnap实质分析先说DataSnap中文应该翻译成什么,我个人的译法是:数据快照。DataSnap是后来名字,原来叫MIDAS,Multi-tier ...

dediaokou5596的博客 506

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

IntraWEB Ultimate 15.2.20是Delphi自带的一套Web开发框架

IntraWEB Ultimate 15.2.20是Delphi自带的一套Web开发框架   IntraWeb是Delphi自带的一套Web开发框架,使用IntraWeb能够让开发人员比以往更快,更容易地创建Web应用程序。并且整个过程非常的快速和简单,像桌面应用程序一样开发,但作为标准HTML和JavaScript部署到Web,无需插件。IntraWeb完全支持所见即所得的开发方式,IntraWeb同ASP.net的WebForm的开发方式非常类似,也支持各类Server端事件,例如Button的...

q2315702359的博客 2331

如何在StandAlone的IntraWeb或非IntraWeb的应用程序中启用Indy OpenSSL自签名的HTTPS

如何在StandAlone的IntraWeb或非IntraWeb的应用程序中启用基于Indy OpenSSL自签名的HTTPS 一、说白了,让你用基于Open SSL的Indy SSL库: https://www.atozed.com/intraweb/download/ssl/ https://opendec.wordpress.com/ https://www.openssl.org/source/ 二、证书格式转换工具: I...

pulledup的博客 584

intraweb 独立服务器/服务部署

在开发应用程序时,只需运行 SA 服务器并在浏览器上键入代表本地主机,是嵌入式 Web 服务器正在侦听的端口(检查以了解属性),是强制启动新的 IntraWeb 命令用户会话。您还可以通过网络测试您的应用程序。在另一台计算机上,只需键入主机的 IP(例如:192.168.100.10)并包括端口号和新的会话命令:http://192.168.100.10:8888/$/start。如果您无法打开应用程序,请检查正确的网络设置以及任何可能阻止正常通信的防火墙/路由器/代理/等规则。

hacking的专栏 705

ReportMachineCOM控件用法 RMReport.OCX

ReportMachine版本简介:    1、VCL版:这是ReportMachine基础版本,一般以全部源码形式提供给注册用户,可以用在Delphi5-Delphi 2009,C++ Builder5.0-C++ Builder 2009开发环境中。    2、com版:是个单独的ocx文件(RMReport.ocx),是用Delphi 7.0及以上版本开发的,是对VCL版ReportMach...

zjun2nd的博客 5411
上一篇: 使用C++(I386+)编译一个纯二进制文件
下一篇: intraweb 独立服务器/服务部署
hacking
博客等级 码龄25年 20粉丝 6原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值