📄 熟悉 midas (2001年1月18日).txt
字号:
图4
表 2. Remote Data Module向导中的选项
选项 说明
CoClass Name (Specifies the name of the remote data module object.)标识remote data module对象的名字
Instancing (Controls how the remote module is created when the application server runs. For example, Single Instance means that every client connects to its own instance of the application server.)在应用服务器运行时控制remote module如何创建。例如,Single Instance表示每个客户端用自己的实例连接到应用服务器
Threading model (Indicates how client calls are passed to the remote data module. For example, Free means that multiple threads are used.)说明客户端的调用如何传送到remote data module.例如,FREE表示使用多线程。
提供数据集
当remote data module建立好之后,你就可以给它增加普通的database components。我在例子中访问的是DBDEMOS别名数据库中的Biolife表,所以一个Ttable控件就够了。
MIDAS服务器可以支持所有从TdataSet类继承而来的数据库控件。事实上,这意味着你可以选择用ADO,BDE,甚至InterBase Express来连接数据库。你选择的每种数据库连接对客户端应用来说都没什么不同,所以当你决定用ADO替换BDE时客户端不必做任何修改。这是不是很COOL?
为了访问Biolife表,在data module上放一个Ttable控件,并把它和我们熟知的‘fish fact’表连接。为了确保它工作正常,可以activate Ttable 控件来测试数据库的连接。然而,你随后应该马上关闭表,因为让表保持OPEN状态会耗尽宝贵的服务器资源。关闭表是安全的,因为MIDAS在需要时会自动激活控件。
然后,在表单上放一个TdataSetProvider控件(你可以在MIDAS控件页面中找到这个控件)。你要做的就是设置dataset provider的DataSet属性为Ttable 控件。做完这些以后,你就完成了应用服务器的建立,并可以保存整个project。我用RemoteDM,MainForm,和GreenServer来分别为remote data module,the green form,和project来命名。
当你保存了整个project以后,就可以马上编译并运行了。这是个重要的步骤。第一次运行应用服务器时会自动在Windows注册表中注册它。记住:事实上remote data modules是COM对象,所以注册表中必须包含EXE文件的位置(目录)信息,甚至更多。
客户端应用
现在,你的应用服务器已经完成,可以建立客户端的应用了。从View 菜单中选择Project Manager选项,右击project group 并选择Add New Project。当熟悉的New Items对话框打开后,选择Application图标并选择OK。一个新的表单会出现在IDE中。注意服务器端和客户端应用要在同一个项目组中。这使得MIDAS的应用开发更容易,因为你可以很容易的在两个项目中切换。另一种选择就是打开两个DELPHI,但我更喜欢第一种方法。
接下来,改变客户端应用的表单大小使它可以放一个grid。从MIDAS控件页面中选择一个TDCOMConnection控件放到表单上,这个控件是你可以选择的四种连接控件中的一个。如果你用的是Windows 95 或r 98,你需要在继续前先阅读补充说明‘Windows 95, 98 and DCOM’。
回到Object Inspector,设置连接控件的ServerName属性为GreenServer.MyGreenMIDASServer。注意在Object Inspector中的列表中会自动显示在本系统中注册的应用服务器。当你选择了服务器后,DELPHI会自动填写ServerGUID属性。你可以忽略GUID除非你对COM感兴趣。
现在,你可以让ComputerName属性为空。这意味着客户端在本机寻找应用服务器。如果你想在其他机器上运行服务器,可以指定ComputerName属性值为其他机器名称。
为了测试连接,置Connected属性的值为True。然后你就会看到你的应用服务器开始在后台运行(见图5),这就是COM的奇妙之处。事实上,你已经看到了just-in-time activation的所有状况。
图5
接下来,用鼠标从从控件模板中选择一个TclientDataSet控件放到表单上。设置它的RemoteServer属性为connection控件的名字。选择ProviderName属性为应用服务器上的provider控件的名字。注意什么会发生:应用服务器会和你的客户端应用通讯,并告诉它服务器提供什么数据集。
随后的事就很熟悉了:放一个TdataSource和一个TDBGrid到表单上,把data source连接到client dataset,把grid连接到data source。现在,设置client dataset的Active属性为True。如果顺利的话,你就会在grid中看到Biolife表中的数据。这些数据没有任何值得怀疑。
实施MIDADS应用
一旦你完成了MIDAS应用的创建,我确信就你会对实施它感兴趣。虽然实施MIDAS应用会很EASY,你也要按它的基本步骤进行,它们可以一次完成。
在开始服务器应用之前,你需要两个在SERVER上运行的DLL。这两个DLL是STDVCL40.DLL 和 MIDAS.DLL。当安装服务器时,你最好把这两个文件拷贝到Windows系统目录下,这样你就可以很方便的找到它们。拷贝好之后,这两个DLL还需要注册。
注册是个和COM有关的事情,并且是必须的,以使系统可以找到DLL。通常使用REGSVR32.EXE来注册,它和Windows同时被安装。然而,有些系统没有这项功能,你就需要用TregSvr,它是DELPHI中的一个演示程序。你可以在DELPHI的Demos\ActiveX\TregSvr目录下找到。
尽管这些工具用起来很方便,最好的方式还是用安装工具生成一个安装包。例如,我使用InstallShield(DELPHI专业版中提供)来创建一个安装包,并设置MIDAS的DLLs为‘self-registering’。
给代码授权
在你实施MIDAS应用之前,一定要注意MIDAS并非是免费软件。当你实施你的MIDAS应用时,通常需要购买一个实施许可证。开发MIDAS应用程序不需要许可,因为,在DELPHI 5的企业版中已经有了。
在http://shop.borland.com/上的实施许可-$299.95允许你在一台机器上实施你的MIDAS应用。这个许可对客户端的连接数没有限制,所以MIDAS事实上很便宜。
为了使MIDAS让更多人买的起,Inprise公司对许可协议保留了一个例外。在DELPHI的DEPLOY.TXT文件中:"A server deployment license is not required… in an application in which the client and server reside on the same machine." (‘服务器的许可证不需要…当客户端和服务趋端在同一台机器上时’。)
更多MIDAS
MIDAS让你可以用你现在的DELPHI技术方便的开发分布式应用,而不必涉及DCOM 或 CORBA的更深内容。而且,你可以用DELPHI的开发方式建立你的应用程序,同时速度会很快。
尽管在一篇文章中并不能描述MIDAS的所有内容,我希望你可以在此学到最基本的技术。我建议对TclientDataSet控件花点时间,相信你不会对它的一些特性失望。
作为进一步的练习,我建议你测试不同的连接方式。例如,使用TsocketConnection,它可以让你和服务器建立很lightweight的连接。同时,你可能想学习IappServer接口,它是MIDAS技术的基础。
如果你想对MIDAS了解的更多,我建议你访问Borland公司的WEB站点http://community.borland.com/。特别是Dan Miser写的文章更值得一读。同时要记住:将来不管遇到什么问题,也不会阻挡DELPHI开发者在MIDAS领域的旅程。
下载 JARVINEN.ZIP
补充说明: Windows 95, 98 and DCOM
如果你用的是Windows 95或98,你必须确保DCOM已经安装。缺省情况下,Windows 95或98不包含DCOM,但Windows NT 和 Windows 2000已经安装了。要在Windows 95上安装DCOM,从DELHPI的安装CD上运行DCOM95.EXE(这个文件位于安装目录下)。或者,浏览http://www.microsoft.com/com,并下载最新的安装包。要在Windows 98上安装,从相同的网址上下载最新的DCOM安装版本。
本篇文章由Jani Jarvinen撰写,由JENNY翻译,并和大家共享。有何建议请EMAIL:jennykiller@163.net
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -