ミドルウェアとは正確には何ですか?


202

最近ミドルウェアについて多くの人が話しているのを聞いたことがありますが、ミドルウェアの正確な定義は何ですか?ミドルウェアを調べると、たくさんの情報と定義が見つかりますが、これらの情報と定義を読んでいると、ほとんどすべての「ウェア」が何かの真ん中にあるようです。それで、すべてはミドルウェアですか?

それともミドルウェアではないウェアの例はありますか?

回答:


219

あなたの会社が4つの異なる製品を製造していて、クライアントが別の3つの異なる会社の別の3つの異なる製品を持っているとします。

いつかクライアントは、すべてのシステムを1つの巨大なシステムに統合しないのかと考えました。10分後、IT部門は2年かかると語った。

あなた(賢明な開発者)は、さまざまなシステムをすべて統合して、同種の環境でそれらを一緒に動作させてみませんか?クライアントマネージャーがあなたを見つめています...あなたは続けて、ミドルウェアを使用し、すべての異なるシステムの入力/出力、それらが使用するリソースを調べ、適切なミドルウェアフレームワークを選択します。


ミドルウェアフレームワークを途中に置いたまま、非技術系マネージャーに説明します。最初のシステムはXのものを生成し、システムYとZはそれらの出力を消費します。


素晴らしい例です!このようにして、それは異質な環境になるのではないでしょうか?均質ではありません。
Rabia Naz khan、2016

ミドルウェアは、データ(集約+変換)コンポーネントです。
過剰交換

92

ミドルウェアはひどく曖昧な用語です。ある場合の「ミドルウェア」は、別の場合にはありません。一般に、ミドルウェアとして分類されるものには、次の特性があると期待できます。

  • 主に(通常は排他的に)ソフトウェア。通常、特別なハードウェアは必要ありません。

  • それは場合はありませんでしたが、それに依存するアプリケーションは、そのアプリケーションの一部としてそれを組み込むしなければならないとの重複の多くを経験するでしょう。

  • ほとんどの場合、2つのアプリケーションを接続し、それらの間でデータを受け渡します。

これはオペレーティングシステムとほとんど同じ定義であることに気づくでしょう。したがって、たとえば、TCP / IPスタックまたはキャッシングはミドルウェアと見なすことができます。ただし、OSも同じ機能を提供できます。実際、ミドルウェアは、オペレーティングシステムに依存する一連のアプリケーションに固有の、オペレーティングシステムの特別な拡張機能と考えることができます。より高レベルのサービスを提供するだけです。

ミドルウェアの例:

  • 分散キャッシュ
  • メッセージキュー
  • トランザクションモニター
  • パケットリライター
  • 自動バックアップシステム

20

ウィキペディアにはかなり良い説明があります:http : //en.wikipedia.org/wiki/Middleware

それでは始まります

ミドルウェアは、ソフトウェアコンポーネントまたはアプリケーションを接続するコンピューターソフトウェアです。ソフトウェアは、1つ以上のマシンで実行されている複数のプロセスが相互作用できるようにする一連のサービスで構成されています。

ミドルウェアとはいくつかの例を示します。


1
私は出回っそれを自分自身を見つけたが、ウィキペディアのすべてがミドルウェアであるか、あなたがミドルウェアであるしない陶器の例を持っているかと言うようだ
ミシェル・

2
「ネイティブでは対話できない1つ以上のマシンが対話することができます」を追加することで明確にします。それ以外の場合は、同意し、その答えに問題はありません。
ジェリー

1
「ネイティブに対話するための1つ以上の[プロセス]は不可能である」と言う方が良いでしょう。
fstuijt

19

私が知っている(少なくとも)3つの異なる定義があります

  • ビジネスコンピューティングでは、ミドルウェアはアプリケーションとサービス間のメッセージングおよび統合ソフトウェアです

  • ゲームでは、ミドルウェアはサードパーティによって提供されるものなら何でも結構です

  • (一部の)組み込みソフトウェアシステムでは、ミドルウェアは、アプリケーションが使用するサービスを提供します。これらのサービスは、ハードウェアアブストラクションレイヤーによって提供される機能から構成されます。アプリケーションレイヤーとハードウェアアブストラクションレイヤーの間にあります。


15

簡単に言えば、ミドルウェアは、異種システムを統合するサービスを提供するソフトウェアコンポーネントです。

複雑なエンタープライズ環境では、2つ以上のエンタープライズシステムを統合して互いに通信する必要がある場合、いくつかの課題があります。通常、これらのシステムは、異なる言語(C ++、Java、Cobolなど)を使用して異なるプラットフォームで開発されているため、お互いの言語を理解しません。

そこで、次のようなサービスを提供するミドルウェアソフトウェアが登場します。

  • 1つのアプリから別のアプリへのメッセージ形式の変換
  • セキュリティの管理に加えて、メッセージのルーティングと強化
  • 暗号化、
  • 検証と
  • これらのメッセージに異なるビジネスルールを適用する。

ミドルウェアの典型的な例は、IBMメッセージブローカー(WMB / IIB)、WESB、Datapower XI50、Oracle Fusion、MuleなどのESB製品です。

したがって、ミドルウェアは、主にサービスを消費するアプリとサービスプロバイダーのアプリの間に位置し、これらのアプリが互いに対話するのを助けます。


14

