互操作系列文章:

.NET简谈互操作(一:开篇介绍)

.NET简谈互操作(二:先睹为快)

.NET简谈互操作(三:基础知识之DllImport特性)

.NET简谈互操作(四:基础知识之Dispose非托管内存)

.NET简谈互操作(五:基础知识之Dynamic平台调用)

.NET简谈互操作(六:基础知识之提升平台调用性能)

.NET简谈互操作(七:数据封送之介绍)

本人最近在学习非托管C++互操作的技术,有点小收获不敢私藏拿出来跟大家分享;作为.NET开发人员,我们有必要学习一些互操作方面的知识;尤其对一些高级程序员来说,掌握非托管的互操作能很好的增加我们的技术竞争力;由于互操作的内容很多,我打算用系列来讲,这篇就当是随便唠叨做入门介绍吧;

.NET平台的相关基础知识我就不浪费时间讲了,直接进入主题吧;.NET是在操作系统上的一层软件开发框架,是在Windows平台上的抽象封装,将复杂的软件开发过程简单化,让我们摆脱复杂重复的技术难点进行高效的应用系统开发;但是在工作过程中我们经常会遇到一些调用Win32的相关操作,比如跟用户界面相关的接口调用User32.dll框架,一些内核处理Kernel.dll框架,这些都是平台提供给我们的接口;要想软件在计算机上运行起来,不管多少层封装、多少层抽象最终还是要将我们编写的代码转换成机器码才能成功运行软件,只是减轻了我们程序员的工作量;[王清培版权所有,转载请给出署名]

1:

由于.NET应用程序是托管的,运行在受限的CLR环境中,所有的内存分配回收等等都是CLR负责管理;这样既有好处也有坏处,我们无法用程序来为所欲为,只能用.NET提供给我们的功能来编写,在没有P/Invoke(平台调用)的情况下,我们能做的事情真的很好,微软也考虑到如果.NET不提供对过去的Windows平台上技术的支持,必然将大大妨碍.NET技术的发展,对于一些成熟的技术如:COM(组件对象模型)、OLE(复合文档)、用户界面(User32)、内存管理(Kernel)等等都提供了很好的支持,而且相当简单,我们能很方便的进行调用非托管技术;[王清培版权所有,转载请给出署名]

要想很好的利用P/Invoke(平台调用)进行互操作,我们不单单要懂.NET平台的相关技术,我们也需要对非托管的技术有个简单的了解,比如C++中的变量的内存占用和非托管的内存占用大小区别、C++中的字符编码与.NET中的字符编码区别;任何两种不同技术之间的区别不仅仅是我们表面看上去的那些东西,更重要的在于它的运行与内存分配;在我们学习平台调用的时候,我们需要花上一点时间去学习一些非托管技术,比如COM的内存分配方法CoTaskMemAlloc,C++的内存分配NEW,C的内存分配malloc,这些分配方法的不同导致托管的封送拆收器的处理不同;进行互操作的时候,更多需要考虑的是两者之间的等价处理,如变量的内存大小布局是否一致;在托管中调用非托管代码返回一个指针类型,我们用IntPtr接受,然后用MarShal封送拆收器的帮助类,来进行对象转换;我讲的这些只是互操作中的冰山一角,当我们能熟练进行平台调用的时候我们所开发的软件类型将大大增加,不单单是Winform和asp.net之类的,我们也可以用.NET来开发一些大型的网络系统,更重要的是我们可以用.NET来开发一些部分.NET程序员望而却步的软件,同样是.NET程序员,这样一来我们就比同行多了一些筹码;

总结:这篇主要是简单介绍互操作要涉及的知识面,可能我这短短的几句话很难说清楚互操作的一些技术问题,不要急,请继续关注本人,下面我们将具体介绍互操作中的实质性的技术操作;

转载于:https://blog.51cto.com/wangqingpei557/595015

