同为容器,IoC和Docker有啥不同?

这篇具有很好参考价值的文章主要介绍了同为容器,IoC和Docker有啥不同?。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

同为容器,IoC和Docker有啥不同?

小伙伴们,我是小周,今天梳理一下 IoC 容器和 Docker 容器,无论你是哪个阶段,都会学到一些新知识,它不是编码能力,更多是思想。

一、IoC容器

如果你没学过Spring框架也没关系,因为下面讲的重点不是编码。

IoC,全称Inverse Of Control,翻译过来就是控制反转,那所谓控制反转,控制是控制谁?反转又是反转什么?

控制反转作为 Spring 框架的核心思想之一,这里的控制是指为成员变量赋值的控制权反转是指控制权由原来的 new 转变为工厂配置文件。

先说一下控制权在开发手上的问题,假如项目的业务很庞大,开发在这个类中改一下,发现这个类还需要另一个类,开发又去另一个类改一改代码,无奈由于业务量大,他又发现又有依赖了,这样的开发效率很低,开发者很头疼一直在找代码改代码,如果这个开发者对业务很熟还可以,如果不熟简直就是噩梦。

同为容器,IoC和Docker有啥不同?

现在容器技术来了,这是指 Spring 的容器,也管它叫工厂,在开发中告诉工厂对象的全类名,并给这个对象一个唯一标识,工厂在启动时就会通过读取全类名,再利用反射机制完成单例对象的创建和管理,为什么要这样呢?带来了什么好处?

三个字:解耦合

二、耦合

耦合指两个或两个以上的体系或两种运动形式之间通过各种交互作用而彼此影响,从而联合起来产生增力,协同完成特定任务的现象。

软件工程中的耦合是指各个模块依赖程度,为了便于维护,自然希望耦合越低越好。

同为容器,IoC和Docker有啥不同?

三、解耦合

通过一些手段,降低模块间或程序间的依赖程度,在Spring中通过抽取到配置文件配合IoC容器进行了解耦,当然这并不是全部,还有配置文件的依赖注入,也是解耦的体现。

简单说就是程序运行期间,不用去修改源码,通过其他手段,比如修改配置文件,就可以影响程序的表现。

四、IoC思想

IoC容器,是指对于成员变量赋值的控制,从代码中new转变为Spring工厂和配置文件中,好处就是解耦合。

我们学到了,如果想要降低依赖,可以通过在两者之间加一层,Spring中这一层讲是工厂,IoC容器,有了这一层,就可以将对象和配置文件联系起来,从而通过配置文件管理对象,达到降低依赖的效果。

五、Docker容器

同为容器,IoC和Docker有啥不同?

Docker 容器是一个开源的应用容器引擎,让开发者可以以统一的方式打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何安装了docker引擎的服务器上,也可以实现虚拟化,容器是完全使用沙箱机制,相互之间不会有任何接口(类似 iPhone 的 app)。

六、沙箱

沙箱是一个虚拟系统程序,沙箱提供的环境相对于每一个运行的程序都是独立的,不会对现有的系统产生影响,即沙箱提供一个限制该应用程序对系统资源的访问权限。

同为容器,IoC和Docker有啥不同?

七、沙箱的应用

1. 搭建测试环境,沙箱的应用只能访问自己的应用访问目录,应用间的资源不能共享,这样就形成了一个相对安全的机制,由于沙箱具有非常良好的独立性、隔离性,所以能让一些具有高风险的软件进行测试。

2. 应用容器的使用,如Docker就是应用沙箱机制,这样使得应用组件经过Docker的封装,使得在项目的迁移、测试环境到生产环境的部署,保证了应用程序的运行环境保持一致性,同时也减少大量在环境搭建上的工作量。

同为容器,IoC和Docker有啥不同?

七、Docker思想

与 IoC 容器不同,Docker 容器不是管理对象的,把它比作集装箱我觉得更合适,使用沙箱技术,在Linux中,容器技术是一种进程隔离的技术,应用可以运行在一个个相互隔离的容器中,与虚拟机相同的是,可以为这些容器设置计算资源限制,挂载存储,连接网络,而与虚拟机不同的是,这些应用运行时共用着一个Kernel(内核)

既然这样,我们就可以使用容器将运行环境和代码一起装起来,也就是所谓 Docker容器,通过进行隔离,运行它,这样多个容器共用一个内核,和虚拟机的操作系统级别虚拟化技术相比,优势一下就出来了。

