Взаимодействие программ между собой это

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

Также программы должны уметь «исполь­зовать» другие программы и системы, разработанные сто­ронними организациями. Например, ваша программа мо­жет подготовить некоторый отчетный документ в формате Microsoft Word, и этот документ будет доступен на всех компьютерах, на которых установлен Word (но на кото­рых может не быть вашей программы).

Аналогично, мож­но из прикладной программы создать итоговые чертежи в формате распространенных графических систем (напри­мер, в формате AutoCAD или Corel Draw). В этом случае один из основных вопросов — организация взаимного об­щения программ друг с другом и с источником данных. В качестве последнего в ИС выступают базы данных (БД), вместе с системой управления базами данных (СУБД).

Галилео. Эксперимент. Межмолекулярное взаимодействие свинца

Программы, работающие в составе ИС, получают инфор­мацию из БД, к которым имеют доступ и другие програм­мы. В этом случае естественным образом создается воз­можность взаимосвязи приложений через данные. Например, одна программа записывает результаты своей рабо­ты, а другая использует их как начальные данные для своей работы. Этот простейший уровень взаимосвязи тре­бует одного — унификацию данных и форматов их хране­ния. Для целей унифицированного доступа к данным ис­пользуются специальные языки, например SQL (Structured Query Language — язык структурированных запросов).

Но во многих случаях этого простейшего механизма общения недостаточно для современной ИС — например, программа не должна ожидать, когда кем-то будет запу­щена другая программа — поставщик данных. Необходи­мо иметь возможность запускать из одной программы дру­гую, передавая при этом ей управляющую информацию. Запуск основного приложения порождает в среде операци­онной системы процесс, для которого операционная систе­ма выделяет необходимые ресурсы компьютера (память и время процессора). Дочерняя программа может выполнять­ся как в адресном пространстве вызвавшей ее программы, так и в собственном адресном пространстве и в другом потоке.

Однако часто требуется обмен информацией между про­граммами, выполняющимися одновременно (параллельно). Желательно, чтобы этот обмен не зависел от языка про­граммирования, на котором написаны разные программы, а в сетевых системах не зависел и от операционных сис­тем, установленных на разных компьютерах. Яркий при­мер подобной организации взаимосвязи — Интернет, в гло­бальную сеть соединены компьютеры с различными опе­рационными системами (Windows, Unix, Solaris, сотовые телефоны и др.).

Простейшими средствами параллельного общения вна­чале были файлы совместного доступа, или разделяемые файлы (файлы, к которым могут иметь одновременный доступ несколько программ), которые появились еще на заре Windows. Также ранним средством является буфер обмена ClipBoard, доступный практически всем приложе­ниям Windows, в котором можно временно хранить для передачи другим программам информацию различного фор­мата — текстовую, графическую и т.п. Несколько позже для межпрограммного взаимодействия использовалась тех­нология DDE — динамический обмен данными. Сегодня актуальность DDE ниже из-за появления новых техноло­гий, а использование БД, буфера обмена и разделяемых файлов как простейшего варианта межпрограммного вза­имодействия остается актуальным.

Как взаимодействует между собой Premiere Pro и After Effects?

Позднее появилась технология связывания и внедрения объектов OLE1 (Object Linking and Embedding). Благода­ря OLE1 появилась возможность создавать составные до­кументы (например, в документ Word вставлять таблицу Exel, при ее редактировании из Word используются воз­можности Exel). На смену ей пришла технология OLE2, позволяющая различным программам предоставлять друг другу свои функции (сервис). Программа, предоставляю­щая свои функции, называется сервером, а программа, их использующая — клиентом. В этой технологии одна про­грамма может не просто вызвать другую, но использовать ее отдельные функции.

Следующим шагом на пути совершенствования межпро­граммного обмена явилась технология компонентной мо­дели объектов (СОМ — Component Object Model). Эта тех­нология заключается в стандартизированном описании служб программы, к которым она дает доступ другим про­граммам. В технологии СОМ неважно, на каких языках написаны программы и где они выполняются: в одном по­токе, в разных потоках, на разных компьютерах. Расши­рение этих возможностей дает технология DCOM — рас­пределенная модификация СОМ. Отметим, что СОМ под­разумевает взаимосвязь на уровне специальных объектов, структура которых во многом схожа с рассмотренными ранее объектами внутри одной программы.

