미들웨어 란 정확히 무엇입니까?


202

최근 미들웨어 에 관해 많은 사람들이 이야기하는 것을 들었지만 미들웨어 의 정확한 정의는 무엇입니까? 미들웨어를 살펴보면 많은 정보와 정의가 있지만 이러한 정보와 정의를 읽는 동안 대부분의 '웨어'가 중간에있는 것 같습니다. 모든 것이 미들웨어입니까?

아니면 미들웨어가 아닌 도자기의 예가 있습니까?

답변:


219

회사가 4 개의 서로 다른 제품을 만들고 고객이 다른 3 개의 다른 회사와 다른 3 개의 다른 제품을 가지고 있다고 가정 해 봅시다.

언젠가 고객은 모든 시스템을 하나의 거대한 시스템으로 통합하지 않겠다고 생각했습니다. 10 분 후 그들의 IT 부서는 2 년이 걸릴 것이라고 말했다.

당신 (현명한 개발자)은 이렇게 말합니다. 우리는 왜 모든 다른 시스템을 통합하여 동종의 환경에서 함께 작동하게하지 않습니까? 고객 관리자가 당신을 응시합니다 ... 계속해서, 우리는 미들웨어를 사용하고, 모든 다른 시스템의 입력 / 출력, 그들이 사용하는 자원을 연구 한 다음 적절한 미들웨어 프레임 워크를 선택합니다.

비 기술 관리자에게 여전히 설명
중간에 미들웨어 프레임 워크를 사용하면 첫 번째 시스템은 X 재료를 생성하고 시스템 Y 및 Z는 이러한 출력을 소비합니다.


대단한 예! 이런 식으로 이기종 환경이되지 않습니까? 균질하지 않습니다.
Rabia Naz khan

미들웨어는 데이터 (집계 + 변환) 구성 요소입니다.
에과 교환

92

미들웨어는 끔찍한 용어입니다. 어떤 경우에는 "미들웨어"가 다른 것이 아닙니다. 일반적으로 미들웨어로 분류 된 항목은 다음과 같은 특성을 갖습니다.

  • 주로 (보통 독점적으로) 소프트웨어; 일반적으로 특별한 하드웨어가 필요하지 않습니다.

  • 이 경우 아니었다 거기에 종속 된 응용 프로그램은 응용 프로그램의 일부로 통합해야하고 중복을 많이 경험한다.

  • 거의 두 응용 프로그램을 연결하고 두 응용 프로그램간에 데이터를 전달합니다.

이것은 운영 체제와 거의 동일한 정의입니다. 예를 들어, TCP / IP 스택 또는 캐싱은 미들웨어로 간주 될 수 있습니다. 그러나 OS에서도 동일한 기능을 제공 할 수 있습니다. 실제로 미들웨어는 운영 체제에 대한 특수한 확장으로 생각할 수 있습니다. 그것은 단지 더 높은 수준의 서비스를 제공합니다.

미들웨어의 몇 가지 예 :

  • 분산 캐시
  • 메시지 대기열
  • 거래 모니터
  • 패킷 리 라이터
  • 자동 백업 시스템

20

Wikipedia에는 ​​다음과 같은 설명이 있습니다. http://en.wikipedia.org/wiki/Middleware

로 시작

미들웨어는 소프트웨어 구성 요소 또는 응용 프로그램을 연결하는 컴퓨터 소프트웨어입니다. 이 소프트웨어는 하나 이상의 시스템에서 실행중인 여러 프로세스가 상호 작용할 수있는 일련의 서비스로 구성됩니다.

미들웨어 란 몇 가지 예를 제공합니다.


1
나는 스스로 그것을 이미 발견했지만 위키피디아는 모든 것이 미들웨어라고 말하거나 미들웨어가 아닌 도자기의 예를 가지고 있다고 생각한다
Michel

2
"기본적으로는 할 수없는 상호 작용할 하나 이상의 컴퓨터"를 추가하여 명확하게 설명합니다. 그렇지 않으면 그 대답에 아무런 문제가 없다고 동의하십시오.
jeriley

1
"기본적으로 할 수없는 상호 작용하는 하나 이상의 [프로세스]"라고 말하는 것이 좋습니다.
fstuijt

19

