Что такое middleware точно?


Я слышал много людей говорят в последнее время о middleware, но каково точное определение промежуточного программного обеспечения? Когда я смотрю в middleware, я нахожу много информации и некоторые определения, но при чтении этой информации и определений кажется, что в основном все "товары" находятся в середине чего-то. Так, все промежуточное?

или у вас есть пример изделия, которое не является промежуточным программным обеспечением?

13 153

13 ответов:

Допустим, ваша компания производит 4 разных продукта, у вашего клиента есть еще 3 разных продукта от других 3 разных компаний.

когда-нибудь клиент подумал, почему бы нам не объединить все системы в одну огромную систему. Через десять минут их ИТ-отдел сказал, что займет 2 года.

вы (мудрый разработчик) сказали, почему бы нам просто не интегрировать все различные системы и заставить их работать вместе в однородной среде? Клиентский менеджер уставился на тебя... Вы продолжили, мы будем использовать промежуточное программное обеспечение, мы будем изучать входы/выходы всех различных систем, ресурсы, которые они используют, а затем выбрать соответствующую структуру промежуточного программного обеспечения.

до сих пор объяснить не техническая менеджер
С Middleware framework в середине, первая система будет производить X вещи, система Y и Z будет потреблять эти выходы и так далее.

Middleware-это ужасно туманный термин. Что такое "промежуточное программное обеспечение" в одном случае не будет в другом. В общем, вы можете ожидать, что что-то, классифицируемое как промежуточное программное обеспечение, будет иметь следующие характеристики:

  • главным образом (обычно исключительно) программное обеспечение; обычно не нужно никакое специализированное оборудование.

  • Если это не там приложения, которые зависят от него, должны были бы включить его как часть своего приложения и будут опыт много дублирования.

  • почти наверняка связывает два приложения и передает данные между ними.

вы заметите, что это в значительной степени то же самое определение, что и операционная система. Так, например, стек TCP/IP или кэширование можно считать промежуточным программным обеспечением. Но ваша ОС также может предоставлять те же функции. Действительно, промежуточное программное обеспечение можно рассматривать как специальное расширение для операционной системы, специфичное для набора приложения, которые зависят от него. Он просто предоставляет услуги более высокого уровня.

некоторые примеры промежуточного программного обеспечения:

  • распределенного кэша
  • очереди сообщений
  • монитор транзакций
  • packet rewriter
  • автоматизированная система резервного копирования

Википедия имеет довольно хорошее объяснение:http://en.wikipedia.org/wiki/Middleware

начинается с

middleware является компьютер программное обеспечение, которое связывает компоненты программного обеспечения или приложений. Программное обеспечение состоит из набора служб, которые позволяют взаимодействовать нескольким процессам, запущенным на одной или нескольких машинах.

что такое Middleware приводит несколько примеров.

есть (по крайней мере) три разных определения, о которых я знаю

  • в бизнес-вычислениях промежуточное программное обеспечение-это программное обеспечение для обмена сообщениями и интеграции между приложениями и службами

  • в играх, middleware довольно хорошо все, что предоставляется третьей стороной

  • в (некоторых) встроенных программных системах промежуточное программное обеспечение предоставляет службы, используемые приложениями, которые состоят из функций, предоставляемых уровень аппаратной абстракции-он находится между прикладным уровнем и уровнем аппаратной абстракции.

проще говоря Middleware-это программный компонент, который предоставляет услуги по интеграции разрозненных систем вместе.

в сложной корпоративной среде существует ряд проблем, когда вам нужно интегрировать две или более корпоративных систем вместе, чтобы поговорить друг с другом. Обычно эти системы не понимают язык друг друга, поскольку они разрабатываются на разных платформах с использованием разных языков (например, C++, Java, Cobol и т. д.).

Так вот идет межплатформенное программное обеспечение в картине, которая предоставляет такие услуги, как

  • преобразование форматов сообщений из одного приложения в другое,
  • маршрутизация и обогащение сообщений помимо заботы о безопасности,
  • шифрования,
  • проверка и
  • применение различных бизнес-правил к этим сообщениям.

типичным примером промежуточного программного обеспечения является ESB такие продукты, как IBM message broker (WMB/IIB), WESB, Datapower XI50, Oracle Fusion, Mule и многие другие.

таким образом, промежуточное программное обеспечение находится в основном между приложениями, потребляющими услуги, и приложениями поставщика услуг и помогает этим приложениям разговаривать друг с другом.

промежуточное программное обеспечение-это общий термин для программного обеспечения, которое служит для "склеивания" отдельных, часто сложных и уже существующих программ. Некоторые программные компоненты, которые часто связаны с промежуточным программным обеспечением, включают корпоративные приложения и веб-службы.

