D7中midas的行为与d5相比有哪些差异?2、关于无状态服务器的设置3

TOMWLD 2002-12-10 04:10:02
近日实做一多层系统,有如下问题不明,特向诸位求教
问题1:李维书中讲到,ClientDataSet的Locate及SaveToFile方法都会从
AppServer下载全部数据到本地,但经我实验,D7中的ClientDataSet执行这两
个方法时并不会从AppServer下载全部数据。从D5到D7,已经过了一些年头,
我相信大多数程序员对于多层开发的概念大多都来自李维的三本书,到现在
midas技术已发生了一引起变化,大家在开发的过程中发现有哪些差异,望能
在此公布于众,减少我等新手的障碍。100分
问题2:我用SocketConnection做连接,但到客户机执行的时候出现如下错误,
有些不明白,请大家帮忙:Windows socket error:协议家族尚未配置到系统
中或没有它的存在迹象(10049)on api connect。在我本机已经运行通过,服
务端是我做开发的机器,scktsrvr已经运行。100分
问题3:李维书中讲到,当将ClientDataSet设为不等于-1的值时,将
FetchOnDemand设为False,远程服务器即为无状态的,为了能使GetNextPacket
取到正确的数据,他还写了一大段的代码。我发现,在D7中如果按以上设置,
直接调用GetNextPacket即可取得正确的数据,多个客户端同时运行的时候也
不会出错数据相互干扰的现象。那么我们所建的是否是一个无状态的服务器,
如果是,那还有必要写那么多的代码吗?如果不是,那么Remote Datamodule
是不是不能作为无状态服务器?如果服务端是用Transaction Datamodule的
话,按以上设置,则直接调用GetNextPacket并不能获得我们希望的数据,每
次都只能取最前面的几条记录,我相信这种现象表明服务器是真正无状态的,
这是否也反证了Remote Datamodule根本就是一个有状态的服务端。100分
问题4:com+的正确配置一直是我没有解决的问题,请问哪位有成功配置的经
验,望能告知,不胜感激。问题给分200分,不够可再加,但求解决
...全文
45 28 打赏 收藏 转发到动态 举报
写回复
用AI写文章
28 条回复
切换为时间正序
请发表友善的回复…
发表回复
jf1234 2003-03-05
  • 打赏
  • 举报
回复
s
TOMWLD 2002-12-18
  • 打赏
  • 举报
回复
Thanks comanche(太可怕),ytwxw(wxw)

总算有了点眉目,结岾
SilveryFox 2002-12-13
  • 打赏
  • 举报
回复
基于安全性,dcom使用ntlm安全协议,对于目录服务,dcom使用dns。

mts组件必须是一个动态链接库
mts组件必须有标准类工厂,必须在类型库中描述,必须引出dllregisterserver()并且自注册clsid,progid,接口,类型库。
mts对象的去活:
通过调用setcomplete()或setabort()
事务已经放弃或提交
最后一个客户释放对象

资源的释放可使用setcomplete(),setabort()
使用iobjectcontext接口来访问对象描述表
ytwxw 2002-12-13
  • 打赏
  • 举报
回复
TOMWLD(笑天)
1:分布式下是不应该用locate的
2:你已经解决
3:你应该也明白了吧?用object pooling结合李维的技术可以解决的
4:关于配置可以看com+ manager的帮助
还不发分?
ytwxw 2002-12-13
  • 打赏
  • 举报
回复
sonyaiwa(aiwasony) 用simple objectbroker是可以实现负载平衡的无论是socket还是dcom都可以,我试过
TOMWLD 2002-12-13
  • 打赏
  • 举报
回复
没人再提供一点宝贵经验了吗?
ytwxw 2002-12-12
  • 打赏
  • 举报
回复
TOMWLD(笑天)对于com+的发布 我还没有试过呢 我也是新手 不过我认为用socket 确实应该好配置一点。我反正是偏向于用socket的

见笑了 我也是新手:)
ytwxw 2002-12-12
  • 打赏
  • 举报
回复
comanche(太可怕):我试过的 如果如我上面的设置 对象确实能够共用
在com+ manager中是可以看到共用的对象不会马上释放
难道是我将resource pooling 跟object pooling 搞混了?
ytwxw 2002-12-12
  • 打赏
  • 举报
回复
TOMWLD(笑天) :关于object pooling
thread :both
thans data model的pooled属性要为true
Type Lib的com+ page要选中object pooling
最后在com+ manager中要将组件属性激活项中启用对象共用
comanche 2002-12-12
  • 打赏
  • 举报
回复
我再插一句嘴 to sonyaiwa: SimpleObjectBroker 不能实现平衡, 关键原因是 SimpleObjectBroker 无法得知可用的服务器列表, 负载均衡在 MS 的 COM/DCOM/MTS/COM+ 都不太可能实现
comanche 2002-12-12
  • 打赏
  • 举报
回复
另 COM+ 和 MTS 我试过几次, 不知道其它语言如何, 但 delphi 中好像只是 resource pooling 而不是 object pooling, MIDAS 造成
comanche 2002-12-12
  • 打赏
  • 举报
回复
1. Locate 在 d6(补丁后), d7 可能有所改进, update list 中已列出, 但仍是应该小心使用, 不完整的数据 Locate 不能表示问题(要记录的在下一个包中), 很容易产生误导, 所以李维书上这一节讲得还是不错的.

2. 不管是 server/professinal 都是可以作为 socket 服务器的, Borland 中的 Socket 都是以 TCP/IP 为基础的, 所以你应检查 windows 的 IP 设置, 比方是否正确安装, 是否同一网段...

3. 李维的说法是正确的, 他只说明了无状态对像的写法, 但他没有提供 object pooling 代码, 只有 pooling 后的对像才 "需要" 无状态.
你的每个客户端, 都在一个服务器 Apartment 线程中, so 1 vs 1 GetNextPacket 就没有问题. 因为它 "不需要" 无状态.
怎样才能实现 object pooling 是关键了, 关于此类的书和讨论很多, 但都没有代码, 我们需要的不只如此, 我们要实现...(Borland 有呵 demos 中 Pooler 和 SharedConn 结合可以实现)
用 msn 查找姓名 comanche@yeah.net, 可能我能提供一点建议

4. 关于 MTS/COM+ 技术我已不想再参与, MS 的 DCOM 我已经无法忍受, 现下在学习 CORBA 中...
sonyaiwa 2002-12-12
  • 打赏
  • 举报
回复
用SocketConnection进行连接,配合SimpleObjectBroker可自动实现负载均衡吗,请教 中
ytwxw 2002-12-12
  • 打赏
  • 举报
回复
ytwxw(wxw),dllhost默认是3分钟后释放
TOMWLD 2002-12-12
  • 打赏
  • 举报
回复
ytwxw(wxw),我的错,com+ Object会过一段比较长的时间才会释放
wguoq 2002-12-12
  • 打赏
  • 举报
回复
关注
TOMWLD 2002-12-12
  • 打赏
  • 举报
回复
谢谢ytwxw(wxw),按你所说的,数据库能保持连接,但是却不会释放了
ytwxw 2002-12-11
  • 打赏
  • 举报
回复
问题3:
马上要上班了,来不及细看!
晚上给你回复!5:00以后:)

深宇 2002-12-11
  • 打赏
  • 举报
回复
其它问题关注中......
深宇 2002-12-11
  • 打赏
  • 举报
回复
问题2是因为IP地址错误,我也曾碰到这个错误提示,改一下客户端的IP就可以了
加载更多回复(8)

1,593

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 网络通信/分布式开发
社区管理员
  • 网络通信/分布式开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