热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

【一起学UniGUI】创建新的uniGUI应用程序(11)

打开Delphi10.3.1,在DelphiIDE中可以通过uniGUI应用程序向导轻松创建一个新的uniGUI应用程序(必须通过此方式来创建一个新的uniGUI应用

      打开Delphi 10.3.1,在Delphi IDE中可以通过uniGUI应用程序向导轻松创建一个新的uniGUI应用程序(必须通过此方式来创建一个新的uniGUI应用程序),并按向导界面提示操作。

(一)、使用uniGUI应用程序向导创建一个新的uniGUI应用程序,主要步骤为:
1、File->New->Other

2、选择 uniGUI for Delphi-> Application Wizard,点“OK”

3、填写项目名称和项目存放目录,并且按需求选择一个项目类型后(开发学习时一般我选第一个),点“OK”,系统会自动生成相关的项目代码及几个模块和窗体(见图二)

      到这里,一个应用程序项目的架构由UniGUI向导自动生成了,从上图我们可以看到自动生成了几个模块和窗体,这也就是我们前面讲的几个重要模块和窗体(后面的内容重复说明或复习一下):每个uniGUI应用程序都是使用一个主窗体(MainForm)的专用窗体和两个专用的模块主模块(MainModule)服务模块(ServerModule)组成且自动创建的。登录窗体(LoginForm)可视情况选择或增加(类似额外添加,以后会讲,这里是没有的)。上述各模块和窗体说明请参阅之前的文章【一起学UniGUI】--UniGUI的窗体和模块(6)

(二)、【项目类型】:也对应应用程序以后的部署选项(可一起参阅之前的“【一起学UniGUI】--UniGUI的部署选项(5)”),下面分类进行综合说明(请结合上图):

1、Standalone Server (独立服务器)

       最简单的项目类型是独立服务器。在这种模式下,应用程序服务器像桌面应用程序一样直接运行。它也是用于调试应用程序的模式。运行应用程序可执行文件后(它是一个EXE文件),它将最小化到托盘图标,并运行到用户手动终止为止。见下图:


        一个独立的应用程序可以从浏览器访问,地址栏只需键入:http://localhost:8077,其中8077是应用程序绑定到的默认专用端口号(侦听端口)。开发者可以在服务模块(ServerModule)中轻松地修改它。
       独立模式只建议用于调试目的。因为它是作为桌面应用程序运行的,所以当当前用户注销时,它就会被终止。而且,它不会在重启后自动启动。模式最适合用于开发时调试。当您的应用程序在调试模式下运行时,您可以设置断点、暂停、转到光标位置,并使用Delphi IDE的所有其他高级调试功能来调试您的应用程序,就像调试任何其他VCL应用程序一样。不建议在正式使用环境中使用此模式,因为它不会在OS重新启动时自动运行。此外,它可以很容易受未经授权的用户干预而被终止。

      独立服务器项目是uniGUI项目的最简单类型。它创建一个运行类似于桌面应用程序的应用程序(EXE文件),即由用户启动和终止应用程序。这种类型的应用程序最适合用于调试目的。下面是一个典型的新创建的独立服务器项目的示例DPR文件。


program Project1;
 
uses
  Forms,
  ServerModule in 'ServerModule.pas' {UniServerModule: TUniGUIServerModule},
  MainModule in 'MainModule.pas' {UniMainModule: TUniGUIMainModule},
  Main in 'Main.pas' {MainForm: TUniForm};
 
{$R *.res}
 
begin
  Application.Initialize;
  TUniServerModule.Create(Application);
  Application.Run;
end.

2. ISAPI 模块
      该技术最初是由Microsoft公司采用基于Windows DLL技术应用到Microsoft IIS产品中的。当然,还有其他web服务器,如Apache,也支持加载ISAPI模式。ISAPI模式在许多方面与前面讨论的选项不同。最重要的是,它不包含内置的Web服务器,而不是独立的服务和Windows服务。在ISAPI模式下,IIS服务器是HTTP服务器,ISAPI模块执行它的请求。您可以使用Delphi IDE中的uniGUI向导轻松创建ISAPI模式应用程序。编译后,uniGUI应用程序将输出DLL文件而不是EXE文件。这个DLL文件必须部署到IIS服务器(详细描述在Web部署部分的ISAPI模式中)。uniGUI 应用程序所生成的DLL文件支持从IIS 5.1开始的所有IIS版本。ISAPI模式为开发人员提供了在同一服务器上部署许多模块的自由,而不需要为每个应用程序选择不同的端口。它还继承了Microsoft IIS中所有高级安全特性的优点。
       运行ISAPI应用程序就像在浏览器中打开以下URL一样简单,访问格式如下:
               http://localhost/appdir/app.dll
      如果你有多个应用程序在同一个文件夹下,你可以调用他们只需指定一个不同的DLL名称:
              http://localhost/appdir/app.dll
              http://localhost/appdir/app2.dll
              http://localhost/appdir/appaccount.dll

      如果您计划启动ISAPI模式项目并选择它作为默认的部署方法,您可以选择这种类型的项目。这个项目在编译时将生成一个DLL。ISAPI模块可以部署到Microsoft® IIS服务器或用于Windows的Apache服务器。下面是一个典型的新创建的ISAPI模块项目的示例DPR文件。


library Project1;
 
uses
  uniGUIISAPI,
  ServerModule in 'ServerModule.pas' {UniServerModule: TUniGUIServerModule};
 
{$R *.res}
 
exports
  GetExtensionVersion,
  HttpExtensionProc,
  TerminateExtension;
end.

3. Standalone Server (独立服务器)/ISAPI 模块

      这种类型的项目是使用条件编译指令来创建上面两种类型之一的组合项目:独立服务器或ISAPI模块。如果ISAPI模块部署的目标是正式使用,那么这种类型的项目是非常好的开始。只需注释掉DPR文件的第一行,就可以将独立服务器转换为ISAPI DLL。


{$define UNIGUI_VCL} // 注释掉这一行(即改为:{.$define UNIGUI_VCL}),可使用这个项目改成一个ISAPI模式
 
{$ifndef UNIGUI_VCL}
library
{$else}
program
{$endif}
  Project1;
 
uses
  uniGUIISAPI,
  Forms,
  ServerModule in 'ServerModule.pas' {UniServerModule: TUniGUIServerModule},
  MainModule in 'MainModule.pas' {UniMainModule: TUniGUIMainModule},
  Main in 'Main.pas' {MainForm: TUniForm};
 
{$R *.res}
 
{$ifndef UNIGUI_VCL}
exports
  GetExtensionVersion,
  HttpExtensionProc,
  TerminateExtension;
{$endif}
 
begin
{$ifdef UNIGUI_VCL}
  Application.Initialize;
  TUniServerModule.Create(Application);
  Application.Run;
{$endif}
end.

      默认情况下,上面的项目将生成一个EXE文件,它是一个独立的服务器。如果注释掉项目的第一行,它将变成ISAPI模块(方法详见下面说明及步骤)。稍后,您可以通过删除第一行中的注释将其转换回独立的EXE模式。下面说一下互相转换的方法及步骤。

将组合项目转换为ISAPI DLL的步骤:

1)、打开DPR文件。
2)、将DPR文件的第一行更改为(就是在{后面加入一个“.”来注释掉此行条件):{.$define UNIGUI_VCL}
3)、如果您的Delphi版本是XE2或更新版本,则需要关闭项目并重新打开它。(如果您的Delphi版本比XE2老,则不需要此步骤)
4)、 Build您的应用程序。
5)、将在输出文件夹中创建DLL文件。