Необходимо сказать о еще одной стремительно развива­ющейся технологии — Интернет. В Интернете располага­ются и базы данных, и серверы, с которыми общаются приложения пользователя.

Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:

Источник: studopedia.ru

Интерфейсы, взаимодействие и изменение программ и данных

Основные ЯП, используемые для описания компонентов в современных средах, это С++, Паскаль, JAVA и др. [8.2, 8.12, 8.13].

Разноязыковые программы, записанные в этих языках, обращаются друг к другу через удаленный вызов, который предполагает взаимно однозначное соответствие между фактическими параметрами V = <v^<1>, v^, dots, v^>

вызывающей программы и формальными параметрами F = <f^<1>, f^, dots, f^> вызываемой программы. При неоднородности одного из параметров из множества формальных или фактических параметров разноязыковых программ необходимо провести отображение (mapping) неэквивалентного типа данных параметра в одном ЯП в соответствующий тип данных в другом ЯП.

Аналогично решается задача преобразования неэквивалентных типов данных в ЯП. Представим это преобразование такими этапами.

Этап 1. Построение операций преобразования типов данных T_<alpha>= ^> для множества языков программирования L = < l_<alpha>>_.

Читайте также:
Лучшая программа шагомер для Андроид

Этап 2.Построение отображения простых типов данных для каждой пары взаимодействующих компонентов в l_<alpha1> и l_<alpha2>, а также применение операций селектора Sи конструктора Сдля отображения сложных структур данных в этих языках. Один из способов формализованного преобразования типов данных — создание алгебраических систем для каждого типа данных T_<alpha>^

:

G_</p><p>^ = < X_^,Omega_^ >,

где t— тип данных, X_<alpha>^ — множество значений, которые могут принимать переменные этого типа данных, Omega_<alpha>^ — множество операций над этими типами данных.

В качестве простых типов данных современных ЯП могут быть t = b (bool), c (char), i (int), r (real). Сложные типы данных t = a (array), z (record), u (union), e (enum)— комбинация простых типов данных. Этим типам данных соответствуют следующие классы алгебраических систем:

begin sum_ = ^ , G_^ , G_^ , G_^> \ sum_ = ^ , G_^, G_^, G_^> end ( 8.1)

Каждый элемент класса простых и сложных типов данных определяется на множестве значений этих типов данных и операций над ними:

G_^ = < X_^,Omega_^ > , где t = b, c, i, r, a, z, u, e.

Операциям преобразования каждого tтипа данных соответствует изоморфное отображение двух алгебраических систем с совместимыми типами данных двух разных языков. В классе систем (8.1) преобразование типов данных t to qдля пары языков l_<t> и l_<q> обладает такими свойствами отображений:

  1. системы G_^ и G_^ для языков l_ и l_ — изоморфны, если их типы данных q, tопределены на одном том же множестве простых или сложных типов данных ;
  2. между значениями X_^ и X_^ типов данных tи qсуществует изоморфизм, если множества операций Omega_^ и Omega_^, применяемых для этих типов данных, различны. Если это множество пусто, то имеем изоморфизм двух систем G_^ <t^prime>= < X_^,Omega > и G_^ <q^prime>= ^,Omega>. Если тип данных tесть строка, а тип q— вещественное, то между множествами X_^ и X_^ не существует изоморфного соответствия;
  3. алгебраические системы |G_^| = |G_^| по мощности должны быть равны, так как они представлены на множестве типов данных языков l_ и l_.

Отображения 1, 2 сохраняют линейный порядок элементов, поскольку алгебраические системы являются линейно упорядоченными. Общая схема связи ЯП в распределенной среде.Характерная особенность ЯП, используемых в распределенных средах, — их неоднородность как в смысле представления типов данных в них, так и платформ компьютеров, где реализованы соответствующие системы программирования. Причина неоднородности — это различные способы передачи параметров между объектами в разных средах, наличие разных типов объектных моделей и форматов данных для задания параметров, разные виды операторов удаленного вызова и получения результатов выполнения запросов и др.

Системы программирования с ЯП имеют следующие особенности компилирования программ:

