导航:
论坛 -> DELPHI技术
斑竹:liumazi,sephil
作者:
2018/5/2 10:21:08
标题:
datasnap rest如何以dll方式发布?
浏览:1896
加入我的收藏
楼主:
datasnap rest以exe方式,服务器端自动生成如下代码 procedure TForm1.FormCreate(Sender: TObject); begin FServer := TIdHTTPWebBrokerBridge.Create(Self); end; procedure TForm1.ButtonStartClick(Sender: TObject); begin StartServer; end; procedure TForm1.StartServer; begin if not FServer.Active then begin FServer.Bindings.Clear; FServer.DefaultPort := StrToInt(EditPort.Text); FServer.Active := True; end; end; FServer的默认端口可以手动设置。 但dll方式下没有了可视窗体,自动产生的代码似乎没有生成全局的服务对象, 即 FServer := TIdHTTPWebBrokerBridge.Create(Self);这一句没有了,把这句写在工程文件似乎也不妥,也不知到何处填写默认端口号。有做过的请指导下。
----------------------------------------------
-
作者:
2018/5/2 10:30:34
1楼:
dll一样可以带ui。 感觉你要多看看相关基础。
----------------------------------------------
--
作者:
2018/5/2 11:00:36
2楼:
我觉得关键不是设计一个窗体,而是如何创建一个全局的TIdHTTPWebBrokerBridge对象,并设置好该对象的默认端口。
----------------------------------------------
-
作者:
2018/5/2 11:45:25
3楼:
@bahamu8348:还真不知道一个在iis7中发布的dll,怎样设计可视界面。
----------------------------------------------
-
作者:
2018/5/2 12:39:59
4楼:
楼主 iis 什么时候允许你 DLL 设端口了? 人家 1 楼 以为你 的 DLL 和 IIS 毫无关系呢。 结果你居然不按常理出牌。 不过我有点不敢骂你。怕你退群。
----------------------------------------------
(C)(P)Flying Wang
作者:
2018/5/2 14:18:02
5楼:
确实,既然是isap dll了,那么怎么设端口就是iis的事了。
----------------------------------------------
-
作者:
2018/5/2 14:24:03
6楼:
。。。 原来是要做iis的插件。 那怎么设端口根本和你没关系好么。。。
----------------------------------------------
--
作者:
2018/5/2 16:35:33
7楼:
datasnap rest没端口怎么通讯?如果一台服务器上有两个rest,没端口怎么区分? 我做过iis上发布intraweb dll, 必须要端口的,这个我已经成功搞过。
----------------------------------------------
-
作者:
2018/5/2 16:56:40
8楼:
居然不知道 IIS 自己是有端口的。 一个 IIS 端口内的 CGI 是通过路径来区分的,这种我这个弱智都知道的问题,楼主居然不知道。 楼主连我都不如,还好意思搞开发?
----------------------------------------------
(C)(P)Flying Wang
作者:
2018/5/2 17:17:02
9楼:
放到一个datamodule就可以了
----------------------------------------------
-
作者:
2018/5/2 19:12:45
10楼:
既然兰州总想自己开端口折腾。那很简单啊。做成exe独立运行就是了。 你要用人家的容器,那你就必须符合人家的规范啊。
----------------------------------------------
--
作者:
2018/5/2 19:31:41
11楼:
通过 7 楼 证明,楼主水平非常高,我们大家都不够格。
----------------------------------------------
(C)(P)Flying Wang
作者:
2018/5/3 13:04:30
12楼:
楼上,你水平高,影响力大,只有你批评别人的份,我哪敢得罪你呢。 但访问intraweb开发的dll,确实需要指定端口号,是在iw中设置的,访问必须这样:http://61.187.188.80:33128/index.dll/。其中33128是在iw中指定的服务器dll的端口号。这个我已经搞过,成功使用多年了。 datasnap rest中间件服务器也必须指定全局服务对象的端口号,客户端的RestConnection凭端口号port和服务器ip地址host两个参数访问服务器中间件,如果以exe发布,系统会自动创建全局的rest服务对象和供开发者使用的form,在form上直接指定中间件的连接端口号。 但以dll方式发布,由于系统自动产生的代码,没有创建全局的服务对象,也没有创建form,所有不知道在何处设置端口号,查阅了很多datasnap资料,在没找到相关说明,但端口号是客户端RestConnectio访问REST服务器所必须的。 请wang_80919大帅明鉴。
----------------------------------------------
-
作者:
2018/5/3 14:55:33
13楼:
我都承认技不如人了,你还想咋地?
----------------------------------------------
(C)(P)Flying Wang
作者:
2018/5/3 16:26:44
14楼:
既然都要自己去处理端口了,那你还需要用iis发布做啥? 用iis做容器的意图不就是让iis帮你做并发处理么? 既然你都要自己管理端口了,那还要iis干啥? 另外一个就是,我记忆中,iw的官方demo里,当编译成dll发布的时候是不需要指定端口的。
----------------------------------------------
--
作者:
2018/5/3 16:37:00
15楼:
我觉得 IW 开发者自己都不知道居然可以这样玩。 设 IIS 端口 为 81。 楼主自己的 IW DLL,端口为 82。 路径理论上为 http://locahost:端口/iwdemo 求 访问路径写法。
----------------------------------------------
(C)(P)Flying Wang
作者:
2018/5/3 17:41:36
16楼:
1.访问必须这样:http://61.187.188.80:33128/index.dll 这个33128的是iis给网站绑定的端口,而不是您在iw里指定的端口。请看贴图,不信的话可以在iis里修改编辑这个端口,然后再试试访问。 2.delphi开发isap dll,除了DataModule以外,是不能有任何form窗体的,否则肯定是不能运行。
此帖子包含附件: 大小: 196.9K
----------------------------------------------
-
作者:
2018/5/3 17:49:21
17楼:
我在 15 楼的问题,是给楼主提的,建议楼主自己回答。 结果楼主就是不敢回答 15 楼的问题。
----------------------------------------------
(C)(P)Flying Wang
作者:
2018/5/3 17:57:18
18楼:
李维的Delphi 10.1 Berlin DataSnap 开发手册 高清版 V2017-5-22.PDF 268-274页有对部署datasnap rest为dll方式的说明,但他只字未提如何设置rest的端口。由于没有端口,客户端REstconnection无法访问发布在iis的 datasnap rest的dll。如果在iis中指定端口,客户端应该是感知不到的。
----------------------------------------------
-
作者:
2018/5/3 19:08:09
19楼:
楼上的意思就是 李维没有讲 喝纯净水的时候如何用筷子的问题。 同时楼主就是不敢回答 15 楼的问题。
----------------------------------------------
(C)(P)Flying Wang
作者:
2018/5/3 19:54:39
20楼:
rest 方式 竟然用了感知 两个字。 不恰当。 rest 本质就是一个符合一个约定的http api....任何客户端,只要以符合约定的方式去调用就可以。。。只要你的路径正确,就可以调用的到。。。和端口无关。
----------------------------------------------
-
作者:
2018/5/3 20:33:36
21楼:
但愿是我学艺不精,应该是我学艺不精,大师们观点都一样。
----------------------------------------------
-
作者:
2018/5/3 20:47:04
22楼:
Web模块,对象浏览器里面DSHTTPWebDispatcher1.RESTContext的默认是rest/,这个就是路径吧。 大概是: http://iisIP:Port/datasnap/rest/TServerMethods1/EchoString/abc/ 这样的调用吧,你自己试试。
----------------------------------------------
-
作者:
2018/5/3 21:17:00
23楼:
兰州是在是搞不定iis的插件,那就搞成exe不就完了么?你自己想怎么弄怎么弄。 如果想高并发的话,就用nginx做反向代理。比iis牛逼多了。
----------------------------------------------
--
作者:
2018/5/3 21:29:23
24楼:
用李维的办法,优化一下,不要dll也是可以的。
----------------------------------------------
-
作者:
2018/5/3 21:44:32
25楼:
我都是这样用的: http://192.168.1.100:8082(这个port是指向另一个虚拟机)/AAA/BBB.dll/SOAP IIS下用虚拟目录(设置为执行)就可以了.
----------------------------------------------
-
作者:
2018/5/3 21:57:48
26楼:
我用的是win2008R2的iis
----------------------------------------------
-