文章吧-经典好文章在线阅读:《精通.NET互操作》读后感锦集

当前的位置:文章吧 > 原创文章 >

《精通.NET互操作》读后感锦集

2020-09-19 19:34:02 来源:文章吧 阅读:载入中…

《精通.NET互操作》读后感锦集

  《精通.NET互操作》是一本由黄际洲 / 崔晓源著作,人民邮电出版社出版的平装图书,本书定价:68.00元,页数:419,特精心从网络上整理的一些读者的读后感,希望对大家能有帮助。

  《精通.NET互操作》读后感(一):强力推荐此书

  两位作者都MS技术的顶尖高手,在.net/c++/com上有很深的开发功力。此书的出版,是他们对自己多年开发经验一次集中凝练,对于在win上开发.net应用的朋友,强力推荐此书!

  《精通.NET互操作》读后感(二):学习阅读心得

  我们当初在学习.NET互操作技术的过程中,由于.NET互操作技术涉及的知识点较多,加上资料分散且不成体系,而国内又没有专门讲述.NET互操作技术的书籍,因此在学习这项技术时耗费了不少时间和精力。本书不但能够帮助读者快速找到解决问题的方法,还能帮助读者深入理解互操作技术的工作原理,并从更高的角度领悟互操作技术的本质和精髓。

  《精通.NET互操作》读后感(三):不错的书

  invoke相关的书比较少,两位作者也挺有实力

  还记得上学那阵做实验室项目,决定改dotlucene

  由于dotlucene自带的分词器不好,准备调用c版本的海量分词dll,到处查dotnet pinvoke资料的日子……互操作,能节省不必要的开发时间,更大限度的重用代码,no need to reinvent the wheels

  希望这本书的读者都能从中找到自己想要的东西:)

  《精通.NET互操作》读后感(四):精通.NET互操作

  有生以来第一次成为拿到作者签名赠书的人,并且似乎是第一个拿到赠书的人,无比荣幸。翻了一遍,就一个字:实用。

  本书可分为三大部分:

  .NET 调用dll导出的API

  C++和.NET的互相调用

  COM和.NET的互相调用

  除了告诉读者怎么进行这些调用之外,更难能可贵的是书中一一揭示了看似波澜不惊的调用之下潜藏的暗礁险滩,比如对用malloc/new等各种方法在非托管代码中分配的内存如何释放、结构体在内存中如何布局、不同调用约定的区别、如何指定字符串编码等时常让开发人员花上半天时间调试的地方都剖析得清楚明白,让读者能够驾.NET之舟轻松驶过互操作调用的险滩。

  《精通.NET互操作》读后感(五):潘爱民老师的推荐

  托管代码与非托管代码之间的交互是许多程序员在.NET开发平台上不得不面对的任务。《精通.NET互操作性:PInvoke, C++ Interop和COM Interop》这本书深入而透彻地解析了.NET支持的三种与原生代码互操作的技术,作者以自己的经验讲述了原生代码与托管代码之间互操作所涉及到的编程要点,以及背后的一些实现原理。书中提供的实例有助于程序员快速领会并掌握.NET与原生代码互操作技术的用法。我建议在.NET平台上工作的程序员读一读这本书。

  ——潘爱民(著名技术作家,著写了《COM原理与应用》等多部畅销书,并翻译了多部经典名作,如《深入解析Windows操作系统》(第四版)、《C++ Primer中文版》(第三版)、《COM本质论》、《计算机网络》(第四版)等

  《精通.NET互操作》读后感(六):实用,易懂,适用于快速应用的.NET互操作书籍

  首先,不得不说,市面上,专门介绍.NET互操作的书籍还是很少见的,关于跨平台调用以及dll的相关操作只是以章节的形式出现在大家都很推崇的C#经典书籍中,但是书中往往只是介绍性或者简单的对其进行了叙述,缺乏实战性,不是那种短时间内"看了就会,会了就用"的类型.

  本人最近的项目正好碰到在.NET环境下跨平台dll调用的问题,对此不甚了解,各种google,网上对这块内容的解释很浅,仅有几篇好的博文又到处被人转烂了,实在不足以参考应用.所幸在翻帖子的时候看到这本书,又是潘爱民老师的推荐,遂借来细细看了下.

  个人感觉本书适合短时间突击型选手参考,作者讲解的通俗易懂,书中一步一步很详细了介绍了各种调用情况,详细到有多处关键内容不断的重复出现,但在网络上这方面资料比较匮乏的情况下,本书的详尽叙述不禁让被dll折磨的童鞋感激涕零.

  总结一下,如果你正被.NET下的dll所折磨,如果你的项目赶时间,那么不妨看看此书,应该会有收获的.

  《精通.NET互操作》读后感(七):比较实用,适合初学者

  本书除了第六章没看,其他章节基本看了个遍,有些看了2遍。总体来说是一本NET互操作的好书,如果项目开发中有互操作方面的基本问题都可以在这本书中找到答案。但如果深究起来,问题也比较多:

  第一,行文繁缛。

  同样的内容会在文章中反复出现,废话比较多。另外示例的解释也多为代码说明,并没有见解性的建议,显得多余。以本书目前的内容来看,419页的内容200页足以完成,可读性会更强。

  第二,文章不够严谨,部分内容有明显错误。

  第一点中提到的行文繁缛间接导致了文章不严谨。举个例子,2.8.2中提到如果数组元素是blittable类型,那么该数组也当作blittable类型处理,即同时具有了[In, Out]属性;而2.9中开篇又写到:所有数组都继承自Array类,因此所有数组都是引用类型,默认情况下,托管代码中能够的数组安装[In]属性封送到非托管代码中...任何对数组元素的修改都不能返回调用方。二者明显矛盾,而2.9节一个示例后又对2.8.2内容做了重复说明。

  另外书中关于RCW和ReleaseComObject的解释有明显错误。本书关于

  RCM和ReleaseComObject的解释大部分摘抄于MSDN,但悲剧的是由于作者摘抄不完整及翻译错误导致内容完全被曲解。建议读者从MSDN了解该部分的相关内容,本人摘抄了部分MSDN原文,供参考:

  ”“”

  The runtime creates exactly one RCW for each COM object, regardless of the number of references that exist on that object. The runtime maintains a single RCW per process for each object.

  此方法用于显式控制从托管代码使用的 COM 对象的生存期。 应及时(或者在对象按指定的顺序必须释放时)使用此方法,来释放引用某些资源的基础 COM 对象。

  每次 COM 接口指针进入公共语言运行时 (CLR) 的时候,该指针都包装在 RCW 中。

  RCW 有一个引用计数,每次将 COM 接口指针映射到 RCW 时,此引用计数都将递增。 ReleaseComObject 方法递减 RCW 的引用计数器。 当引用计数达到零时,运行时将释放非托管 COM 对象上的所有引用,并在您尝试进一步使用该对象时引发 System.NullReferenceException。 如果从非托管代码向托管代码传递同一 COM 接口的次数超过一次,则包装器上的引用计数将依次递增,而且调用 ReleaseComObject 将返回剩余引用的数目。

  此方法使您能够强制 RCW 引用计数释放,以便它按照您的所需准确发生。 但是,不当使用 ReleaseComObject 可能导致应用程序失败,或导致访问冲突。

  请考虑一个在其中应用程序域中的托管代码保持到表示 COM 组件的 RCW 上的方案。 如果对 RCW 调用 ReleaseComObject 方法,托管代码将无法访问该 RCW,并将引发 InvalidComObjectException 异常。

  如果在释放 RCW 时执行对该 RCW 的调用,则可能发生更严重的错误。 在这种情况下,进行调用的线程很有可能导致访问冲突。 但是,进程内存可能损坏,但进程可能会继续运行,直到因为非常难以调试的原因而失败。

  当使用的 COM 组件是单一实例时,将加大风险,原因如下:CLR 通过调用 COM CoCreateInstance 函数激活 COM 组件,每次为单一实例 COM 组件调用该函数时,它都返回相同的接口指针。 因此,应用程序域中的单独和独立托管代码段可以为单一实例 COM 组件使用相同的 RCW,如果其中一个对 COM 组件调用 ReleaseComObject 方法,则另一个将被破坏。

  因此,仅当 ReleaseComObject 绝对必要时,才使用它。 如果希望调用此方法以确保在确定的时间释放 COM 组件,请考虑使用 FinalReleaseComObject 方法。 FinalReleaseComObject 将释放基础 COM 组件,无论它重新进入了多少次 CLR。 每次 COM 组件重新输入 CLR 时,RCW 的内部引用计数都将递增一。 因此,您可以在循环中调用 ReleaseComObject 方法,直到返回值为零。 此方法与 FinalReleaseComObject 方法实现相同的结果。 “”“

  第三,避重就轻,内容不够完整。咋一看本书好像把NET互操作的所有内容都涉及到了,且分了详细的章节加以说明。但关于互操作的原理等几乎只字未提,就算有涉及也草草了事,这样的话是没办法”精通NET互操作“的吧。举两个例子,一个是结构体中的字符串数组及其他的指向指针的指针/指针数组/二维数组等没有提及,另外一个是COM的线程模型与NET中的STA和MTA间的封送处理过于简单。关于字符串数组及其他指针数组等的互操作可参考:

  http://www.cnblogs.com/desmondwang/archive/2011/12/18/MarshalStructWithStrPtr.html

  总体来说,这本书是NET互操作基本应用的好书,虽有纰漏但大部分内容精确且有使用价值,行文繁缛对刚入门的初学者或许不坏。但如果想精通NET互操作,那么本书就无能为力了,对互操作原理上的解释或许会帮上倒忙。

评价:

[匿名评论]登录注册

评论加载中……