八、总结

可见,同样是容器技术,一个用于解耦让代码方便管理和维护,一个是一次打包,处处运行,代码之上,还有很重要的就是思想,我觉得多想多去理解,这和编码同等重要。

好了,这就是本文全部内容了,如果觉得写的还不错,点赞支持小周啊!👋

同为容器,IoC和Docker有啥不同?文章来源地址https://www.toymoban.com/news/detail-408120.html

到了这里,关于同为容器,IoC和Docker有啥不同?的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Spring核心容器IOC案例讲解,带你理解IOC

    Universe Infinity inc. 什么是IOC容器,先把IOC给忽略到,其实就是个容器。 什么?容器又是个啥玩意?容器是用来放东西的东西啊。 各个领域都喜欢起一些专业术语,显得很高级。给你讲IOC是不是很高级,给你讲Map是不是就明白了。 bean对象最终存储在spring容器中,在spring源码底

    2024年01月24日
    浏览(37)
  • IOC容器

    DI(依赖注入):DI(Dependency Injection)是一种实现松耦合和可测试性的软件设计模式。它的核心思想是将依赖关系的创建与管理交给外部容器,使得对象之间只依赖于接口而不直接依赖于具体实现类。通过依赖注入,可以降低代码的耦合度,提高代码的重用性和可测试性。

    2024年02月13日
    浏览(29)
  • spring ioc容器

    ioc是 inversion of Control的简写,意为控制反转。通过其对所有的Java对象的实例化和初始化,控制对象与对象之间的依赖关系。 (1)控制反转是一种思想。 (2)控制反转是为了 降低程序耦合度,提高程序扩展力。 (3)控制反转,反转的是什么? 答:将对象的创建权利交出去

    2024年01月17日
    浏览(38)
  • Winform窗体使用IOC容器

    Winform窗体如何使用IOC容器呢?在nuget中添加Microsoft.Extensions.DependencyInjection 接着在Program类Main方法中添加一下代码 在此类中继续补充以下代码 以后你的注入只需要在 static void ConfigureServices(IServiceCollection services)这个方法中注入就行了 全景图:   我把窗体也注入了,不过不是

    2024年02月12日
    浏览(52)
  • SpringBoot 如何使用 IOC 容器

    Spring 是一个非常流行的 Java 开发框架,它提供了一个强大的 IoC(Inversion of Control)容器来管理 Java 对象之间的依赖关系。在 SpringBoot 中,我们可以非常方便地使用这个 IoC 容器来管理我们的 Java 对象,本文将介绍 SpringBoot 中如何使用 IoC 容器。 IoC 容器是 Spring 框架的核心,它

    2024年02月09日
    浏览(35)
  • Spring 6.X IoC 容器

    下面主要介绍 Spring 框架对控制反转 (IoC) 原理的实现 首先要说明的是:IoC 也称为依赖注入,这是一个过程。 其次依赖项的定义:对象仅通过构造函数参数、工厂方法的参数,或在构造对象实例、工厂方法返回后在对象实例上设置的属性来定义其依赖项(即它们使用的其他对

    2024年02月09日
    浏览(41)
  • 3、Spring 之IOC 容器 详解

    IoC 是 Inversion of Control 的简写,译为“控制反转”,它不是一门技术,而是一种 设计思想 ,是一个重要的面向对象编程法则,能够指导我们如何设计出松耦合、更优良的程序。 Spring 通过 IoC 容器 来管理 所有 Java 对象的实例化和初始化 , 控制对象与对象之间的依赖关系 。我

    2024年02月09日
    浏览(41)
  • ASP.NET Core IOC容器

      ServiceCollection 抽象和具体之间多种注册方式

    2024年02月09日
    浏览(42)
  • .NET6.0实现IOC容器

    IOC 的作用这里省略…只对如何使用进行说明。 这里使用 .NET6.0 WebAPI 应用 下面是在 program 类中的代码 通过在 Controller 的构造函数中注入 IAuthService 启动后,通过 swagger 发起请求,验证接口。 基本 IOC容器 流程已实现。但是这样存在一个弊端,每个接口和实现都要在 program 中手

    2024年02月10日
    浏览(45)
  • Spring 核心之 IOC 容器学习二

    Annotation 的前世今生 定位 Bean 扫描路径 读取 Annotation 元数据 扫描指定包并解析为 BeanDefinition

    2024年01月19日
    浏览(51)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包