(L_<1></p><p><ul>  <li>разные двоичные представления результатов компиляторов для одного и того же ЯП, реализованных на разных компьютерах;</li>  <li>двунаправленность связей между ЯП и их зависимость от среды и платформы;</li>  <li>параметры вызовов объектов отображаются в операции методов;</li>  <li>связь с разными ЯП реализуется ссылками на указатели в компиляторах;</li>  <li>связь ЯП осуществляется через интерфейсы каждой пары из множества языков , dots, L_) промежуточной среды.

Связь между различными языками L_<1>, dots, L_ осуществляется через интерфейс пары языков L_<i>, L_, взаимодействующих между собой в среде, генерирующей соответствующие конструкции L_<i> в операции описания интерфейса и наоборот.

Взаимодействие ЯП в среде CORBA.Принцип взаимодействия объектов в среде CORBA состоит в том, что любой объект выполняет метод (функцию, сервис, операцию) при условии, если другой объект, выступающий в роли клиента для него, посылает ему запрос для выполнения этого метода. Объект выполняет метод через интерфейс.

Взаимодействие ЯП в системе CORBA состоит в отображении типов объектов в типы клиентских и серверных стабов путем

stub

  • отображения описания запроса клиента в ЯП в операции IDL;
  • преобразования операций IDL в конструкции ЯП и передачу их серверу средствами брокера ORB , реализующего в типы данных клиента.

Так как ЯП системы CORBA могут быть реализованы на разных платформах и в разных средах, то их двоичное представление зависит от конкретной аппаратной платформы [8.2, 8.7, 8.8]. Для всех ЯПсистемы CORBA (С++, JAVA, Smalltalk, Visual C++, COBOL, Ada-95) предусмотрен общий механизм связи и расположения параметров методов объектов в промежуточном слое. Связь между объектными моделями каждого ЯП системы СОМ и JAVA выполняет брокер ORB (рис. 8.4).


Рис. 8.4. Интегрированная среда системы CORBA

Если в общую объектную модель CORBA входит объектная модель СОМ, то в ней типы данных определяются статически, а конструирование сложных типов данных осуществляется только для массивов и записей. Методы объектов используются в двоичном коде и допускается двоичная совместимость машинного кода объекта, созданного в одной среде разработки, коду другой среды, а также совместимость разных ЯП за счет свойства отделения интерфейсов объектов от реализаций.

В случае вхождения в состав модели CORBA объектной модели JAVA/RMI, вызов удаленного метода объекта осуществляется ссылками на объекты, задаваемые указателями на адреса памяти.

Интерфейс как объектный тип реализуется классами и предоставляет удаленный доступ к нему сервера. Компилятор JAVA создает байткод, который интерпретируется виртуальной машиной, обеспечивающей переносимость байткодов и однородность представления данных на всех платформах среды СORBA.

8.2.2. Взаимодействие разноязыковых программ

Проблеме взаимодействия разноязыковых программ на множестве современных языков (C/C++, Visual C++, Visual Basic, Matlab,Smalltalk, Lava, LabView, Perl) посвящена работа [8.14]. В ней представлены различные варианты и конкретные примеры связей каждой пары ЯП из этого множества с помощью практически реализованных и приведенных функций преобразования, методов обращения к ним из программ на одном языке к программе на другом языке. В таблице 8.1. приведены варианты взаимосвязи разных ЯП.

В ней отражены особенности их взаимодействия через разные виды интерфейсов, приведены более 25 видов пар современных ЯП и соответственно прямого и обратного взаимодействия разноязыковых программ.

Для этих пар ЯП изложены принципы запуска разных программ и все технические вопросы передачи данных и преобразования параметров.

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

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

Читайте также:
Программа узнать как записан в телефоне Андроид

Интерфейс между Visual Basic и другими ЯП осуществляется с помощью оператора обращения, параметрами которого могут быть строки, значения, массивы и другие типы данных. Их обработка проводится функциями Windows API, API DLL и операциями преобразования типов данных. В качестве примера приведена схема обработки Интернет-приложений, задаваемых HTML-страницами Basic Visual, размещаемых в Web-браузере и базах данных.

