谁说NETFRAMEWOR API 不能微服务化?---让 NETFRAMEWOR API 也上DOCKER IN LINUX 系列文章

写系列文章的时候,我都会写一下前言:

为什么要写这系列的文章,因为作为.NETFrameWork API (我这边讲的是.NETFRAMEWORK API,而不是 NETCORE –NETCORE 本身就是跨平台部署) 研发,很多开发人员认为微软在跨平台这方面把自己做死掉了,因为 NETFRAMEWORK API 只能跟IIS绑定死了。在跟JAVA ,GO 竞争上面毫无优势可言, 还有些同学认为,NETFrameWork  跨不了平台,这在中国的非.net 领域的人都有这种共同认知。

其实: 我要在这里 需要为.NET 澄清一点: .NET的 C 井 语言不能跨平台,这是错误的。那为什么什么跨不了平台?因为早期微软想 让 .NETFRAMEWORK 的 RESTFUL  只能在 IIS 运行, 这只是被微软的商业利益和市场营销绑架了 ,因此微软从此至终都没有开发出配套的 LINUX 运行库。

上述原因都引起了 .NETFRAMEWORK 的 RESTFUL  不能跨平台的原因,主要有两点:

1:服务绑定了 IIS

2:没有提供跨平台的 .NETFRAMEWORK LINUX RUNTIME  运行库

 

因此,而不是C#(.NETFRAMEWORK) 跨不了平台,如果解决上述两个问题,C#(.NETFRAMEWORK) 本质上就是跨平台语言。因为微软在设计C#(.NETFRAMEWORK) 的时候,就已经为跨平台做了准备。C#(.NETFRAMEWORK)  其实也跟 JAVA 一样,是运行在虚拟解析平台上。JAVA 成为JAVA 虚拟机(JAVA 官方提供了 WINDOWS 以及 LINUX 运行环境的 虚拟机)。而C#-NETFRAMEWORK 称之为CLR 动态语言运行库,可惜微软官方没有提供LINUX   动态语言运行库---这并不代表C# 跨不了平台。只是微软没有提供出来其他环境的运行库而已。

想要理解 C# , IL,CLR,以及 CUP 之间关系,请查看我的另外一篇文章:   C# , IL,CLR,以及 CUP 之间关系

 

 

大家痛点:做为开发人员都是一样,公司的老的 服务 api 使用了.NETFRAMEWORK 开发,现在开发了好多这样的服务,现在重构到NETCORE,重构成本很大,为了迁移服务到 LINUX,把代码迁移到NETCORE  上,理论上可以,

现实面临的问题很多。 但是,现在不想把 .NETFRAMEWORK  服务放在 IIS 运行?那么怎么去做这个事情呢,有没有比较好的方案呢?

 

我相信上面的这个痛点做为.NET 的开发者,应该都有过。也曾经怪微软,为啥把我们的坑的这么惨)—我只能呵呵了。 没事,来我这里就对了,此篇文章就是告诉你一个方案,将你现有的.NETFRAMEWORK  API 不需要改动业务层代码,轻而易举

的将其迁移到LINXU 上,并且  还支持Docker 集群部署。

 

想让 NETFRAMEWORK 服务 迁移到  LINUX 环境中,必须要解决以上两个问题。

1:服务脱离IIS 绑定运行

2:C# FOR .NETFRAMEWORK 在Linux 上的动态语言运行库。

如果能解决上面两个问题,按就完美了。

posted @ 2021-02-01 13:39  DavidChild  阅读(56)  评论(0编辑  收藏  举报