Middleware о том, как наше приложение отвечает на входящие запросы. Middlewares изучают входящий запрос и принимают решения на основе этого запроса. Мы можем создавать целые приложения только с помощью промежуточных программ. Например: ASP.NET это веб-фреймворк, состоящий из следующих основных компонентов http middleware.

  1. обработка исключений/ошибок
  2. статический файл сервер
  3. проверка подлинности
  4. MVC Middlewares

Как показано на приведенной выше диаграмме, существуют различные компоненты промежуточного программного обеспечения в ASP.NET которые получают входящий запрос и перенаправляют его в класс C# (в данном случае класс контроллера).

Middleware стоит между веб-приложениями и веб-службами, которые изначально не могут общаться и часто написаны на разных языках/фреймворках.

одним из таких примеров является OWIN middleware for .NET среда, прежде чем люди owin были вынуждены размещать веб-приложения в программном обеспечении хостинга microsoft под названием IIS. После того, как долг был развит, он имеет дополнительную емкость для размещения в IIS и самостоятельного узла в IIS просто добавили поддержку OWIN, которые выступают в качестве посредников. Также стало возможным host .NET web apps on Linux via Mono, что снова добавило поддержку Owin.

он также добавил способность создавать Single Page Applications, Owin handling Http контекст запроса/ответа, поэтому поверх owin вы можете добавить authentication/authorization логика через OAuth2 например, вы можете настроить middleware для регистрации класса, который содержит логику аутентификации пользователя (например. Реализация OAuth2) или класс, который содержит логику управления http-запросами / ответными сообщениями, таким образом вы можете заставить одно приложение взаимодействовать с другим приложения / службы через другой формат данных (например, json, xml и т. д., Если вы ориентируетесь на веб-сайт).

существует общее определение в разработке веб-приложений, которое является (и я делаю эту формулировку, но она, кажется, подходит):компонент, который предназначен для изменения HTTP-запроса и / или ответа, но (как правило) не служит ответу в полном объеме, предназначенный для связывания вместе, чтобы сформировать конвейер поведенческих изменений во время обработки запроса.

примеры задач, которые обычно реализованы промежуточное ПО:

  • сжатие ответа Gzip
  • HTTP-аутентификации
  • запрос журнала

ключевым моментом здесь является то, что ни один из них не несет полной ответственности за ответ клиенту. Вместо этого каждый изменяет поведение каким-то образом как часть конвейера, оставляя фактический ответ исходить из чего-то более позднего в последовательности (конвейер).

обычно промежуточные программы запускаются перед каким-то" маршрутизатором", который проверяет запрос (часто путь) и вызывает соответствующий код для генерации ответа.

лично я ненавижу термин "промежуточное программное обеспечение" за его универсальность, но он широко используется.

вот дополнительное объяснение, специально применимое к Ruby on Rails.

некоторые примеры промежуточного программного обеспечения: CORBA, удаленный вызов метода (RMI),...

примеры, упомянутые выше, - это все части программного обеспечения, позволяющие вам заботиться о связи между различными процессами (либо запущенными на одной машине, либо распределенными, например, через интернет).

из моего собственного опыта работы с webwork, промежуточное программное обеспечение было материалом между пользователями (веб-браузер) и базой данных бэкэнда. Это было программное обеспечение, которое принимало вещи, которые пользователи вставляли (например: заказы на iPads, делали какую-то волшебную бизнес-логику, т. е. проверяли, достаточно ли iPads для заполнения заказа) и обновляли базу данных бэкэнда, чтобы отразить эти изменения.

Это просто часть программного обеспечения или инструмент,на котором ваше приложение выполняет и возможности раппликации в отношении высокой доступности,масштабируемости, интеграции с другими программами или системами, не беспокоясь о ваших изменениях кода уровня приложения .

например: операционная система, на которой работает ваше приложение, требует изменения I. P, вам не нужно беспокоиться об этом в своем коде , это стек промежуточного программного обеспечения, на котором вы можете просто обновить конфигурация.

Пример 2: вы испытываете проблемы с выделением памяти во время выполнения и чувствуете , что использование вашего приложения увеличилось , вам не нужно много об этом, если у вас нет ошибки или узкого места в коде, это легко достижимо путем настройки конфигурации промежуточного программного обеспечения, на котором работает ваше приложение.

Пример 3 : у вас есть несколько разрозненных программ, и вам нужно, чтобы они разговаривали друг с другом или отправляли данные в общем формате, который является понятно для всех систем, то это где промежуточное программное обеспечение системы приходит удобно.

надеемся, что предоставленная информация поможет.

Я всегда думал об этом как о самом старом программном обеспечении, которое мне пришлось установить. Всего приложение использовало веб-сервер, сервер базы данных и сервер приложений. Веб-сервер является промежуточным между данными и приложением.