Matlab содержит средства для решения задач линейной и нелинейной алгебры, действий над матрицами и др. и обеспечивает математические вычисления с помощью MatlabCompiler, Matlab C++, MatlabLibriary, Matlab Graphic Library. Приведена схема независимого приложения в среде Matlab, которая включает интерфейс между VC и Matlab, создаваемый MatlabCompiler путем преобразования программы в формате Matlab (М-файлы или М-функции) в формат С.

  • Платформенно-ориентированные функции.
  • Программный интерфейс.
  • Динамическая библиотека функций.
  • Интерфейс между Visual Basic.
  • Функции обработки событий. Интерфейс в API.
  • Вызов приложения из среды.
  • Встраивание функций в VC ++.
  • Использование интерфейса JNI .
  • Функции из Matlab.
  • Функции в Java.
  • Модель приложения в Visual Works.
  • Функции графической библиотеки.
  • Библиотеки С, С++ и процедуры Visual Works.
  • Интерфейс VI и API.
  • Связь Visual C, DLL, Obj Lib С, C++.
  • Интерфейсные функции драйвера.
  • Платформенно-ориентированные функции.
  • Библиотеки функций в С++, С.
  • Функции в JNI .
  • Платформенно-ориентированные функции.
  • Программный интерфейс.
  • Интерфейсные функции в С++.

Сформированный файл вызывается из программы в С++ и преобразовывается к виду архитектуры компьютера, куда отсылается результат.

Базовые средства Smalltalk обеспечивают создание приложений в среде VisualWorks и включают модель приложений, методы объектов, сообщения для передачи значений внешним объектам и пользовательский интерфейс (рис. 8.5). Модель приложения содержит функции DLL из класса внешнего интерфейса, взаимодействующие с функциями библиотеки С++.


Рис. 8.5. Схема взаимодействия модели приложения с библиотекой

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

Система взаимодействует с ANS C, Visual Basic, Visual C++ Lab Windows/CV. Эти средства расширяют возможности создания систем реального времени, которые позволяют производить с помощью функций связи измерение аппаратуры типа: регуляторы, термометры, переключатели и др. Результаты измерений могут передаваться в сеть.

Среда Java содержит инструменты взаимодействия со всеми языками, приведенными во второй колонке таблицы. Общая схема связи языков JAVA, C и C++ программ приведена на рис. 8.6. Язык Perl появился в 80-х годах прошлого столетия как язык задания сценариев для взаимодействия с Интернет, управления задачами и создания CGI-сценариев на сервере в системе Unix.

Данный язык имеет интрфейс с С, С++, Visual Basic и Java. Интерпретатор с языка Perl написан в языке С и каждый интерфейс с другим языком рассматривается как расширение, представляемое процедурами динамической библиотеки.


Рис. 8.6. Схема взаимодействия приложенияи программ Java, C, C++

Оператор вызова программы в С или С++ обеспечивает преобразование ее в специальный код, который размещается в библиотеке интерпретатора Perl. Сам интерпретатор может быть включен в Win32 или в программу на C/C++.

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

Источник: intuit.ru

Взаимодействие программных систем

Взаимодействие программных систем

2016-11-23 в 1:58, admin , рубрики: взаимодействие программ, История ИТ, Софт, метки: взаимодействие программ

image

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

Или текстовому редактору может передавать введенный пользователем текст операционная система, используя драйвер клавиатуры. Программы могут предоставлять набор функций для взаимодействия – API. Или даже иметь целые механизмы взаимодействия, называемые протоколами, когда используется множество последовательных вызовов функций, например, для сложного согласования каких-либо параметров. Большим шагом вперед является создание универсальных структур – XML и Json. Программы могут взаимодействовать с другими программами и «невежливым» способом — без протоколов и открытых API: парся данные страницы в случае грабберов, внедряясь в исполняемые файлы как вирусы или, наоборот, убивая их в случае антивирусов.

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

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

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

Читайте также:
Программа р кипер для общепита инструкция по работе

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

Отличие от живой природы в том, что системы на разных уровнях достаточно независимы и могут продолжать работать при смене нижележащего слоя на другой: так, веб-сайт будет продолжать открываться если Вы смените витую пару Ethernet на Wifi.

