面试题:.NET进程内和进程外托管代码有什么区别?

llovebo

共 2446字,需浏览 5分钟

 ·

2023-07-18 09:29

    .NET还有进程内和进程外托管代码之分?小编也是第一次听到同事面试中被问到。在.NET中,托管代码是在托管环境下执行的代码,它受到.NET运行时CLR的管理,进程内和进程外托管代码是两种不同的运行方式。本文将简介这两者的关系。

1、进程内托管代码

进程内托管代码(In-Process Managed Code)是指在与主应用程序在同一进程中执行的托管代码。它与应用程序共享相同的进程空间,共享内存和资源,由于共享关系因此它们之间的通信更加高效。

特点:

1) 直接访问应用程序的内存和资源,无需额外的通信机制。

2)具有更快的方法调用和资源访问速度,因为无需跨进程通信。

缺点:

    由于进程内托管代码与主应用程序运行在同一进程中,如果托管代码出现问题,可能会导致整个应用程序崩溃。

使用场景:

    单体应用,比如功能单一的企业站点等。自 ASP.NET Core 3.0 起,默认情况下已为部署到 IIS 的所有应用启用进程内托管。


2. 进程外托管代码

进程外托管代码(Out-of-Process Managed Code)是指在与主应用程序分离的独立进程中执行的托管代码。它们通过进程间通信机制与应用程序进行通信。 特点: 1)进程外托管代码运行在独立的进程中,与主应用程序隔离,即使托管代码崩溃,主应用程序也不会受到影响。 2)可以使用不同的语言和技术来编写进程外托管代码,使得应用程序可以利用多种技术栈的优势。 缺点: 由于进程间通信的开销,进程外托管代码的方法调用和资源访问速度相对较慢。 使用场景:     进程外托管代码适用于需要高度隔离和可扩展性的场景,如多租户应用程序、微服务架构等。.NET Core这时候可以使用Kestrel 服务器,当天IIS也可以配置进程外的托管代码。
3、结语:     希望本文对您理解进程内和进程外托管代码的区别有所帮助。对于进程内和进程外托管代码的区别还有什么疑问,欢迎留言讨论或吐槽。
参考: https://learn.microsoft.com/zh-cn/aspnet/core/host-and-deploy/iis/in-process-hosting?view=aspnetcore-7. 0

版权声明:本文来源于网友收集或网友供稿,仅供学习交流之用,如果有侵权,请转告小编或者留言,本公众号立即删除。



4e5dbc50392e303f12badb5956f6aca6.webp 支持小薇
    

关注公众号DotNet开发跳槽    

      

418bb6305dd2aa3bf9f97a17fb3cbe25.webp

3daa93e697cf69e2b8a2ae035094c64b.webp

f1cfec019251b053a2f3983315d1e41a.webp

点在看

浏览 43
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报
评论
图片
表情
推荐
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报