正在阅读:总体了解C#(25.库-26.互用性)总体了解C#(25.库-26.互用性)

2004-02-14 09:34 出处:PConline 作者:荣耀翻译/ASPCool.com 责任编辑:zwg
总体了解C#(25.库-26.互用性) A Comparative Overview of C#中文版 作者:Ben Albahari 公司:Genamics 日期:2000年7月31日初版,2000年8月10日修订。   感谢以下人士支持和反馈(按字母先后顺序):Don Box、 C.R. Manning、 Joe Nalewabau、 John Osborn、 Thomas Rhode & Daryl Richter。 译者:荣耀 25.库 语言如果没有库那它是没什么用的。C#以没有核心库著称,但它利用了.NET框架的库(它们中的一些就是用C#创建的)。本文着重于讲述C#语言的特别之处,而不是.NET的,那应该另文说明。简单地说,.NET库包括丰富的线程、集合、XML、ADO+、ASP+、GDI+以及WinForm库【译注:现在这些+们多已变成了.NETJ】。有些库是跨平台的,有些则是依赖于Windows的,请阅读下一段关于平台支持的讨论。 26.互用性 我认为把互用性分成三个部份论述是比较合适的:de,,并且对那些追求语言互用性、平台互用性和标准互用性。Java长于平台互用性,C#长于语言互用性。而在标准互用性方面,二者都各有长短。 (1) 语言互用性 和其它语言集成的能力只存在集成度和难易程度的区别。JVM和CLR都允许你用多种语言写代码,只要它们编译成字节码或IL码即可。然而,.NET平台做了大量的工作—不仅仅是能够把其它语言写的代码编译成IL码,它还使得多种语言可以自由共享和扩展彼此的库。例如,Eiffel或Visual Basic程序员可以导入C#类,重载其虚方法;C#对象也可以使用Visual Basic方法(多态)。如果你怀疑的话,VB.NET已经被大幅升级,它已具有现代面向对象特性(付出了和VB6兼容性的损失)。 为.NET写的语言一般插入Visual Studio.NET环境中,如果需要的话,可以使用同样的RAD框架。这就克服了使用其它语言是“二等公民”的印象。 C#提供了P/Invoke【译注:Platform Invocation Service,平台调用服务】,这比Java的JNI和C代码交互起来要简单得多(不需要dll)。这个特性很象J/direct,后者是微软Visual J++的一个特性。 (2) 平台互用性 一般而言,这意味着操作系统互用性。但是在过去的几年里,internet浏览器自身已经越来越象个平台了。 C#代码运行在一个受控执行环境里。这是使C#能够运行在不同操作系统上的技术重要的一步。然而,一些.NET库是基于Windows的,特别是WinForms库,它依赖于多如牛毛的Windows API。有个从Windows API移植到Unix系统项目,但目前还没有启动,而且微软也没有明确的暗示要这么做。 然而,微软并没有忽视平台互用性。.NET库提供了编写HTML/DHTML解决方案的扩展能力。对于可以用HTML/DHTML来实现的客户端来说,C#/.NET是个不错的选择。对于跨平台的需要更为复杂的客户界面的项目,Java是个好的选择。Kylix—Delphi的一个版本,允许同样的代码既可以在Windows上也可以在Linux上编译,或许将来也会成为跨平台解决方案的一个好的选择。 (3) 标准互用性 几乎所有标准,例如数据库系统、图形库、internet协议和对象通讯标准如COM和CORBA,C#都可以访问。由于微软在制订这些大多数标准上拥有权利或发挥了很大的作用,他们对这些标准的支持就处于一个很有利的位置。他们当然会因为商业上的动机(我没有说他们是否公正)而提供较少的标准支持—对于和他们竞争的东西—比如CORBA(COM的竞争对手)和OpenGL(DirectX的竞争对手)。类似地,Sun的商业动机(再一次,我没有说他们是否公正)意味着Java不会尽其所能地支持微软的标准。 由于C#对象被实现为.NET对象,因此它自动暴露为COM对象。C#因此就既可以暴露COM对象也可以使用COM对象。这样,就可以集成COM代码和C#项目。.NET是一个有能力最终替代COM的框架—但是,已经有那么多已部署的COM组件,我相信,不等.NET取代掉COM,它已经被下一波技术所取代了。但无论如何,希望.NET能有一个长久而有趣的历史!J 27.结论 到此为止,我希望已给了你一个C#与Java、C++在概念上的比较。总的来说,比起Java,我相信C#提供了更好的表达力并且更适合编写对性能有严格要求的代码,它也同样具有Java的优雅和简单,这也是它们都比C++更具吸引力之处。 —全文完—

相关文章

关注我们

最新资讯离线随时看 聊天吐槽赢奖品