将组合项目转换回独立模式的步骤:

1)、打开DPR文件。
2)、将DPR文件的第一行更改为:{$define UNIGUI_VCL}
3)、如果您的Delphi版本是XE2或更新版本,则需要关闭项目并重新打开它。(如果您的Delphi版本比XE2老,则不需要此步骤)
4)、Build您的应用程序。
5)、将在输出文件夹中创建EXE文件。

4. Windows 服务

      通过创建uniGUI Windows服务应用程序,可以将应用程序部署为标准的Windows服务应用程序。这种方法是正式使用环境的首选方法之一。每次系统重启时,Windows服务都会自动运行。它将保证Web应用程序的可用性。Windows服务应用程序可以像上面描述的独立服务器一样从浏览器访问,这意味着每个Windows服务应用程序都需要一个专用端口(未使用的专用端口)。

      正式环境的另一种部署方法是Windows服务。它创建了一个标准的Delphi Windows服务项目,同时也做了一些修改,以允许创建uniGUI ServiceModule。服务项目生成标准的Windows服务可执行文件,可以像安装任何常规Windows服务一样安装这些文件。Windows服务是由Windows自动启动的,只要Windows在运行,可确保它总是可用的。这为uniGUI应用程序提供了高级别的可用性。


program Project1;
 
uses
  SvcMgr,
  ServerModule in 'ServerModule.pas' {UniServerModule: TUniGUIServerModule},
  MainModule in 'MainModule.pas' {UniMainModule: TUniGUIMainModule},
  Main in 'Main.pas' {MainForm: TUniForm},
  ServiceModule in 'ServiceModule.pas' {UniServiceModule: TUniGUIService};
 
{$R *.res}
 
begin
  if not Application.DelayInitialize or Application.Installing then
    Application.Initialize;
  Application.CreateForm(TUniServiceModule, UniServiceModule);
  Application.Run;
end.

备注说明:新的程序或项目,都是从此开始的。上面的相关代码,也都是自动生成的。


