`
atomy415
  • 浏览: 1372 次
最近访客 更多访客>>
文章分类
社区版块
存档分类
最新评论
阅读更多

什么是轻量级容器?为什么我们需要轻量级容器?

什么是轻量级容器

       所谓容器(container),指应用代码的运行框架。业务对象在容器里运行,被容器管理。像EJB就是过去管理J2EE业务对象时最常用的容器。

       任何容器都应该包含如下服务:

  • 生命周期管理:最起码,容器应该负责创造构件。
  • 查找服务:容器必须有一种途径来获得受控构件的引用,以使构件可以互操作。
  • 配置管理:容器应该尽可能的讲简单的易变换的配置值从代码中提取出来,为构件提供统一的方法来配置。
  • 依赖解析:管理各个构件之间的管理。

      上面讲的是容器核心模块应该提供的服务,但是容器还必须提供其它一些服务,增加实用性。

  • 企业级服务:为构件提供事务管理。
  • 线程管理:对于构件的操作,容器需要给出一个线程模型。
  • 对象池:提供一个实例池来管理对象。
  • 集群服务:容器的提供集群服务在需要支持有状态的构件是必须的,但是如果是无状态,容器提供集群服务就不是很重要了,因为容器无需为集群维护状态。
  • 管理:如JMX。
  • 远程服务:提供远程服务和访问远程对象。
  • 扩展性:可以为某一类构件提供定制的服务。

      一个轻量级容器应该遇有下列特性:

  • 非侵入性:可以管理业务代码,但是不应该给代码强加入对容器的依赖。
  • 可以快速启动。
  • 部署简单。
  • 轻量级容器是用纯JAVA开发的,不依赖J2EE。

需要容器的理由

以前也讲过EJB作为容器很多不令人满意的地方,那我们需要容器的理由呢?

  • 可接插性:容器将调用方法与具体的实现策略分开。虽然Java接口提供了很好的接口和实现分离,但是必须用一种方法去帮我们找到一个接口的实现,用容器调用显然比在代码中硬编码要好。
  • 服务定位:容器像是个服务的盒子,如果没有容器了,配置管理这些服务是十分困难的。
  • 为开发和部署量身订做服务。

轻量级容器的优势

由于代码对容器的依赖很少,很显然带来了如下好处:

  • 提高代码的复用度;在开发过程中没有假定必须在某个平台下运行。
  • 提高可测试性:在容器之外就可以完成测试。

容器对构件的编写限制很少:

  • 更好的面向对象:容器对构件的编写限制很少,这样可以更好的实践面向对象了。
分享到:
评论

相关推荐

    Java轻量级容器的比较.pdf

    【Java轻量级容器的比较】 Java轻量级容器,如Spring、HiveMind和PicoContainer,是为了降低系统组件间的耦合度而设计的。它们都采用了依赖注入这一核心设计模式,但在实现方式和哲学上各有不同。 **Spring ...

    linux-mkcontainer由make和systemdnspawn支持的Linux轻量级容器生成器

    Linux轻量级容器技术在近年来已经成为了IT领域中不可或缺的一部分,尤其在开发、测试和部署环境中,它提供了高效且隔离的运行环境。"Linux-mkcontainer"是一个利用`make`和`systemd-nspawn`创建容器的工具,旨在简化...

    Spring轻量级与EJB重量级容器的比较

    部分内容:本文档旨在深入探讨Spring轻量级容器与EJB重量级容器的区别,通过对这两个概念的剖析,帮助读者理解它们在企业级应用中的不同作用与优势。 一、容器的概念与服务 容器是现代软件工程中的关键概念之一,...

    基于liblxc的轻量级容器运行时CLI工具lcr源码设计

    该项目为基于liblxc的轻量级容器运行时CLI工具lcr的设计源码,由C语言编写,包含309个文件,包括209个JSON配置文件、28个头文件、21个C源文件、15个C++源文件、10个文本文件、6个Python脚本、4个INI文件、3个CMake...

    轻量级容器操作系统ProjectPhoton.zip

    主要是 VMware 为容器化应用而设计的轻量级的操作系统。类似RedHat的Atomic 项目,以及Ubuntu的Snappy项目。Project Photon主要用于运行VMware vSphere和VMware vCloud,它使得企业可以在单一平台上同时启动容器与...

    Docker部署:现代应用的轻量级容器化之路.pdf

    Docker部署基于Docker容器技术,它允许开发者将应用及其运行环境打包在一个轻量级、可移植的容器中。每个容器都包含了运行应用所需的一切,包括代码、运行时、库、环境变量和配置文件等。Docker容器之间相互隔离,...

    轻量级虚拟机

    与传统的全虚拟化技术相比,轻量级虚拟机通常更加高效,因为它不需要模拟底层硬件,而是依赖于操作系统级别的抽象,这种技术也被称为容器或轻量级容器。 在轻量级虚拟机中,核心组件是虚拟化层,它将硬件资源如CPU...

    轻量级容器和控制反转教材

    这是Hibernate和Spring的培训教材,相信对大家很有帮助。

    轻量级打包工具与容器运行时,一条命令将工作目录打包成可执行文件

    轻量级打包工具与容器运行时,一条命令将工作目录打包成可执行文件,并以轻量级容器的方式直接运行在目标机器上。示例是一个 c 语言编写的 ip 解析服务 gcc -o ipservice,其依赖 ipdb 资源文件。使用 parker 将可...

    虚拟机iSulad一个轻量级的容器运行时守护程序专为 IOT 和云基础设施而设计

    iSulad是一个由C/C++编写实现的轻量级容器引擎,具有轻、灵、巧、快的特点,不受硬件规格和架构限制,底噪开销更小,可应用的领域更为广泛。iSulad是一个由C/C++编写实现的轻量级容器引擎,具有轻、灵、巧、快的特点...

    PHP实现一个轻量级容器的方法

    PHP实现轻量级容器方法的介绍首先提到了依赖注入的概念,这是开发过程中经常使用的一种设计模式。依赖注入可以解耦代码,允许我们按需加载服务,而不必在代码中直接创建依赖对象。容器作为依赖注入的一种实现方式,...

    C#轻量级开发工具.net Asp

    - Docker:轻量级容器技术,方便应用的打包和部署。 - Jenkins或Azure DevOps:自动化构建、测试和部署工具,实现持续集成和持续交付。 7. **学习资源** - Microsoft官方文档:提供详尽的C#和ASP.NET教程及API...

    cchoir:基于LXD的轻量级容器编排器

    **C-Choir:基于LXD的轻量级容器编排器** C-Choir是一个创新的容器编排工具,专门设计用于充分利用LXD(Linux Containers Host)的轻量级特性。LXD是一种流行的容器管理平台,它允许用户在Linux主机上运行轻量级...

    JAVA里使用Jetty作为轻量级嵌入式的Web容器

    Java中的Jetty是一个轻量级、高性能且可嵌入式的Web服务器和Servlet容器,它以其简单易用和高效性在开发社区中广受欢迎。本文将深入探讨Jetty的基本概念、特性以及如何在Java项目中使用它。 1. **Jetty简介** - ...

    轻量级Java EE企业应用实战第4版第8章05源代码.rar

    轻量级Java EE是指使用相对较小、更易于理解和维护的技术栈来实现企业级应用,通常包括Spring框架、Hibernate持久化框架以及一些轻量级容器,如Tomcat,以替代传统的、更重量级的应用服务器,如WebLogic或WebSphere...

    轻量级虚拟化容器技术介绍.pptx

    "轻量级虚拟化容器技术介绍" 本文将对轻量级虚拟化容器技术进行介绍,涵盖容器简述、J2EE 容器、OpenVZ、Jails(FreeBSD)、Zones(Solaris)、Linux lxc、Docker Container 等多种轻量级虚拟化技术。 首先,容器是一...

    容器编排平台的轻量级监控与日志管理.pptx

    #### 一、轻量级容器平台监控需求 在当今高度动态的云原生环境中,容器化已成为部署应用程序的标准方式之一。随着容器数量的增长,对其进行有效监控的需求也日益增加。轻量级监控旨在为容器环境提供一种低开销、高...

    swing组件和容器实例

    轻量级容器可以容纳其他轻量级组件和轻量级容器。 JFrame 实例 JFrame 是 Swing 中最基本的重量级容器,通常用于创建独立的窗口应用程序。下面是一个简单的 JFrame 实例: ```java import javax.swing.*; import ...

    基于轻量级J2EE架构的WAP系统及其实现

    传统的J2EE架构往往因为其复杂性和较高的资源消耗而受到诟病,而轻量级容器架构则因其高效、易维护和可扩展性强等特点成为了中小型信息系统架构的优选方案。本文主要研究如何利用这种轻量级架构来简化WAP应用的开发...

    jetty轻量级servlet容器

    Jetty 是一个用 Java 实现、开源、基于标准的,并且具有丰富功能的 Http 服务器和 Web 容器,可以免费的用于商业行为。Jetty 这个项目成立于 1995 年,现在已经有非常多的成功产品基于 Jetty,比如 Apache Geromino...

Global site tag (gtag.js) - Google Analytics