最近、多くの人がミドルウェアについて話しているのを聞いたことがありますが、ミドルウェアの正確な定義は何ですか?ミドルウェアを調べると、多くの情報といくつかの定義が見つかりますが、これらの情報と定義を読んでいると、ほとんどすべての「ウェア」が何かの中間にあるようです。だから、すべてのものはミドルウェアですか?
または、ミドルウェアではない製品の例はありますか?
会社が4つの異なる製品を製造しており、クライアントが別の3つの異なる会社からの別の3つの異なる製品を持っているとします。
いつかクライアントは、すべてのシステムを1つの巨大なシステムに統合してみませんかと考えました。 10分後、IT部門は2年かかると述べました。
あなた(賢明な開発者)は、なぜ私たちはすべての異なるシステムを統合し、それらを同種の環境で一緒に動作させないのですか?クライアントマネージャーがあなたを見つめています...続けて、ミドルウェアを使用し、すべての異なるシステムの入力/出力、それらが使用するリソースを調査し、適切なミドルウェアフレームワークを選択します。
それでも技術管理者以外に説明
ミドルウェアフレームワークが中央にある場合、最初のシステムはXのものを生成し、システムYとZはこれらの出力を消費します。
ミドルウェアは非常に曖昧な用語です。ある場合の「ミドルウェア」は、別の場合にはありません。一般に、ミドルウェアとして分類されるものには、次の特性があることが期待できます。
主に(通常は排他的に)ソフトウェア。通常、特別なハードウェアは必要ありません。
そこにwere n'tがある場合、それに依存するアプリケーションはアプリケーションの一部としてそれを組み込む必要があり、多くの重複が発生します。
ほぼ確実に2つのアプリケーションを接続し、それらの間でデータを受け渡します。
これは、オペレーティングシステムとほぼ同じ定義であることがわかります。したがって、たとえば、TCP/IPスタックまたはキャッシングはミドルウェアと見なすことができます。しかし、OSも同じ機能を提供できます。実際、ミドルウェアは、それに依存する一連のアプリケーションに固有の、オペレーティングシステムの特別な拡張機能と考えることができます。高レベルのサービスを提供するだけです。
ミドルウェアの例:
ウィキペディアには非常に良い説明があります: http://en.wikipedia.org/wiki/Middleware
それでは始まります
ミドルウェアは、ソフトウェアコンポーネントまたはアプリケーションを接続するコンピューターソフトウェアです。このソフトウェアは、1つまたは複数のマシンで実行されている複数のプロセスが対話できるようにする一連のサービスで構成されています。
ミドルウェアとは にいくつかの例を示します。
私が知っている(少なくとも)3つの異なる定義があります
ビジネスコンピューティングでは、ミドルウェアはアプリケーションとサービス間のメッセージングおよび統合ソフトウェアです
ゲームでは、ミドルウェアはサードパーティが提供するものなら何でも
(一部の)組み込みソフトウェアシステムでは、ミドルウェアはアプリケーションが使用するサービスを提供します。これは、ハードウェアアブストラクションレイヤーによって提供される機能で構成されます。アプリケーションレイヤーとハードウェアアブストラクションレイヤーの間にあります。
簡単に言えば、ミドルウェアは、異種システムを統合するサービスを提供するソフトウェアコンポーネントです。
複雑なエンタープライズ環境では、2つ以上のエンタープライズシステムを統合して相互に通信する必要がある場合、多くの課題があります。通常、これらのシステムは異なる言語(C++、Java、Cobolなど)を使用して異なるプラットフォームで開発されるため、互いの言語を理解しません。
したがって、次のようなサービスを提供するミドルウェアソフトウェアが登場します。
ミドルウェアの典型的な例は、IBMメッセージブローカー(WMB/IIB)、WESB、Datapower XI50、Oracle Fusion、Muleなどの製品ESBです。
したがって、ミドルウェアは、主にサービスを消費するアプリとサービスプロバイダーのアプリの間に位置し、これらのアプリが相互に通信できるようにします。
ミドルウェアは、個別の、しばしば複雑で既存のプログラムを「結合」するのに役立つソフトウェアの一般的な用語です。ミドルウェアと頻繁に接続されるソフトウェアコンポーネントには、エンタープライズアプリケーションやWebサービスが含まれます。
Webアプリケーション開発には、次のような共通の定義があります(私はこの言い回しを作成していますが、適切なようです):変更するように設計されたコンポーネントHTTPリクエストおよび/またはレスポンスですが、(通常)レスポンス全体を提供せず、リクエスト処理中の動作変更のパイプラインを形成するために一緒に連鎖するように設計されています。
ミドルウェアによって一般的に実装されるタスクの例:
ここで重要なのは、これらのいずれもクライアントへの応答に完全に責任を負わないということです。代わりに、それぞれがパイプラインの一部として何らかの方法で動作を変更し、実際の応答はシーケンスの後半(パイプライン)からのものになります。
通常、ミドルウェアは、ある種の「ルーター」の前に実行されます。これは、要求(多くの場合、パス)を調べ、適切なコードを呼び出して応答を生成します。
個人的には、その汎用性から「ミドルウェア」という用語は嫌いですが、一般的に使用されています。
Middleware
は、ネイティブでは通信できず、多くの場合異なる言語/フレームワークで記述されているWebアプリケーションとWebサービスの間に位置します。
そのような例の1つは、OWIN middleware for .NET
環境です。これは、owinの人々がIIS
と呼ばれるマイクロソフトのホスティングソフトウェアでWebアプリをホストすることを余儀なくされる前のことです。 owinが開発された後、IISとセルフホストの両方のホストに容量が追加されました。IISでは、インターフェイスとして機能するOwinのサポートが追加されました。また、Host .NET web apps on Linux via Mono
が可能になり、Owinのサポートが再び追加されました。
また、Single Page Applications
、Owin処理Http
要求/応答コンテキストを作成するための容量が追加されたため、owinの上にOAuth2を介してauthentication/authorization
ロジックを追加できます。たとえば、ミドルウェアを構成して、ユーザー認証のロジックを含むクラス(例:OAuth2実装)またはhttp要求/応答メッセージを管理する方法のロジックを含むクラス。1つのアプリケーションが異なるデータ形式(jsonなど)で他のアプリケーション/サービスと通信できるようにしますxmlなど、ウェブをターゲットにしている場合)。
ミドルウェアの例:CORBA、Remote Method Invocation(RMI)、...
上記の例はすべて、異なるプロセス(同じマシン上で実行されているか、インターネットなどで配布されている)間の通信を処理できるソフトウェアです。
これは、オペレーティングシステムとネットワーク内の分散コンピューティングシステムの両側のアプリケーションとの間のソフトウェア層です。実際、異種ネットワークとソフトウェアシステムを接続します。
私自身のウェブワークの経験から、ミドルウェアはユーザー(Webブラウザー)とバックエンドデータベースの間のものでした。ユーザーが入れたもの(例:iPadの注文、魔法のようなビジネスロジックの実行、つまり注文を満たすのに十分なiPadがあるかどうかの確認)を受け取り、それらの変更を反映するようにバックエンドデータベースを更新したソフトウェアです。
これは、アプリケーションのレベルコードの変更を気にすることなく、アプリケーションが実行されるソフトウェアまたはツールであり、高可用性、スケーラビリティ、他のソフトウェアまたはシステムとの統合に関するrapplication機能です。
たとえば、アプリケーションを実行するオペレーティングシステムはI.Pの変更を必要とします。コードを変更する必要はありません。構成を簡単に更新できるミドルウェアスタックです。
例2:ランタイムメモリの割り当てで問題が発生し、アプリケーションの使用量が増加したと感じます。コードにバグやボトルネックがない限り、それについてあまり気にする必要はありません。アプリケーションが実行します。
例3:複数の異なるソフトウェアがあり、それらが相互に通信するか、すべてのシステムが理解できる共通の形式でデータを送信する必要がある場合、ミドルウェアシステムが便利です。
提供された情報がお役に立てば幸いです。
私はいつも、私がインストールしなければならない最も古いソフトウェアだと考えていました。合計アプリは、Webサーバー、データベースサーバー、およびアプリケーションサーバーを使用しました。 Webサーバーは、データとアプリの間のミドルウェアです。