ASP.NET编程:基于C#的接口基本教程之六
据说很厉害,甚至可以把C#也干掉^_^,不过也很复杂,本来C++已经够复杂的。有人甚至还提出把这个东东引进标准,我觉得基本上不可能的。 第六节、接口转换C#中不但撑持.Net平台,并且撑持COM平台。为了撑持COM和.Net,C#包括一种称为属性的共同言语特征。一个属性实践上就是一个C#类,它经由过程润色源代码来供应元信息。属性使C#可以撑持特定的手艺,如COM和.Net,而不会搅扰言语标准自己。C#供应将COM接口转换为C#接口的属性类。另外一些属性类将COM类转换为C#类。实行这些转换不必要任何IDL或类工场。
如今部署的任何COM组件都能够在接口转换中利用。一般情形下,所需的调剂是完整主动举行的。
出格是,可使用运转时可挪用包装(RCW)从.NET框架会见COM组件。此包装将COM组件供应的COM接口转换为与.NET框架兼容的接口。关于OLE主动化接口,RCW能够从范例库中主动天生;关于非OLE主动化接口,开辟职员能够编写自界说RCW,手动将COM接口供应的范例映照为与.NET框架兼容的范例。
利用ComImport援用COM组件
COMInterop供应对现有COM组件的会见,而不必要修正原始组件。利用ComImport援用COM组件常包含上面几个方面的成绩:
1、创立COM工具。
2、断定COM接口是不是由工具完成。
3、挪用COM接口上的办法。
4、完成可由COM客户端挪用的工具和接口。
创立COM类包装
要使C#代码援用COM工具和接口,必要在C#中包括COM接口的界说。完成此操纵的最复杂办法是利用TlbImp.exe(范例库导进程序),它是一个包含在.NET框架SDK中的命令行工具。TlbImp将COM范例库转换为.NET框架元数据,从而无效地创立一个能够从任何托管言语挪用的托管包装。用TlbImp创立的.NET框架元数据能够经由过程/R编译器选项包含在C#外部版本中。假如利用VisualStudio开辟情况,则只需增加对COM范例库的援用,将为您主动完成此转换。
TlbImp实行以下转换:
1、COMcoclass转换为具有没有参数机关函数的C#类。
2、COM布局转换为具有大众字段的C#布局。
反省TlbImp输入的一种很好的办法是运转.NET框架SDK命令行工具Ildasm.exe(Microsoft两头言语反汇编程序)来检察转换了局。
固然TlbImp是将COM界说转换为C#的首选办法,但也不是任什么时候候都可使用它(比方,在没有COM界说的范例库时大概TlbImp没法处置范例库中的界说时,就不克不及利用该办法)。在这些情形下,另外一种办法是利用C#属性在C#源代码中手动界说COM界说。创立C#源映照后,只需编译C#源代码便可发生托管包装。
实行COM映照必要了解的次要属性包含:
1、ComImport:它将类标志为在内部完成的COM类。
2、Guid:它用于为类或接口指定通用独一标识符(UUID)。
3、InterfaceType,它指定接口是从IUnknown仍是从IDispatch派生。
4、PreserveSig,它指定是不是应将本机前往值从HRESULT转换为.NET框架非常。
声明COMcoclass
COMcoclass在C#中暗示为类。这些类必需具有与其联系关系的ComImport属性。以下限定合用于这些类:
1、类不克不及从任何其他类承继。
2、类不克不及完成任何接口。
4、类还必需具无为其设置全局独一标识符(GUID)的Guid属性。
以下示例在C#中声明一个coclass:
//声明一个COM类FilgraphManager
classFilgraphManager
{}
C#编译器将增加一个无参数机关函数,能够挪用此机关函数来创立COMcoclass的实例。
共4页:上一页1下一页
捆绑编译器。用户不需要受制于厂家,自己就能将程序在新平台上编译运行。除了牛B轰轰的linux,估计也没有系统捆绑c/c++的编译器,而且许多新平台都无法支持复杂的c/c++编译器在上面直接运行。 在调试JSP代码时,如果程序出错,JSP服务器会返回出错信息,并在浏览器中显示。这时,由于JSP是先被转换成Servlet后再运行的,所以,浏览器中所显示的代码出错的行数并不是JSP源代码的行数。 我觉得什么语言,精通就好,你要做的就是比其他80%的人都厉害,你就能得到只有20%的人才能得到的高薪。 对于中小项目来说.net技术是完全可以胜任,但为什么现在大型公司或网站都选择php或java呢?就是因为微软不够开放,没有提供从硬件到应用服务器再到业务应用的整套解决方案。 关于ASP.NET功能上,ASP.NET比微软以前的ASP(96年出现)有更强大的library,更好的稳定性。ASP.NET可以使用.NETFramework中所有组件(也就是说.NET能实现的,ASP.NET一样能实现)。 在调试JSP代码时,如果程序出错,JSP服务器会返回出错信息,并在浏览器中显示。这时,由于JSP是先被转换成Servlet后再运行的,所以,浏览器中所显示的代码出错的行数并不是JSP源代码的行数。 弱类型造成潜在的出错可能:尽管弱数据类型的编程语言使用起来回方便一些,但相对于它所造成的出错几率是远远得不偿失的。 它可通过内置的组件实现更强大的功能,如使用A-DO可以轻松地访问数据库。 这也就是最近几年来随着各种新的后台技术的诞生,CGI应用在Internet上越来越少的原因。CGI方式不适合大访问量的应用。
页:
[1]