欢迎来到天天文库
浏览记录
ID:42594301
大小:2.86 MB
页数:34页
时间:2019-09-18
《中间件综合实验报告 - 杨名扬》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、中南民族大学计算机科学学院中间件原理综合实验报告年级2013级专业班级软件工程1302班指导教师李波姓名序号韩泽林学号201321101054实验类型综合型成绩评定评语:教师签名:年月日2016年月日组号实验室9-204日期 实验名称 《中间件技术原理及应用》实验实验内容分项内容实验级别COM组件对象的设计与应用EJB的设计与应用CORBA中间件实验1 COM组件对象的设计与应用 (一)实验目的 通过对简单COM组件的编写,加深对COM理论知识的理解,为更深层的COM应用及DCOM应用做准备。(二)实验要求具体题目CO
2、M组件对象的设计与应用系统平台Windows7(三)实验原理步骤1、实验原理2、步骤提示一)、建立ATL工程步骤1:建立一个工作区(WorkSpace)。步骤2:在工作区中,新建一个ATL工程(Project)。命名为SimpleCom(如图1),并选择DLL方式(如图2)。说明:⑴DynamicLinkLibrary(DLL)表示建立一个DLL的组件程序。⑵Executable(EXE)表示建立一个EXE的组件程序。⑶Service(EXE)表示建立一个服务程序,系统启动后就会加载并执行的程序。⑷Allowmerging
3、ofproxy/stubcode选择该项表示把“代理/存根”代码合并到组件程序中,否则需要单独编译,单独注册代理存根程序。⑸SupportMFC支持MFC⑹SupportMTS支持事务处理,即是否支持COM+功能。二)、增加ATL对象类步骤3:选择菜单InsertNewATLObjectObject分类SimpleObject项目。见图3。说明:(1)CategoryObject普通组件。其中可以选择的组件对象类型很多,本质上就是让向导帮忙加上一些默认接口。(2)CategoryControlsActiveX控件。其
4、中可以选择的ActiveX类型也很多。(3)CategoryMiscellaneous辅助杂类组件。(4)CategroyDataAccess数据库类组件。步骤4:增加自定义类CMath(接口IMath),见图4。步骤5:填写接口属性,见图5。说明:⑴ThreadingModel选择组件支持的线程模型。⑵Interface接口基本类型。Dual表示支持双接口;Custom表示自定义借口。⑶Aggregation是否允许被别人聚合使用。No表示不聚合。⑷SupportISupportErrorInfo是否支持丰富信息的错误处
5、理接口。⑸SupportConnectionPoints是否支持连接点接口(事件、回调)。⑹FreeThreadedMarshaler三)、添加接口成员函数图说明:[in]表示参数方向是输入;[out]表示参数方向是输出;[out,retval]表示参数方向是输出,同时可以作为函数运算结果的返回值。一个函数中,可以有多个[in]、[out],但[retval]只能有一个,并且要和[out]组合后在最后一个位置。实现代码如下:STDMETHODIMPCMath::Add(longn1,longn2,long*pnVal){/
6、/TODO:Addyourimplementationcodehere*pnVal=n1+n2;returnS_OK;}完成上述步骤后,打开IDL文件(双击IMath接口),手工添加代码,其中UUID每个组件,每个接口都会不同。//引入IUnknown和ATL已经定义的其它接口描述文件。import"oaidl.idl";import"ocidl.idl";//接口的完整描述[object,//表示本块描述的是一个接口uuid(E34275D2-B3CA-4BCA-9AC7-0713ABE2F876),helpstring
7、("IMathInterface"),//说明文字pointer_default(unique)//定义接口函数中参数所使用指针的默认属性]interfaceIMath:IUnknown//接口叫IMathe派生自IUnknown{//接口函数列表[helpstring("methodAdd")]HRESULTAdd([in]longn1,[in]longn2,[out,retval]long*pnVal);};//类型库的完整描述[uuid(FBF0BE44-9E98-4189-809B-BEC4B67866CC),ve
8、rsion(1.0),helpstring("SimpleCom1.0TypeLibrary")]librarySIMPLECOMLib//#import时候的默认命名空间{importlib("stdole32.tlb");importlib("stdole2.tlb");[uuid(9D4F4C3B
此文档下载收益归作者所有