社区
C#
帖子详情
[请大家讨论]托管代码和非托管代码的区别。。。
jscn123789abc
2009-02-28 10:35:34
请大家讨论下,托管代码和非托管代码的区别,谢谢!
...全文
2391
36
打赏
收藏
[请大家讨论]托管代码和非托管代码的区别。。。
请大家讨论下,托管代码和非托管代码的区别,谢谢!
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
36 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
景能
2011-10-24
打赏
举报
回复
[Quote=引用 30 楼 handong520 的回复:]
在公共运行时之外执行的代码被称为非托管代码,例如:常见的COM组件、ActiveX控件和Win32 API函数等都是非托管代码.
区别如下
代码模型:非托管代码通过接口来进行通信,百托管代码则不必经过接口,而是直接传递数据;
错误处理机制:COM方法通常返回HRESULT,表示调用成功还是失败。托管代码是通过一场机制来进行错误处理;
标识:GUID标识特定的非托管类型,但并不是提供类型的……
[/Quote]
回答的人倒是挺多的,可惜全TM的copy网上的了事。。。不知道他自己是否懂了,要是懂了,怎么不能用自己的话说出来。。。还就这哥们的算是说到点子上,虽然很不通顺,但至少是人话,不是鸟语,能看懂。。。
ymenghong
2010-10-18
打赏
举报
回复
还是不太明白。如果在C#中用socket发送一个unsigned char 类型的数据,是不是就涉及到上面的概念???
gorllen
2010-10-12
打赏
举报
回复
表示正在学习。。
handong520
2010-10-03
打赏
举报
回复
在公共运行时之外执行的代码被称为非托管代码,例如:常见的COM组件、ActiveX控件和Win32 API函数等都是非托管代码.
区别如下
代码模型:非托管代码通过接口来进行通信,百托管代码则不必经过接口,而是直接传递数据;
错误处理机制:COM方法通常返回HRESULT,表示调用成功还是失败。托管代码是通过一场机制来进行错误处理;
标识:GUID标识特定的非托管类型,但并不是提供类型的位置信息。托管类型的名称不但包含类型名,而且还包含唯一的程序集名称。因为程序集名唯一的标识类型,所以可以跨越多个程序集来重用某一类型名称;
类型定义:COM组件的类型库只包含公共类型,并且是可选的。在托管编程模式中,类型信息对于所有类型来说都是强制性的。互操作服务提供了用于将类型库转换为程序集中的元数据,以及将原数据转换为类型库的工具;
类型安全:非托管编译器不会对指针类型提供任何类型检查,所以会使代码很容易受到潜在的危害的影响。在通常情况下,托管代码需要更高级的新人级别。程序员虽然可以继续在托管代码的不安全中使用的指针,但是因为不安全行为受到一些限制;
版本控制:COM接口是不可变的,如果要更改接口,则必须使用新的GUID对其进行重命名。托管类型可以使用同一名称进行深化。
名称相同的两个类型,在托管代码和非托管代码之间是不同的,在不同的语言之间也是不同的,所以在进行代码互操作时,必须进行封装处理。大多数的数据类型在托管和非托管内存中都具有公共表示形式。通过使用.Net框架的互操作机制的封送拆收器,可以处理这些这些同名但不同意义的类型。如果类型不明确,或在托管内存中不存在这些类型,则必须个人编码,并向封送拆收器提供如何封送不明确类型的显示指令,以显式地进行封送处理。
xiatiandetonghua
2010-08-15
打赏
举报
回复
深入学习
laichunlin
2010-07-30
打赏
举报
回复
分析的很好,学习
niit_zc
2010-07-15
打赏
举报
回复
学习!
fengqipiaobo
2010-06-25
打赏
举报
回复
学习了!
start55
2010-01-18
打赏
举报
回复
学习 ,接分
jscn123789abc
2009-05-26
打赏
举报
回复
ding...
Jueyoung
2009-05-26
打赏
举报
回复
收藏了
fanbo
2009-03-15
打赏
举报
回复
不明白,学习,要分
typeof
2009-03-15
打赏
举报
回复
学习。
测试菜鸟
2009-03-15
打赏
举报
回复
[Quote=引用 15 楼 wangping_li 的回复:]
这些东西MSDN上都写得很清楚的,如果真想深入了解的话LZ可以看看CLR via C#、.net框架设计、Effective C#之类的书籍
托管代码 (managed code)
由公共语言运行库环境(而不是直接由操作系统)执行的代码。托管代码应用程序可以获得公共语言运行库服务,例如自动垃圾回收、运行库类型检查和安全支持等。这些服务帮助提供独立于平台和语言的、统一的托管代码应用程序行为。
托管代码是可以使用20多种支持Microsoft…
[/Quote]
学习
jscn123789abc
2009-03-15
打赏
举报
回复
谢谢楼上朋友的回复....
天乐
2009-03-01
打赏
举报
回复
托管代码的堆上的垃圾内存可由GC自动回收,非托管代码中堆上的垃圾内存必须程序员自己负责释放、回收
jscn123789abc
2009-03-01
打赏
举报
回复
谢谢楼上朋友的回复,分析的很深入...
yagebu1983
2009-03-01
打赏
举报
回复
讲的都很详细啊。。。
up。。。
heart_string
2009-03-01
打赏
举报
回复
可以举个例子不?
什么样的代码是托管代码?
什么样的代码是非托管代码?
这个问题我也不清楚,还望大虾们指教!
wangping_li
2009-03-01
打赏
举报
回复
这些东西MSDN上都写得很清楚的,如果真想深入了解的话LZ可以看看CLR via C#、.net框架设计、Effective C#之类的书籍
托管代码 (managed code)
由公共语言运行库环境(而不是直接由操作系统)执行的代码。托管代码应用程序可以获得公共语言运行库服务,例如自动垃圾回收、运行库类型检查和安全支持等。这些服务帮助提供独立于平台和语言的、统一的托管代码应用程序行为。
托管代码是可以使用20多种支持Microsoft .NET Framework的高级语言编写的代码,它们包括:C#, J#, Microsoft Visual Basic .NET, Microsoft JScript .NET, 以及C++。所有的语言共享统一的类库集合,并能被编码成为中间语言(IL)。运行库编译器(runtime-aware ompiler)在托管执行环境下编译中间语言(IL)使之成为本地可执行的代码,并使用数组边界和索引检查,异常处理,垃圾回收等手段确保类型的安全。
在托管执行环境中使用托管代码及其编译,可以避免许多典型的导致安全黑洞和不稳定程序的编程错误。同样,许多不可靠的设计也自动的被增强了安全性,例如 类型安全检查,内存管理和释放无效对象。程序员可以花更多的精力关注程序的应用逻辑设计并可以减少代码的编写量。这就意味着更短的开发时间和更健壮的程序。
非托管代码 (unmanaged code)
在公共语言运行库环境的外部,由操作系统直接执行的代码。非托管代码必须提供自己的垃圾回收、类型检查、安全支持等服务;它与托管代码不同,后者从公共语言运行库中获得这些服务。
加载更多回复(13)
《开放实验室管理系统》毕 业 设 计 说 明 书
.NET Framework 具有两个主要组件:公共语言运行库和 .NET Framework 类库。公共语言运行库是 .NET Framework 的基础。您可以将运行库看作一个在执行时管理
代码
的代理,它提供内存管理、线程管理和远程处理等核心服务,并且还强制实施严格的类型安全以及可提高安全性和可靠性的其他形式的
代码
准确性。事实上,
代码
管理的概念是运行库的基本原则。以运行库为目标的
代码
称为
托管
代码
,而不以运行库为目标的
代码
称为
非
托管
代码
。.NET Framework 的另一个主要组件是类库,它是一个综合性的面向对象的可重用类型集合,您可以使用它开发多种应用程序,这些应用程序包括传统的命令行或图形用户界面 (GUI) 应用程序,也包括基于 ASP.NET 所提供的最新创新的应用程序(如 Web 窗体和 XML Web services)。 .NET Framework 可由
非
托管
组件承载,这些组件将公共语言运行库加载到它们的进程中并启动
托管
代码
的执行,从而创建一个可以同时利用
托管
和
非
托管
功能的软件环境。.NET Framework 不但提供若干个运行库宿主,而且还支持第三方运行库宿主的开发。 例如,ASP.NET 承载运行库以为
托管
代码
提供可伸缩的服务器端环境。ASP.NET 直接使用运行库以启用 ASP.NET 应用程序和 XML Web services(本主题稍后将对这两者进行
讨论
)。 Internet Explorer 是承载运行库(以 MIME 类型扩展的形式)的
非
托管
应用程序的一个示例。使用 Internet Explorer 承载运行库使您能够在 HTML 文档中嵌入
托管
组件或 Windows 窗体控件。以这种方式承载运行库使得
托管
移动
代码
(类似于 Microsoft?nbsp;ActiveX?nbsp;控件)成为可能,不过它需要进行重大改进(如不完全受信任的执行和独立的文件存储),而这种改进只有
托管
代码
才能提供。
Microsoft .NET 框架为集成的、面向服务的 Web 提供了平台
本文将结束自九月开始刊登的 .NET 框架概述。公共语言规范和 ILDasm 、MSIL 反汇编程序,以及元数据、清单、程序集能够如何简化部署和版本控制等问题都得到了
讨论
。作为 .NET 设计一部分的安全性得到了广泛地
讨论
。随后是包含有多个文件的单个程序集的开发。最后,
托管
代码
和不可
托管
代码
一起工作的方式,以及使用两者的好处,包括与不可
托管
代码
的互操作性等都给予了阐述。
迁移到亚马逊云科技的
托管
数据库(一年有效期)
对于初次尝试云的组织而言,直接迁移策略是一项常见的举措。此直接迁移策略可能会是迁移到云的最简单方法。您的架构图看起来仍然相似,且团队的责任没有改变。但是您并没有充分利用云的优势。在这套由八门课组成的课程中,您将了解从自行管理的数据库(本地或云)迁移到完全
托管
的亚马逊云科技 (Amazon Web Services) 数据库解决方案的价值和过程。在本课程中,亚马逊云科技精英 Alex DeBrie 介绍了如何迁移到亚马逊云科技上的
托管
数据库服务。您可以观看 Alex 解释迁移过程的步骤,也可以使用自己的亚马逊云科技账户按顺序操作。课程结束时,您将对整个数据库迁移过程有一个客观的认识。本视频由 Amazon Web Services, Inc. 及其关联公司制作并享有版权。
GitHub中文语言排行榜图表展示
GitHub是一个面向开源项目的
托管
平台,它提供了版本控制、协作开发、
代码
托管
、项目管理等一系列功能。以下是关于GitHub的一些主要特点和应用: 版本控制:GitHub采用Git作为版本控制系统,它可以帮助开发者管理项目的变更历史,并追踪不同版本之间的差异。通过Git的分支和合并功能,开发者可以轻松地进行团队协作和
代码
管理。
托管
代码
:GitHub提供了一个集中式的
代码
仓库,开发者可以将自己的
代码
托管
在GitHub上。这使得
代码
对外公开,方便其他开发者浏览、使用和贡献。 协作开发:GitHub为开发者提供了强大的协作功能,使得多人参与同一个项目变得简单和高效。开发者可以提交
代码
、创建分支、对话
讨论
、提出问题、执行
代码
审查等。 项目管理:GitHub提供了一系列项目管理工具,包括任务追踪、项目看板、里程碑、文档管理等。这些工具可以帮助团队组织和管理项目,提高工作效率。 社区交流:在GitHub上的开源项目能够吸引全球开发者的关注和参与。开发者可以通过提交等方式为开源社区做出贡献,并与其他开发者建立联系,分享经验和技术。
GIThub文件下载加速器
GitHub 是一个面向开源及私有软件项目的
托管
平台,以Git作为唯一的版本库格式进行
托管
。它是一个基于web 的版本控制和协作平台,主要用于存储、管理和分享开源
代码
和项目。GitHub拥有1亿以上的开发人员,400万以上组织机构和3.3亿以上资料库。12 GitHub提供了基于git的版本控制功能,使得多个开发者可以在同一个
代码
库中协同开发,并且能够轻松地跟踪
代码
的变化。同时,GitHub还提供了许多其他功能,如问题跟踪 、
代码
审查 、
代码
片段分享、自动化测试 等等,使得开发者可以更加高效地进行开发和协作。2 此外,GitHub还提供了订阅 、
讨论
组 、文本渲染 、在线文件编辑器 、协作图谱(报表)、
代码
片段分享(Gist)等功能。2020年3月17日,GitHub宣布收购npm ,GitHub保证npm将永远免费使用。1 GitHub是一个面向开源及私有软件项目的
托管
平台,因为只支持Git作为唯一的版本库格式进行
托管
,故名GitHub。GitHub拥有1亿以上的开发人员,400万以上组织机构和3.3亿以上资料库。 [8]
C#
110,580
社区成员
642,559
社区内容
发帖
与我相关
我的任务
C#
.NET技术 C#
复制链接
扫一扫
分享
社区描述
.NET技术 C#
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
让您成为最强悍的C#开发者
试试用AI创作助手写篇文章吧
+ 用AI写文章