ミドルウェアとは、アプリケーションが着信要求に応答する方法です。ミドルウェアは着信要求を調べ、この要求に基づいて決定を行います。ミドルウェアのみを使用してアプリケーション全体を構築できます。たとえばASP.NETは、次の主要なHTTPミドルウェアコンポーネントで構成されるWebフレームワークです。

  1. 例外/エラー処理
  2. 静的ファイルサーバー
  3. 認証
  4. MVC ミドルウェア

上の図に示すように、ASP.NETにはさまざまなミドルウェアコンポーネントがあり、これらは着信要求を受け取り、それをC#クラス(この場合はコントローラークラス)にリダイレクトします。


10

ミドルウェアは、別々の、しばしば複雑で既存のプログラムを「接着」するために役立つソフトウェアの一般的な用語です。ミドルウェアと頻繁に接続されるソフトウェアコンポーネントには、エンタープライズアプリケーションやWebサービスが含まれます。


6

である(と私は、この文言を作ってるんだけど、収まるように思われる)は、Webアプリケーション開発における一般的な定義があります:HTTP要求および/または応答を変更するために設計されていますが、(通常は)応答を提供していないコンポーネントは、全体として、リクエスト処理中の動作変更のパイプラインを形成するために一緒にチェーンされるように設計されています。

ミドルウェアによって一般的に実装されるタスクの例:

  • Gzip応答圧縮
  • HTTP認証
  • ログの要求

ここで重要なのは、これらのどれもクライアントへの応答に完全に責任があるわけではないということです。代わりに、それぞれが何らかの方法でパイプラインの一部として動作を変更し、実際の応答はシーケンスの後半(パイプライン)からのものになるようにします。

通常、ミドルウェアは、ある種の「ルーター」の前に実行されます。ルーターは、リクエスト(通常はパス)を調べ、適切なコードを呼び出してレスポンスを生成します。

個人的には、「ミドルウェア」という用語はその総称として嫌いですが、一般的に使用されています。

Ruby on Railsに特に適用される追加の説明を以下に示します。


6

Middleware ネイティブに通信できないWebアプリケーションとWebサービスの間にあり、多くの場合、異なる言語/フレームワークで記述されています。

そのような例の1つはOWIN middleware for .NET、owinの人々がと呼ばれるMicrosoftホスティングソフトウェアでWebアプリをホストすることを余儀なくされる前の環境ですIIS。owinが開発された後、IISとセルフホストの両方でホストする機能が追加されました。IISでは、インターフェースとして機能するOwinのサポートが追加されました。またhost .NET web apps on Linux via Mono、Owinのサポートを追加したも可能になります。

またSingle Page Applications、OwinがHttp要求/応答コンテキストを処理する作成機能を追加したため、authentication/authorizationOwinの上にOAuth2を介してロジックを追加できます。たとえば、ユーザー認証のロジックを含むクラスを登録するようにミドルウェアを構成できます(例:OAuth2実装の場合)またはhttp要求/応答メッセージを管理する方法のロジックを含むクラス。これにより、1つのアプリケーションを別のデータ形式(json、xmlなど、Webを対象としている場合)を介して他のアプリケーション/サービスと通信させることができます。


3

ミドルウェアの例:CORBA、Remote Method Invocation(RMI)、...

上記の例は、さまざまなプロセス(同じマシンで実行されているか、インターネットなどで配布されているプロセス)間の通信を処理できるすべてのソフトウェアです。


2

私のウェブワークの経験から、ミドルウェアはユーザー(Webブラウザー)とバックエンドデータベースの間のものでした。これは、ユーザーが入力したもの(例:iPadの注文、魔法のビジネスロジック、つまり注文を満たすのに十分なiPadがあるかどうかを確認)を取り、それらの変更を反映するようにバックエンドデータベースを更新したソフトウェアです。


2

アプリケーションレベルのコード変更を気にすることなく、他のソフトウェアやシステムと統合して、高可用性、スケーラビリティに関してアプリケーションが実行し、アプリケーション機能を実行するためのソフトウェアまたはツールにすぎません。

例:アプリケーションを実行するオペレーティングシステムにはIPの変更が必要です。コードでそれを心配する必要はありません。これは、構成を簡単に更新できるミドルウェアスタックです。

例2:ランタイムメモリの割り当てで問題が発生し、アプリケーションの使用量が増加していると感じます。コードにバグやボトルネックがない限り、それについてあまり気にする必要はありません。アプリケーションが実行するもの。

例3:複数の異なるソフトウェアがあり、それらが互いに対話したり、すべてのシステムで理解できる共通の形式でデータを送信したりする必要がある場合は、ミドルウェアシステムが便利です。

提供された情報がお役に立てば幸いです。


2

これは、ネットワーク内の分散コンピューティングシステムの両側にあるオペレーティングシステムとアプリケーション間のソフトウェア層です。実際には、異種ネットワークとソフトウェアシステムを接続します。


0

私はいつもそれを自分がインストールしなければならない最も古いソフトウェアだと思っていました。アプリの合計は、Webサーバー、データベースサーバー、およびアプリケーションサーバーを使用しました。データとアプリの間のミドルウェアであるWebサーバー。


0

私が間違っていない場合は、ソフトウェアアプリケーションフレームワークで、コンテキストに基づいて、ユーザーとアプリケーションの間で特定のアクティビティを実行するために組み合わせることができるmiddleware次の役割を検討できrequestますresponse

  • アダプタ
  • 消毒剤
  • バリデーター
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.