推荐阅读
  • 作为软件工程专业的学生,我深知课堂上教师讲解速度之快,很多时候需要课后自行消化和巩固。因此,撰写这篇Java Web开发入门教程,旨在帮助初学者更好地理解和掌握基础知识。通过详细记录学习过程,希望能为更多像我一样在基础方面还有待提升的学员提供有益的参考。 ... [详细]
  • 基于Net Core 3.0与Web API的前后端分离开发:Vue.js在前端的应用
    本文介绍了如何使用Net Core 3.0和Web API进行前后端分离开发,并重点探讨了Vue.js在前端的应用。后端采用MySQL数据库和EF Core框架进行数据操作,开发环境为Windows 10和Visual Studio 2019,MySQL服务器版本为8.0.16。文章详细描述了API项目的创建过程、启动步骤以及必要的插件安装,为开发者提供了一套完整的开发指南。 ... [详细]
  • 本文将带你快速了解 SpringMVC 框架的基本使用方法,通过实现一个简单的 Controller 并在浏览器中访问,展示 SpringMVC 的强大与简便。 ... [详细]
  • 网站访问全流程解析
    本文详细介绍了从用户在浏览器中输入一个域名(如www.yy.com)到页面完全展示的整个过程,包括DNS解析、TCP连接、请求响应等多个步骤。 ... [详细]
  • 本文介绍了如何利用HTTP隧道技术在受限网络环境中绕过IDS和防火墙等安全设备,实现RDP端口的暴力破解攻击。文章详细描述了部署过程、攻击实施及流量分析,旨在提升网络安全意识。 ... [详细]
  • php更新数据库字段的函数是,php更新数据库字段的函数是 ... [详细]
  • 本文总结了一些开发中常见的问题及其解决方案,包括特性过滤器的使用、NuGet程序集版本冲突、线程存储、溢出检查、ThreadPool的最大线程数设置、Redis使用中的问题以及Task.Result和Task.GetAwaiter().GetResult()的区别。 ... [详细]
  • 如何将TS文件转换为M3U8直播流:HLS与M3U8格式详解
    在视频传输领域,MP4虽然常见,但在直播场景中直接使用MP4格式存在诸多问题。例如,MP4文件的头部信息(如ftyp、moov)较大,导致初始加载时间较长,影响用户体验。相比之下,HLS(HTTP Live Streaming)协议及其M3U8格式更具优势。HLS通过将视频切分成多个小片段,并生成一个M3U8播放列表文件,实现低延迟和高稳定性。本文详细介绍了如何将TS文件转换为M3U8直播流,包括技术原理和具体操作步骤,帮助读者更好地理解和应用这一技术。 ... [详细]
  • 本文介绍了如何利用Struts1框架构建一个简易的四则运算计算器。通过采用DispatchAction来处理不同类型的计算请求,并使用动态Form来优化开发流程,确保代码的简洁性和可维护性。同时,系统提供了用户友好的错误提示,以增强用户体验。 ... [详细]
  • 利用爬虫技术抓取数据,结合Fiddler与Postman在Chrome中的应用优化提交流程
    本文探讨了如何利用爬虫技术抓取目标网站的数据,并结合Fiddler和Postman工具在Chrome浏览器中的应用,优化数据提交流程。通过详细的抓包分析和模拟提交,有效提升了数据抓取的效率和准确性。此外,文章还介绍了如何使用这些工具进行调试和优化,为开发者提供了实用的操作指南。 ... [详细]
  • 在Java Web服务开发中,Apache CXF 和 Axis2 是两个广泛使用的框架。CXF 由于其与 Spring 框架的无缝集成能力,以及更简便的部署方式,成为了许多开发者的首选。本文将详细介绍如何使用 CXF 框架进行 Web 服务的开发,包括环境搭建、服务发布和客户端调用等关键步骤,为开发者提供一个全面的实践指南。 ... [详细]
  • 2018年9月21日,Destoon官方发布了安全更新,修复了一个由用户“索马里的海贼”报告的前端GETShell漏洞。该漏洞存在于20180827版本的某CMS中,攻击者可以通过构造特定的HTTP请求,利用该漏洞在服务器上执行任意代码,从而获得对系统的控制权。此次更新建议所有用户尽快升级至最新版本,以确保系统的安全性。 ... [详细]
  • 本文详细介绍了如何安全地手动卸载Exchange Server 2003,以确保系统的稳定性和数据的完整性。根据微软官方支持文档(https://support.microsoft.com/kb833396/zh-cn),在进行卸载操作前,需要特别注意备份重要数据,并遵循一系列严格的步骤,以避免对现有网络环境造成不利影响。此外,文章还提供了详细的故障排除指南,帮助管理员在遇到问题时能够迅速解决,确保整个卸载过程顺利进行。 ... [详细]
  • 通过以下步骤可以确定SharePoint网站集对应的W3WP进程及其运行状态:首先,打开命令提示符(CMD),然后输入 `iisapp` 命令,该命令将列出当前IIS中所有Web应用程序及其对应的w3wp.exe进程。此外,还可以使用任务管理器或PowerShell脚本来进一步检查这些进程的详细信息和运行状态,以确保网站集的正常运行。 ... [详细]
  • 为了向用户提供虚拟应用程序,通常会在基础架构中部署StoreFront或Web Interface。为了确保安全的远程访问,通常需要在DMZ中配置Secure Gateway或Access Gateway。本文详细对比了这两种界面工具的功能特性,包括用户管理、安全性、性能优化等方面,为企业选择合适的解决方案提供了全面的参考。 ... [详细]
author-avatar
上官邱老
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有