最新消息:

delphi可以开发B/S系统吗?web信息系统

技术资料 koic 45浏览 0评论

Delphi做WebAPI可用技术框架:
datasnap Rest、mOrMot、KbmMw
楼主各自了解一下,后面两个有些门槛,自带的要注意内存泄露.


其实不用太追求什么技术栈,用自己最善长的就可以了,部署与开发是两回事;我用delphi来做后台api,vue做前端也做了好些项目了,很大的并发都不成问题


一直有在用delphi做传统桌面开发, 最有个项目想做成所谓BS架构, 用户通过浏览器登陆,就像我们通过浏览器设置路由器参数一样的界面,实现简单的界面操作。比如通过输入192.168.0.1 在浏览器的界面点击一个按钮, 服务端的程序界面上可以出现‘HELLP WORLD’。 不知该如何入手, 请有经验的前辈,给指点下


这个,首先是你要学 WEB 开发的原理。而学原理,用 Delphi 的 WebBroker 框架,是最容易理解 WEB 原理的。

页面按钮(代码就是 HTML 里面的一个 <input type=”button”>,HTML 代码由浏览器解释后执行,比如这个按钮 click 以后会做什么) –> 浏览器向 Web Server(比如 IIS 或者 Apache)发起一个 TCP 连接 –> 通过 TCP 连接发送一个 HTTP 命令(HTTP 命令都是字符串,也就是发送一串字符串给 Web 服务器)—> Web 服务器根据请求命令,给客户端浏览器返回一个 index.html 文件,或者,–>  调用一个外部程序,把请求参数传给外部程序,外部程序执行完后把结果(可能是 HTML 字符串,也可能是单纯的数据比如 JSON 字符串)返回给 Web Server –> Web Server 通过 TCP 发给浏览器。

WebBroker 框架就是这个“外部程序”,它解析 HTTP 请求的参数。

你创建 WebBroker 的时候如果创建的是独立运行的程序,则不需要外部的 Web Server 比如 IIS,而是程序自己内置了一个 IdHTTPServer 作为 Web Server,这样不需要 IIS 或者 Apache,浏览器可以直接访问这个程序,方便调试。


服务端主要提供的API服务,可以先厘清BS中的B和S之间的关系,其它就好说了:

B:浏览器,里面运行了HTML/CSS/JS,API一般情况是些在了JS里
S:服务端,提供B用的API(HTTP API),同时保存B用的HTML/CSS/JS
API 可以是D写的,也可以是.NET,JAVA,PYTHON等实现的。HTML/CSS/JS就是文件,最终有B下载到本地,在B里运行。

要实现开发,就要分别实现B和S,B完成与客户交互,同时和S打交道,S主要是提供API,一般是访问数据库/文件…


如果不搞明白原理,直接使用 IntraWeb 或者 UniGUI,可以上来就做东西,但中间如果遇到问题,又不懂原理,就不容易解决。
我说的是从 WebBroker 入手理解原理。


用惯了 Delphi 做界面拖拉控件,凡是不能拖拉控件的界面做法都是耍流氓。
还好,IntraWeb 是拖拉控件,UniGUI 也是。
很多年前摸过 IntraWeb 和 UniGUI,不知道这两个玩意现在发展得如何了?很多年前的体会是,这玩意封装得太深了,单纯想自己用代码去把页面上的 button 和服务器端的代码对应起来自己去做一些它本身没有提供的功能的话,很难找到下手的地方。
传统的 WEB 开发是服务器直接输出 HTML 页面。现在流行的前后端分离,服务器只输出数据 JSON,页面上用 VUE 等等 JS 自己把页面画出来。也就是 @gear1023  在上面所提到的做法。
这个做法用 Delphi 做后端,也很简单。入门的做法是使用 WebBroker 框架自己写,更简单的做法是用 DataSnap 的 REST 模式,直接输出 JSON 给页面。
至于页面,用 VUE 也好,用以前的 jquery 也好,都能做。
我自己写了一点 Demo 测试:
https://blog.csdn.net/pcplayer/article/details/128153130
https://blog.csdn.net/pcplayer/article/details/128155867


其实GitHub上有叫兽做的标准框架,OneDelphi 还有一个基于lazaus的OnePascal,可以以他们为基础假设服务


delphi做服务端是很简单的,协议可以忽略,组件已经帮你做了,只需要注重核心功能即可,也就是客户按照你指定的东西提问,服务器返回你要回复的东西。
想找最简单的?我觉得github上的 Horse 组件就最简单了(基于Indy),而且 Horse 还能集成各种插件例如 Json, Log,oct- Sream, 等等
https://github.com/HashLoad/horse
uses Horse;

begin
THorse.Get(‘/ping’,//浏览器端请求参数
procedure(Req: THorseRequest; Res: THorseResponse)
begin
Res.Send(‘pong’);//服务器端回复
end);

THorse.Listen(9000);
end.


其实web端也不复杂,只要把原本的cs思路改成bs思路即可,目前比较流行的是前后端分离模式,也就是b端只用来显示数据。
至于协议,其实就是http,这东西用到再去研究也是可以的,底层协议嘛,1.0、1.1、2.0都是tcp协议,3.0则为udp协议。这个都是预设好的,了解一下即可。
不过我不推荐用delphi去做web server。delphi做这个说省的其实就是省点封装,其他更重要的比如http server,各种框架,delphi方面都很差。完全可以有更好的选择,比如php、go等。

至于说楼主说的登陆页面,其实就是页面提交,一般来说登录都会有一个单独的页面,然后一个表单<form>用来同步发送Post请求,服务端接收请求以后处理,然后返回结果,成功的话返回一个登录id,否则返回错误。客户端则根据不同的返回结果跳转到相应页面即可。
至于安全,服务端验证这个返回的登录id就可以判断当前请求是否合法,不合法就不返回数据就可以了。

转载请注明:Delphi学习者 » delphi可以开发B/S系统吗?web信息系统

发表我的评论
取消评论
表情

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址