내가 아는 세 가지 다른 정의가 있습니다 (적어도).

  • 비즈니스 컴퓨팅에서 미들웨어는 애플리케이션과 서비스 간 메시징 및 통합 소프트웨어입니다.

  • 게임에서 미들웨어는 타사에서 제공하는 모든 것입니다.

  • (일부) 임베디드 소프트웨어 시스템에서 미들웨어는 애플리케이션이 사용하는 서비스를 제공하는데, 이는 하드웨어 추상화 계층에서 제공하는 기능으로 구성되며 애플리케이션 계층과 하드웨어 추상화 계층 사이에 위치합니다.


15

간단히 말해 미들웨어는 서로 다른 시스템을 통합하는 서비스를 제공하는 소프트웨어 구성 요소입니다.

복잡한 엔터프라이즈 환경에서는 둘 이상의 엔터프라이즈 시스템을 서로 통합하여 서로 통신해야하는 경우 여러 가지 문제가 있습니다. 일반적으로 이러한 시스템은 서로 다른 언어 (C ++, Java, Cobol 등)를 사용하여 서로 다른 플랫폼에서 개발되므로 서로의 언어를 이해하지 못합니다.

다음과 같은 서비스를 제공하는 미들웨어 소프트웨어가 제공됩니다.

  • 한 앱에서 다른 앱으로 메시지 형식 변환
  • 보안 관리 외에도 메시지 라우팅 및 강화
  • 암호화
  • 검증 및
  • 이 메시지에 다른 비즈니스 규칙을 적용합니다.

미들웨어의 전형적인 예는 IBM 메시지 브로커 (WMB / IIB), WESB, Datapower XI50, Oracle Fusion, Mule 등과 같은 ESB 제품입니다.

따라서 미들웨어는 주로 서비스 소비 앱과 서비스 제공자 앱 사이에 있으며 이들 앱이 서로 통신하도록 도와줍니다.


14

미들웨어 는 애플리케이션이 들어오는 요청에 응답하는 방식에 관한 것입니다. 미들웨어는 들어오는 요청을 조사하고이 요청에 따라 결정을 내립니다. 미들웨어 만 사용하여 전체 애플리케이션을 빌드 할 수 있습니다. 예를 들어 ASP.NET은 다음과 같은 주요 HTTP 미들웨어 구성 요소로 구성된 웹 프레임 워크입니다.

  1. 예외 / 오류 처리
  2. 정적 파일 서버
  3. 입증
  4. MVC 미들웨어

위 다이어그램에 표시된 것처럼 ASP.NET에는 들어오는 요청을 받고이를 C # 클래스 (이 경우 컨트롤러 클래스)로 리디렉션하는 다양한 미들웨어 구성 요소가 있습니다.


10

미들웨어는 소프트웨어를 가리키는 용어로, 종종 복잡하고 이미 존재하는 별도의 프로그램을 "함께 붙입니다". 미들웨어와 자주 연결되는 일부 소프트웨어 구성 요소에는 엔터프라이즈 응용 프로그램 및 웹 서비스가 포함됩니다.


6

웹 응용 프로그램 개발에는 다음과 같은 일반적인 정의가 있습니다 (그리고이 말을하고 있지만 적합합니다) : HTTP 요청 및 / 또는 응답을 수정하도록 설계되었지만 응답을 제공하지 않는 구성 요소 전체적으로 요청 처리 중에 동작 변경의 파이프 라인을 형성하도록 함께 연결되도록 설계되었습니다.

미들웨어에 의해 일반적으로 구현되는 작업의 예 :

  • Gzip 응답 압축
  • HTTP 인증
  • 요청 로깅

여기서 중요한 점은이 중 어느 것도 고객에게 응답 할 책임이 없다는 것입니다. 대신 각각은 파이프 라인의 일부로 동작을 변경하여 실제 응답이 나중에 시퀀스 (파이프 라인)에서 오는 것으로 남습니다.

일반적으로 미들웨어는 일종의 "라우터"보다 먼저 실행되는데,이 라우터는 요청 (종종 경로)을 검사하고 적절한 코드를 호출하여 응답을 생성합니다.

개인적으로, 나는 "미들웨어"라는 용어가 그 일반적인 의미를 싫어하지만 그것은 일반적으로 사용됩니다.

다음은 Ruby on Rails에 특별히 적용되는 추가 설명입니다.


6

Middleware 기본적으로 통신 할 수없고 종종 다른 언어 / 프레임 워크로 작성된 웹 응용 프로그램과 웹 서비스 사이에 있습니다.

