DCOM中应用程序的分发配置(李唯)兼MIDAS范例下载地址 (1分)

  • 主题发起人 主题发起人 房客
  • 开始时间 开始时间

房客

Unregistered / Unconfirmed
GUEST, unregistred user!
作者不详了 出处也。。本来想自己写的,但看这个写的很不错了,就不浪费感情了
****************************
DCOM中应用程序的分发
客户端的分发和设定
1。如果是使用独立的EXE文件,那么必须拷贝所有的EXE档案以及这些档案使用的OCX,
DLL到客户端。你可以使用DELPHI内建的INSTALLSHIELD制作安装磁盘。如果是使用
ACTIVEFORM,那么就无需安装客户端的应用程序,因为ACTIVEFORM可以自动的下载到客户
端。
2。在客户端机器中必须安装DCOM。
3。拷贝MIDAS。DLL档案到客户端的Windows/System或是Winnt/System32子目录中。
你只需要拷贝这个档案到Windows的系统子目录下即可,当客户端应用程序执行时,它会
自动注册这个档案到注册表中
服务端的分发和设定
在多层应用系统中,分发服务比较复杂。
1。决定使用存取控制的权限。如果你有WINDOWS NT做为应用程序服务器的平台,那么
建议使用‘用户级存取控制’
2。执行应用程序服务器一次以注册应用程序服务器。
3。拷贝MIDAS。DLL到系统子目录中。而且必须注册。你可以使用TREGSRV32来注册
MIDAS。DLL
4。拷贝IDPROV32.DLL到BDE数据库引擎的子目录中。
5。使用DCOMCNFG设置应用程序服务器的存取权限。在通常情况下,可以将验证等级
设定为‘无’,并且把存取控制和激活控制设置为EVERYONE就可以让所有的客户端用户激
活和存取应用程序服务器。
6。如果目前使用的DCOM是对于95的话,强烈建议你升级到98,否则程序员必须自行
激活RPCSS。EXE
至此,分发过程已经结束,如果还有问题,请使用DELPHI5的MODULE VIEWER来观察。
当程序员使用DELPHI开发分布式多层应用系统后,除了将应用程序序列分发之外,还必须
使用DCOM的配置应用程序DCOMCNFG.EXE来进行设置。
在WIN9.X系列中进行DCOM之前,应确认是否装有DCOM,如果没有,可从
http://www.microsoft.com/下载。
WIN9.X配置为DCOM服务器
第一步就是将访问控制设置为用户级控制。在‘获取用户及组的列表中’输入该局域
网中能提供安全权限的机器名(该计算机必须正在运行)。
第二步就是运行位于系统目录下的/windows/system/Dcomcnfg.exe文件。在应用程序
列表中应该能够找到你所编制的应用程序,如果没有列出,请将你所编的程序运行一次。
通常,我们可以通过修改默认属性及默认安全性来达到一定的目的,在‘默认属性’
页中,让‘启动该计算机的分布式COM’选项选中,而‘默认的身份验证级别’中‘连接’
的意思代表‘只在客户端第一次连结应用程序服务器时检查客户端的权限’。
‘默认的模拟级别’中‘识别’的意义为‘在这种模式下,服务端可以取得连结的客
户端的权限信息,但是服务端无法以连结的客户端的权限存取系统对象’。当其设为‘模
拟’时,表明‘服务端可以取得连结的客户端的权限信息,并且能够以连结的客户端的权
限存取系统对象’。
在默认属性页中,还有一个‘为跟踪引用提供附加的安全性’的选项。这个设置可以
让应用程序服务器使用COM/DCOM的回叫机制以保持COM/DCOM中远程调用参考计数值
(reference count)的正确性,以避免客户端应用程序恶意的调用应用服务器并且断线。
选中这个选项可以让应用程序服务器有效的管理其生命周期,但是也会减缓应用程序服务
执行的速度。
上述的内容其实在DCOMCNFG的帮助之中都有,我这番解说有些画蛇添足,但我对它配
置的建议就是,尽量使用默认值。
在NT中的一些配置也极其相似。但要理解以下的概念
激活控制:就是指哪些用户可以激活应用程序服务器。当客户端应用程序执行并且试
着在远程机器之中激活应用程序服务器时,COM/DCOM的安全机制会检查这个客户端应用程
序登录的用户是否有权限中以激活应用程序。
存取控制:指当应用程序服务器由适当的用户激活后,哪些用户可以存取应用程序服务
器所提供的服务。此外,一个应用程序服务器可以提供数种不同的服务,取存控制能够限
定特定的用户进行特定的操作
认证控制:是指在数据进行传递时,数据是否加密
鉴定控制:是指应用程序服务器的权限。即指在服务器上登陆的用户,他所执行的应用
程序服务器所存取的资源是否在他的权限范围之内。
 
向房客致谢!!!
这是李维的作品。(在分布式多层应用系统篇第9章)
 
我想知道“4。拷贝IDPROV32.DLL到BDE数据库引擎的子目录中。”究竟是指哪个目录啊?
是C:/Program Files/Common Files/Borland Shared/BDE吗?
 
MIDAS范例下载以及简单制作解说(入门)
http://www.duketown.com/marcel/delphi.shtml
*************************************************
All examples have include source code!
TClientSocket in ISAPI DLL's
A Midas connection in an ISAPI DLL
A Midas connection as a windows application
A simple Midas server example
Building a Midas server step by step guide
TServerSocket in multithread mode
Automatically unload an ISAPI DLL from memory after usage

 
应用服务器类:
TOrder = class(TAutoObject, IOrder)
protected
procedure GetOrderData(FromYear, FromMonth, ToYear, ToMonth: Integer;
var OrderData: OleVariant);
safecall;
procedure GetOrderDetailData(const OrderID: WideString;
var OurStyleNo,
CustStyleNo: WideString;
var ExpiryDate, InDate: TDateTime;
var Quantity: Integer;
var Remark: WideString;
var Colors, Sizes,
Details: OleVariant);
safecall;
procedure GetOrderProcessPrice(const OrderID: WideString;
var ProcessPrice: OleVariant);
safecall;
procedure DeleteOrder(const OrderID: WideString);
safecall;
procedure NewOrderData(const OrderID, OurStyleNo, CustStyleNo: WideString;
ExpiryDate, InDate: TDateTime;
Quantity: Integer;
const Remark: WideString;
Colors, Sizes, Details: OleVariant);
safecall;
procedure UpdateOrderData(const OrderID, OurStyleNo,
CustStyleNo: WideString;
ExpiryDate, InDate: TDateTime;
Quantity: Integer;
const Remark: WideString;
Colors, Sizes,
Details: OleVariant);
safecall;
{ Protected declarations }
end;

客户端连接:
Order := CoOrder.CreateRemote('landin');
Order.GetOrderData(FromYear, FromMOnth, ToYear, ToMonth, OrderData);
客户端这段代码我加在动态连接库中时出错,我已经将应用服务器的_TLB文件加入到Dll中,
谁有例子我愿意出200分索取
 
接受答案了.
 
后退
顶部