DELPHI盒子
!实时搜索: 盒子论坛 | 注册用户 | 修改信息 | 退出
检举帖 | 全文检索 | 关闭广告 | 捐赠
技术论坛
 用户名
 密  码
自动登陆(30天有效)
忘了密码
≡技术区≡
DELPHI技术
lazarus/fpc/Free Pascal
移动应用开发
Web应用开发
数据库专区
报表专区
网络通讯
开源项目
论坛精华贴
≡发布区≡
发布代码
发布控件
文档资料
经典工具
≡事务区≡
网站意见
盒子之家
招聘应聘
信息交换
论坛信息
最新加入: melqui
今日帖子: 12
在线用户: 30
导航: 论坛 -> DELPHI技术 斑竹:liumazi,sephil  
作者:
男 sxqwhxq (步惊云) ★☆☆☆☆ -
普通会员
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);这一句没有了,把这句写在工程文件似乎也不妥,也不知到何处填写默认端口号。有做过的请指导下。
----------------------------------------------
-
作者:
男 bahamut8348 (leonna) ★☆☆☆☆ -
普通会员
2018/5/2 10:30:34
1楼: dll一样可以带ui。
感觉你要多看看相关基础。
----------------------------------------------
--
作者:
男 sxqwhxq (步惊云) ★☆☆☆☆ -
普通会员
2018/5/2 11:00:36
2楼: 我觉得关键不是设计一个窗体,而是如何创建一个全局的TIdHTTPWebBrokerBridge对象,并设置好该对象的默认端口。
----------------------------------------------
-
作者:
男 sxqwhxq (步惊云) ★☆☆☆☆ -
普通会员
2018/5/2 11:45:25
3楼: @bahamu8348:还真不知道一个在iis7中发布的dll,怎样设计可视界面。
----------------------------------------------
-
作者:
男 wang_80919 (Flying Wang) ★☆☆☆☆ -
普通会员
2018/5/2 12:39:59
4楼: 楼主 iis 什么时候允许你 DLL 设端口了?
人家 1 楼 以为你 的 DLL 和 IIS 毫无关系呢。
结果你居然不按常理出牌。
不过我有点不敢骂你。怕你退群。
----------------------------------------------
(C)(P)Flying Wang
作者:
男 crystalmoon (crystalmoon) ★☆☆☆☆ -
盒子活跃会员
2018/5/2 14:18:02
5楼: 确实,既然是isap dll了,那么怎么设端口就是iis的事了。
----------------------------------------------
-
作者:
男 bahamut8348 (leonna) ★☆☆☆☆ -
普通会员
2018/5/2 14:24:03
6楼: 。。。
原来是要做iis的插件。
那怎么设端口根本和你没关系好么。。。
----------------------------------------------
--
作者:
男 sxqwhxq (步惊云) ★☆☆☆☆ -
普通会员
2018/5/2 16:35:33
7楼: datasnap rest没端口怎么通讯?如果一台服务器上有两个rest,没端口怎么区分? 我做过iis上发布intraweb dll, 必须要端口的,这个我已经成功搞过。
----------------------------------------------
-
作者:
男 wang_80919 (Flying Wang) ★☆☆☆☆ -
普通会员
2018/5/2 16:56:40
8楼: 居然不知道 IIS 自己是有端口的。
一个 IIS 端口内的 CGI 是通过路径来区分的,这种我这个弱智都知道的问题,楼主居然不知道。

楼主连我都不如,还好意思搞开发?
----------------------------------------------
(C)(P)Flying Wang
作者:
男 mousesoft (MouseSoft) ★☆☆☆☆ -
盒子活跃会员
2018/5/2 17:17:02
9楼: 放到一个datamodule就可以了
----------------------------------------------
-
作者:
男 bahamut8348 (leonna) ★☆☆☆☆ -
普通会员
2018/5/2 19:12:45
10楼: 既然兰州总想自己开端口折腾。那很简单啊。做成exe独立运行就是了。
你要用人家的容器,那你就必须符合人家的规范啊。
----------------------------------------------
--
作者:
男 wang_80919 (Flying Wang) ★☆☆☆☆ -
普通会员
2018/5/2 19:31:41
11楼: 通过 7 楼 证明,楼主水平非常高,我们大家都不够格。
----------------------------------------------
(C)(P)Flying Wang
作者:
男 sxqwhxq (步惊云) ★☆☆☆☆ -
普通会员
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大帅明鉴。
----------------------------------------------
-
作者:
男 wang_80919 (Flying Wang) ★☆☆☆☆ -
普通会员
2018/5/3 14:55:33
13楼: 我都承认技不如人了,你还想咋地?
----------------------------------------------
(C)(P)Flying Wang
作者:
男 bahamut8348 (leonna) ★☆☆☆☆ -
普通会员
2018/5/3 16:26:44
14楼: 既然都要自己去处理端口了,那你还需要用iis发布做啥?
用iis做容器的意图不就是让iis帮你做并发处理么?

