.NET(C#) web应用程序调用dll(非托管)

.NET(C#) web应用程序调用dll(非托管),第1张

[DllImport("dllname", EntryPoint="Functionname")]

[DllImport("dllname", EntryPoint="#123")]

请注意,序号前必须带有井号 (#)。

以下示例将说明如何使用 EntryPoint 字段将代码中的 MessageBoxA 替换为 MsgBox。

[C#]

using SystemRuntimeInteropServices;

public class Win32 {

[DllImport("user32dll", EntryPoint="MessageBoxA")]

public static extern int MsgBox(int hWnd, String text, String caption,

uint type);

}

NET Framework是支持生成和运行下一代应用程序和 XML Web services 的内部 Windows 组件 NET Framework 旨在实现下列目标

◆提供一个一致的面向对象的编程环境 而无论对象代码是在本地存储和执行 还是在本地执行但在 Internet 上分布 或者是在远程执行的

◆提供一个将软件部署和版本控制冲突最小化的代码执行环境

◆提供一个可提高代码(包括由未知的或不完全受信任的第三方创建的代码)执行安全性的代码执行环境

◆提供一个可消除脚本环境或解释环境的性能问题的代码执行环境

◆使开发人员的经验在面对类型大不相同的应用程序(如基于 Windows 的应用程序和基于 Web 的应用程序)时保持一致

◆按照工业标准生成所有通信 以确保基于 NET Framework 的代码可与任何其他代码集成

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® ActiveX® 控件)成为可能 不过它需要只有托管代码才能提供的重大改进(如不完全受信任的执行和独立的文件存储)

下面的插图显示公共语言运行库和类库与应用程序之间以及与整个系统之间的关系 该插图还显示托管代码如何在更大的结构内运行

NET Framework 环境

下面的章节将更加详细地描述 NET Framework 的主要组件和功能

公共语言运行库的功能

公共语言运行库管理内存 线程执行 代码执行 代码安全验证 编译以及其他系统服务 这些功能是在公共语言运行库上运行的托管代码所固有的

至于安全性 取决于包括托管组件的来源(如 Internet 企业网络或本地计算机)在内的一些因素 托管组件被赋予不同程度的信任 这意味着即使用在同一活动应用程序中 托管组件既可能能够执行文件访问 *** 作 注册表访问 *** 作或其他须小心使用的功能 也可能不能够执行这些功能

运行库强制实施代码访问安全 例如 用户可以相信嵌入在 Web 页中的可执行文件能够在屏幕上播放动画或唱歌 但不能访问他们的个人数据 文件系统或网络 这样 运行库的安全性功能就使通过 Internet 部署的合法软件能够具有特别丰富的功能

运行库还通过实现称为通用类型系统 (CTS) 的严格类型验证和代码验证基础结构来加强代码可靠性 CTS 确保所有托管代码都是可以自我描述的 各种 Microsoft 和第三方语言编译器生成符合 CTS 的托管代码 这意味着托管代码可在严格实施类型保真和类型安全的同时使用其他托管类型和实例

此外 运行库的托管环境还消除了许多常见的软件问题 例如 运行库自动处理对象布局并管理对对象的引用 在不再使用它们时将它们释放 这种自动内存管理解决了两个最常见的应用程序错误 内存泄漏和无效内存引用

运行库还提高了开发人员的工作效率 例如 程序员可以用他们选择的开发语言编写应用程序 却仍能充分利用其他开发人员用其他语言编写的运行库 类库和组件 任何选择以运行库为目标的编译器供应商都可以这样做 以 NET Framework 为目标的语言编译器使得用该语言编写的现有代码可以使用 NET Framework 的功能 这大大减轻了现有应用程序的迁移过程的工作负担

尽管运行库是为未来的软件设计的 但是它也支持现在和以前的软件 托管和非托管代码之间的互 *** 作性使开发人员能够继续使用所需的 组件和 DLL

运行库旨在增强性能 尽管公共语言运行库提供许多标准运行库服务 但是它从不解释托管代码 一种称为实时 (JIT) 编译的功能使所有托管代码能够以它在其上执行的系统的本机语言运行 同时 内存管理器排除了出现零碎内存的可能性 并增大了内存引用区域以进一步提高性能

最后 运行库可由高性能的服务器端应用程序(如 Microsoft® SQL Server&# ; 和 Internet 信息服务 (IIS))承载 此基础结构使您在享受支持运行库宿主的行业最佳企业服务器的优越性能的同时 能够使用托管代码编写业务逻辑

NET Framework 类库

NET Framework 类库是一个与公共语言运行库紧密集成的可重用的类型集合 该类库是面向对象的 并提供您自己的托管代码可从中导出功能的类型 这不但使 NET Framework 类型易于使用 而且还减少了学习 NET Framework 的新功能所需要的时间 此外 第三方组件可与 NET Framework 中的类无缝集成

例如 NET Framework 集合类实现一组可用于开发您自己的集合类的接口 您的集合类将与 NET Framework 中的类无缝地混合

正如您对面向对象的类库所希望的那样 NET Framework 类型使您能够完成一系列常见编程任务(包括诸如字符串管理 数据收集 数据库连接以及文件访问等任务) 除这些常见任务之外 类库还包括支持多种专用开发方案的类型 例如 可使用 NET Framework 开发下列类型的应用程序和服务

控制台应用程序

◆Windows GUI 应用程序(Windows 窗体)

◆ASP NET 应用程序

◆XML Web services

◆Windows 服务

例如 Windows 窗体类是一组综合性的可重用的类型 它们大大简化了 Windows GUI 的开发 如果要编写 ASP NET Web 窗体应用程序 可使用 Web 窗体类

客户端应用程序开发

客户端应用程序在基于 Windows 的编程中最接近于传统风格的应用程序 这些是在桌面上显示窗口或窗体从而使用户能够执行任务的应用程序类型 客户端应用程序包括诸如字处理程序和电子表格等应用程序 还包括自定义的业务应用程序(如数据输入工具 报告工具等等) 客户端应用程序通常使用窗口 菜单 按钮和其他 GUI 元素 并且它们可能访问本地资源(如文件系统)和外围设备(如打印机)

另一种客户端应用程序是作为 Web 页通过 Internet 部署的传统 ActiveX 控件(现在被托管 Windows 窗体控件所替代) 此应用程序非常类似于其他客户端应用程序 它在本机执行 可以访问本地资源 并包含图形元素

过去 开发人员将 C/C++ 与 Microsoft 基础类 (MFC) 或应用程序快速开发 (RAD) 环境(如 Microsoft® Visual Basic®)一起使用来创建这样的应用程序 NET Framework 将这些现有产品的特点合并到了单个且一致的开发环境中 该环境大大简化了客户端应用程序的开发

包含在 NET Framework 中的 Windows 窗体类旨在用于 GUI 开发 您可以轻松创建具有适应多变的商业需求所需的灵活性的命令窗口 按钮 菜单 工具栏和其他屏幕元素

例如 NET Framework 提供简单的属性以调整与窗体相关联的可视属性 某些情况下 基础 *** 作系统不支持直接更改这些属性 而在这些情况下 NET Framework 将自动重新创建窗体 这是 NET Framework 集成开发人员接口从而使编码更简单更一致的许多方法之一

和 ActiveX 控件不同 Windows 窗体控件具有对用户计算机的不完全受信任的访问权限 这意味着二进制代码或在本机执行的代码可访问用户系统上的某些资源 例如 GUI 元素和访问受限制的文件 但这些代码不能访问或危害其他资源 由于具有代码访问安全性 许多曾经需要安装在用户系统上的应用程序现在可以通过 Web 部署 您的应用程序可以在像 Web 页那样部署时实现本地应用程序的功能

服务器应用程序开发

在托管领域中 服务器端应用程序是通过运行库宿主实现的 非托管应用程序承载公共语言运行库 后者使您的自定义托管代码可以控制服务器的行为 此模型在获得主服务器的性能和可伸缩性的同时提供给您公共语言运行库和类库的所有功能

下面的插图显示在不同服务器环境中运行托管代码的基本网络架构 在应用程序逻辑通过托管代码执行时 服务器(如 IIS 和 SQL Server)可执行标准 *** 作

服务器端托管代码

一、两者的区别1、特点方面的不同:C语言既具有高级语言的特点,又具有汇编语言的特点。C++它是一种使用非常广泛的计算机编程语言。C#是微软公司发布的一种面向对象的、运行于NETFramework之上的高级程序设计语言。2、主要开发用途不同:C面向过程,开发非托管程序,编译成exe是二进制可执行文件,不可跨平台。C++面向对象,开发托管和非托管程序,编译成exe是二进制可执行文件,不可跨平台。C#面向对象,开发托管程序,编译成exe是中间语言,可跨平台。3、编程难度不同:C语言的源代码基本上可以非常容易地对应到汇编代码,而且可以不需要什么运行时环境的支持。C的特点,简单容易编译,灵活贴近底层。C++是一种静态数据类型检查的,支持多重编程范式的通用程序设计语言。它支持过程化程序设计、数据抽象、面向对象程序设计、制作图标等等泛型程序设计等多种程序设计风格。C#的特点就是:抽象层次高且基本只有一种(面向对象的),运行时支持丰富(垃圾回收等),类库丰富。二、c语言编程软件在windows下首选VS,版本至少vs2005以上,或者用最新的VSCode,不过需要自己配插件,好处是免费,如果做单片机c开发首选eclipse,linux下如果做单片机首选eclipse,其次是clion。eclipse兼容性最好,不过稳定性差一些,vs在win下没有对手,clion用cmake,相比来说大部分c程序用的都是makefile,需要适应一下。三、visual stadio 2010用C语言编程是不行的参考资料来源:

以上就是关于.NET(C#) web应用程序调用dll(非托管)全部的内容,包括:.NET(C#) web应用程序调用dll(非托管)、.NET Framework概述、C语言与C++,C#有什么区别等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/9499476.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-29
下一篇 2023-04-29

发表评论

登录后才能评论

评论列表(0条)

保存