.NET简谈互操作(一:开篇介绍)相关推荐

  1. .NET简谈网络系统大局观

    我们都知道软件发展经历了很长一段路程,在软件刚刚起步的时候,有一批世界顶尖的科学家用自己整个的人生为我们创造了今天美好的信息世界,我印象最深的是我看过一本书,书名是<优雅人生>是专门介绍一 ...

  2. php谈谈你对分布式的理解,简谈关于对分布式处理的理解

    原标题:简谈关于对分布式处理的理解 最近这段时间一直在看分布式有关的东西,但是关于分布式自己还是不能很好的理解,所以本文对分布式基础概念进行下学习. 分布式处理 首先先了解一下分布式处理,分布式处理和 ...

  3. .NET简谈事务、分布式事务处理

    在本人的 " .NET简谈事务本质论"一文中我们从整体上了解了事务模型,在我们脑子里能有一个全局的事务处理结构,消除对数据库事务的依赖理解,重新认识事务编程模型. 今天这篇文章我们 ...

  4. 客户端GUI测试技术和自动化测试架构设计简谈

    客户端GUI测试技术和自动化测试架构设计简谈 http://www.cnblogs.com/wiki-royzhang/p/3785033.html 客户端GUI测试技术和自动化测试架构设计简谈 客户 ...

  5. 简谈基于FPGA的千兆以太网设计

    简谈基于FPGA的千兆以太网设计 今天给大侠带来简谈基于FPGA的千兆以太网设计,话不多说,上货. 今天我们来简单的聊一聊以太网,以太网在FPGA学习中属于比较高级的内容了,有些大侠肯定会感觉以太网学 ...

  6. 简谈卷积—幽默笑话谈卷积

    简谈卷积-幽默笑话谈卷积 今天和大侠简单聊一聊卷积,话不多说,上货. 关于卷积,之前在大学时候学信号与系统的时候就感觉理解的不是很深刻,我于是心想一定要把卷积完全搞明白.经过一段时间的思考之后,有一些 ...

  7. FPGA和USB3.0通信-FX3硬件设计简谈

    FPGA和USB3.0通信-FX3硬件设计简谈 本次演示用的是USB3.0芯片-CYPRESS CYUSB3014(下称 FX3),该芯片是标准的USB3.0 PHY,可以大大简化使用USB通信时FP ...

  8. 【Vivado那些事】简谈FPGA比特流结构

    [Vivado那些事]简谈FPGA比特流结构 比特流是一个常用词汇,用于描述包含FPGA完整内部配置状态的文件,包括布线.逻辑资源和IO设置.大多数现代FPGA都是基于SRAM的,包括Xilinx S ...

  9. SATA主板BIOS设置方法简谈

    导读: 新手教程:SATA主板BIOS设置方法简谈[图解] 随着串口技术的成熟和串口硬盘及支持串口硬盘主板价格的不断走低,目前,多数用户在装机时开始选择使用传输速度更快.缓存更大.安装更加方面的SAT ...

  10. ABP理论学习之开篇介绍

    返回总目录 为了和2016年春节赛跑,完成该系列博客,我牺牲了今天中午的时间来完成该系列的第一篇----开篇介绍.开篇介绍嘛,读过大学教材的同学都知道,这玩意总是那么无聊,跟考试没关系,干脆直接跳过, ...

最新文章

  1. linux添加ssl信任根证书,linux系统添加根证书linux证书信任列表
  2. 上海大学c语言基础题目,求c语言大神学长学姐解答题目
  3. 在Visual Studio中调试samples中可能出现的错误
  4. virtual background for conference
  5. Linux笔记-Linux中的TracerPid
  6. 强化顶层设计 巩固网络安全
  7. html表格内容自动更新,ElementUI table 组件展开 expand,动态更新数据时,视图没有自动更新...
  8. 【039】读典籍-在线阅读典籍并对应翻译
  9. 小米蓝牙耳机持续白灯_小米蓝牙耳机air2怎么重置
  10. 计算机专业辐射,电脑辐射主要来源在哪——专业实测让你弄个明白
  11. git提交代码的时候未获取最新代码
  12. 魔兽争霸3 the oracle,疯狂SQL之魔兽争霸
  13. 伊利洛伊大学厄巴纳-香槟分校计算机专业,伊利诺伊大学厄巴纳香槟分校信息管理专业怎么样?...
  14. 2011年好莱坞大片索引
  15. java二重积分_对比较简单点的二重积分的做题方法
  16. ​Windows域关系学习 全攻略
  17. 【STC8学习笔记】STC8A8K64S4A12串口配置
  18. elasticsearch分词器Jcseg安装手册
  19. solidity 中的时间_solidity基础知识
  20. C语言设计模式-封装-继承-多态

热门文章

  1. uploader java_java-webuploader+Java如何实现分片+断点续传
  2. OFFICE技术讲座:WP布局方向有哪些
  3. 泰山JDK8率先支持多种权重(笔画粗细)的字体绘制
  4. 全网首发:LINUX制作安装deb版本时,打开方式的适配总结
  5. LINUX SHELL使用变量控制循环
  6. 开发电脑应该是8核(8线)
  7. LINUX任务栏上出现的小窗口是怎么回事
  8. NWT失败反省:做视频的多了,汝眼里怎么只有腾讯
  9. board crt_容器编排系统K8s之Dashboard部署
  10. 小米6twrp最新第三方rec_小米5(gemini:双子座)刷机