既然你都要自己管理端口了,那还要iis干啥?

另外一个就是,我记忆中,iw的官方demo里,当编译成dll发布的时候是不需要指定端口的。
----------------------------------------------
--
作者:
男 wang_80919 (Flying Wang) ★☆☆☆☆ -
普通会员
2018/5/3 16:37:00
15楼: 我觉得 IW 开发者自己都不知道居然可以这样玩。

设 IIS 端口 为 81。
楼主自己的 IW DLL,端口为 82。
路径理论上为 http://locahost:端口/iwdemo
求 访问路径写法。
----------------------------------------------
(C)(P)Flying Wang
作者:
男 zhahongyi (如风) ★☆☆☆☆ -
普通会员
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窗体的,否则肯定是不能运行。
此帖子包含附件:
JPEG 图像
大小:196.9K
----------------------------------------------
-
作者:
男 wang_80919 (Flying Wang) ★☆☆☆☆ -
普通会员
2018/5/3 17:49:21
17楼: 我在 15 楼的问题,是给楼主提的,建议楼主自己回答。

结果楼主就是不敢回答 15 楼的问题。
----------------------------------------------
(C)(P)Flying Wang
作者:
男 sxqwhxq (步惊云) ★☆☆☆☆ -
普通会员
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中指定端口,客户端应该是感知不到的。
----------------------------------------------
-
作者:
男 wang_80919 (Flying Wang) ★☆☆☆☆ -
普通会员
2018/5/3 19:08:09
19楼: 楼上的意思就是 李维没有讲 喝纯净水的时候如何用筷子的问题。

同时楼主就是不敢回答 15 楼的问题。
----------------------------------------------
(C)(P)Flying Wang
作者:
男 crystalmoon (crystalmoon) ★☆☆☆☆ -
盒子活跃会员
2018/5/3 19:54:39
20楼: rest 方式 竟然用了感知 两个字。
不恰当。
rest 本质就是一个符合一个约定的http api....任何客户端,只要以符合约定的方式去调用就可以。。。只要你的路径正确,就可以调用的到。。。和端口无关。
----------------------------------------------
-
作者:
男 sxqwhxq (步惊云) ★☆☆☆☆ -
普通会员
2018/5/3 20:33:36
21楼: 但愿是我学艺不精,应该是我学艺不精,大师们观点都一样。
----------------------------------------------
-
作者:
男 vclclx (vclclx) ★☆☆☆☆ -
普通会员
2018/5/3 20:47:04
22楼: Web模块,对象浏览器里面DSHTTPWebDispatcher1.RESTContext的默认是rest/,这个就是路径吧。
大概是:
http://iisIP:Port/datasnap/rest/TServerMethods1/EchoString/abc/
这样的调用吧,你自己试试。
----------------------------------------------
-
作者:
男 bahamut8348 (leonna) ★☆☆☆☆ -
普通会员
2018/5/3 21:17:00
23楼: 兰州是在是搞不定iis的插件,那就搞成exe不就完了么?你自己想怎么弄怎么弄。

如果想高并发的话,就用nginx做反向代理。比iis牛逼多了。
----------------------------------------------
--
作者:
男 sxqwhxq (步惊云) ★☆☆☆☆ -
普通会员
2018/5/3 21:29:23
24楼: 用李维的办法,优化一下,不要dll也是可以的。
----------------------------------------------
-
作者:
男 he_19_79 (he) ▲▲▲▲▲ -
普通会员
2018/5/3 21:44:32
25楼: 我都是这样用的:

http://192.168.1.100:8082(这个port是指向另一个虚拟机)/AAA/BBB.dll/SOAP

IIS下用虚拟目录(设置为执行)就可以了.
----------------------------------------------
-
作者:
男 sxqwhxq (步惊云) ★☆☆☆☆ -
普通会员
2018/5/3 21:57:48
26楼: 我用的是win2008R2的iis
----------------------------------------------
-
信息
登陆以后才能回复
Copyright © 2CCC.Com 盒子论坛 v3.0.1 版权所有 页面执行972.6563毫秒 RSS