登录: 自动化服务器






2.89/5 (8投票s)
一个自动化服务器,用于从MS-Access数据库验证远程客户端的用户ID和密码。
引言
OLE自动化简化了自动化应用程序的任务。一方面,它允许一个应用程序操作在另一个应用程序中实现的对对象,另一方面,它帮助一个应用程序公开可以被其他应用程序操作的对象。
OLE自动化构建在COM之上,近年来变得非常流行,因为像Excel、DevStudio、Access和Word这样的大多数Microsoft应用程序都开始支持它。客户期望每个应用程序都支持OLE自动化。作为VC++程序员,因此,我们有兴趣通过OLE自动化向外界开放我们的COM组件和应用程序。[摘自这本书。]
在这里,我们将构建一个自动化服务器,该服务器可以验证用户ID和密码,允许我们添加新用户,删除现有用户以及编辑用户信息。自动化组件使用封送/DCOM与位于同一台/远程机器上的客户端进行通信。我们将使用MS-Access作为我们的数据库。本示例还向我们展示了一种访问远程数据库的方法,尽管这可能不是最好的方法。
先决条件
本教程假设您熟悉Visual C++/MFC、COM、自动化以及本教程中使用的其他技术,如ADO等。虽然不必非常详细地理解它们的底层原理,但至少应该对这些底层原理的含义有一个实际的了解。
实现
DevStudio为构建自动化组件提供了大量支持,但不幸的是,它假定应用程序是SDI/MDI或基于对话框的应用程序。我们将构建一个基于对话框的应用程序,然后删除所有基于对话框的支持。
- 创建一个基于对话框的MFC项目,在第2步(共4步)中选择“Automation”,就像您之前做的那样。
- 删除基于对话框的资源、基于对话框的文件[$ProjectName]Dlg.cpp/h、DlgProxy.cpp/h,并从[$ProjectName].cpp文件中删除该对话框的所有出现。
- 在
C[$ProjectName]App::InitInstance()
函数中,在调用COleTemplateServer::RegisterALL()
之后添加以下语句。return TRUE;
- 启动类向导,它将提示我们从其数据库中删除与对话框相关的文件。遵从它的意愿,直到它满意为止。
- 现在编译项目,它应该可以毫无错误地编译。
- 再次启动类向导,并向项目添加一个派生自
CCmdTarget
基类的类。选择自动化支持“Createable by type ID”,并将Login.CRemoteLogin
指定为类型ID。 - 使用类向导的自动化属性表向新创建的类添加新方法。
- 编译应用程序并运行它,服务器将在添加必要的注册表项后立即终止。
自动化客户端
这里还有一个示例客户端应用程序,位于此处。
结论
在这里,我们成功构建了一个自动化服务器,该服务器可以验证用户ID和密码,允许我们添加新用户,删除现有用户以及编辑用户信息。该服务器可以轻松地扩展到DCOM(分布式组件对象模型),以用于网络环境,从而利用分布式计算和远程数据库管理的优势。尽管这可能不是使用和管理远程数据库的正确方法,但可能还有更好的方法。但是,本文的目的是帮助您更好地理解自动化的奥秘。欢迎您提出宝贵的建议,以使本文更好。
Copyright
本代码按“原样”提供,不附带任何明示或暗示的保证。您可以不受任何限制地使用和滥用此代码。如果您在商业产品中使用此源代码,则无需致谢,但若您致谢,我们将不胜感激。
参考文献
- VC++、COM及其他。
作者:Yashavant Kanetkar & Sudesh Saoji。
ISBN:81-7635-206-8
用户级别:初级-中级。
本书深入介绍了前沿技术,如文档/视图体系结构、OLE、COM、DCOM、ActiveX、OpenGL、打印和打印预览、HTML帮助系统、磁盘和屏幕保护程序的编程。
- 在21天内学会使用Visual C++ 6®进行数据库编程。
作者:Lyn Robison。
ISBN:81-7635-196-2
出版商:Techmedia(印度次大陆)。
用户级别:初级-中级。
涵盖的主题包括:探索有效的数据库设计技术,使用SQL、ODBC、ADO和OLE DB开发客户端/服务器应用程序,利用数据库服务器的强大功能,并使用Microsoft Transaction Server构建可伸缩的数据库应用程序。