OWIN middleware for .NETowin 사람들이라는 Microsoft 호스팅 소프트웨어에서 웹 응용 프로그램을 호스팅하도록 강제하기 전의 환경 이 그러한 예입니다 IIS. owin이 개발 된 후 IIS와 자체 호스트 모두에서 호스트 할 수있는 용량이 추가되었으며 IIS에서는 인터페이스 역할을하는 Owin에 대한 지원이 추가되었습니다. 또한 host .NET web apps on Linux via MonoOwin에 대한 지원을 다시 추가 할 수있게되었습니다 .

또한 Single Page ApplicationsOwin 처리 Http요청 / 응답 컨텍스트 를 작성할 수있는 용량을 추가 했으므로 owin 위에 authentication/authorizationOAuth2를 통해 로직을 추가 할 수 있습니다. 예를 들어, 사용자 인증 로직 (예 : OAuth2 구현)이 포함 된 클래스를 등록하도록 미들웨어를 구성 할 수 있습니다. http 요청 / 응답 메시지를 관리하는 방법에 대한 논리를 포함하는 클래스로, 하나의 애플리케이션이 다른 데이터 형식 (예 : 웹을 대상으로하는 경우 json, xml 등)을 통해 다른 애플리케이션 / 서비스와 통신하도록 할 수 있습니다.


3

미들웨어의 일부 예 : CORBA, 원격 메소드 호출 (RMI), ...

위에서 언급 한 예는 서로 다른 프로세스 (예 : 동일한 컴퓨터에서 실행되거나 인터넷을 통해 배포) 간의 통신을 처리 할 수있는 모든 소프트웨어입니다.


2

내 자신의 웹 워크 경험에서 미들웨어는 사용자 (웹 브라우저)와 백엔드 데이터베이스 사이에있는 것들이었습니다. 이 소프트웨어는 사용자가 입력 한 것들 (예 : iPad 주문, 마법의 비즈니스 로직, 즉 주문을 처리 할 수있는 충분한 iPad가 있는지 확인)을 수행하고 이러한 변경 사항을 반영하도록 백엔드 데이터베이스를 업데이트 한 소프트웨어였습니다.


2

응용 프로그램 수준 코드 변경에 신경 쓰지 않고 고 가용성, 확장 성, 다른 소프트웨어 또는 시스템과의 통합과 관련하여 응용 프로그램이 실행되고 응용 프로그램 기능이 실행되는 소프트웨어 또는 도구 일뿐입니다.

예를 들면 다음과 같습니다. 응용 프로그램이 실행되는 운영 체제에서 IP 변경이 필요하므로 코드에서 걱정할 필요가 없습니다. 구성을 간단하게 업데이트 할 수있는 미들웨어 스택입니다.

예제 2 : 런타임 메모리 할당에 문제가 발생하고 애플리케이션 사용량이 증가했다고 생각합니다. 코드에 버그 나 병목 현상이 없으면 미들웨어 소프트웨어 구성을 조정하여 쉽게 달성 할 수 있습니다. 응용 프로그램이 실행됩니다.

예 3 : 여러 개의 서로 다른 소프트웨어가 있으며 서로 대화하거나 모든 시스템에서 이해할 수있는 공통 형식으로 데이터를 보내야합니다. 그러면 미들웨어 시스템이 편리합니다.

제공된 정보가 도움이 되길 바랍니다.


2

네트워크에서 분산 컴퓨팅 시스템의 각 측면에있는 운영 체제와 응용 프로그램 사이의 소프트웨어 계층입니다. 실제로 이기종 네트워크 및 소프트웨어 시스템을 연결합니다.


0

항상 설치해야하는 가장 오래된 소프트웨어라고 생각했습니다. 총 앱은 웹 서버, 데이터베이스 서버 및 응용 프로그램 서버를 사용했습니다. 웹 서버는 데이터와 앱 사이의 미들웨어입니다.


0

소프트웨어 응용 프로그램 프레임 워크 에서 컨텍스트를 기반으로 내가 틀리지 않은 경우 사용자 와 응용 프로그램 간에 특정 활동을 수행하기 위해 결합 할 수있는 middleware다음 역할 을 고려할 수 있습니다 .requestresponse

  • 어댑터
  • 살균제
  • 검사기
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.