В общем случае, взаимодействие программных систем может быть нескольких видов:

  • Построена на «инфрастурктуре» (например, на операционной системе или на какой-либо платформе – например, IBM Notes, или внутри социальной сети).
  • Использует другие программные системы (например, веб-сайт может использовать реляционную СУБД, такую как MySQL, MS SQL Server или Oracle).
  • Состоит из (могут использоваться различные библиотеки и отдельные продукты, например, сайты используют tinyMCE или компоненты для отображения календаря).
  • Интегрируется с (например, наша СРМ-система интегрирована с 1С, системами IP-телефонии, системами эквайринга. Сайты могут быть интегрированы с системами оплаты, с соц. сетями и т.д.).

Как и любая другая система, программа состоит из компонент. В программировании любят переиспользовать компоненты, если уже есть компоненты, реализующую похожую функциональность. Это быстрее, чем писать свой компонент, отлаживать и впоследствии сопровождать его. Отправка письма – один компонент, запись в лог – другой компонент, построение графиков – третий, текстовый редактор на сайте – tineyMCE, поиск – lucene. Поэтому многие программы используют одни и те же компоненты.

Часто программы позволяют расширять свою функциональность: текстовые редакторы и электронные таблицы позволяют создавать макросы, браузеры – добавлять расширения, все CMS – дополнять их сторонними компонентами и плагинами. Некоторые программы идут дальше по этому пути и по сути являются платформами для запуска других приложений: например, браузеры или ibm lotus notes.

Сама операционная система – это программа, единственное назначение которой — существование других программ. Она упрощает их существование, изолирует от железа, предоставляет возможность использования графического интерфейса и даёт доступ к сети, её цель – обеспечить работу другим программам.

При этом и операционные системы, и платформы, и даже CMS, которые ставят из-за единственного компонента, во многих случаях гораздо сложнее той программы, ради которой их используют, они могут включать множество самых различных обеспечивающих работу функций: разделять ресурсы, предоставлять механизм авторизации, упрощать обращение к базе данных. Это происходит и за счёт своей универсальности (например, операционная система Windows содержит несколько подсистем Win32, OS/2) для обеспечения работы для всех возможных программ.

Универсальность всегда приводит к дополнительной сложности. Это касается и тех компонент, которые программисты используют при написании программы, они гораздо сложнее и обладают гораздо большим набором функций, многие из которых не требуются и не используются. Программы часто вынуждены обеспечивать обратную совместимость – так, в Windows можно было запускать DOS-приложения. При взаимодействии систем, возможно возникновение нескольких интересных эффектов.

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

То есть, если Вы к компьютеру с программой добавите железный скелет, то получите робота, который больше и чем железка, и чем компьютер. Взаимодействие большого количества простых вещей может приводить к каким-то сложным взаимодействиям. Сумма простых вещей даёт сложную – набор транзисторов создаёт компьютер, набор атомов создаёт предмет, клетки в организме создают органы. Сумма людей – цивилизация – это не просто семь млрд. человек, это что-то большее.

Вторую мысль озвучил Питер Норвиг в докладе Everything is Miscellaneous. Она показалась мне удивительной: если Вы посмотрите на отдельно взятого шимпанзе и отдельно взятого человека, то увидите, что между ними много общего.

Ну, то есть понятно, что шимпанзе немного сильнее, человек немного умнее, но в целом, их внешний вид немного похож, их физические и даже пусть с большой натяжкой интеллектуальные возможности сопоставимы. Но теперь если Вы взглянете на культуру шимпанзе и культуру человечества, то увидите колоссальную разницу. Цивилизацию людей даже нельзя сопоставить с цивилизацией шимпанзе. Почему-то это напомнило мне о том, что 0.99 и 1.01 вроде бы не сильно отличаются, но при возведении в какую-нибудь большую степень одно число будет стремиться к нулю, а другое – к бесконечности.

Для тех, кто просто пролистал до конца: взаимодействие программ может быть различных типов и его результат может приводить к принципиально новому уровню программной системы. Целое не всегда отражает то, что происходит в составных частях. Спасибо за внимание!

Источник: www.pvsm.ru

Рейтинг
( Пока оценок нет )
Загрузка ...
EFT-Soft.ru