В чем главное отличие элементов асинхронной передачи данных и синхронной
Синхронная и асинхронная передача данных: терминология и отличия
Сегодня будем с вами разбираться, что такое синхронная и асинхронная передача данных в программировании и как они реализуются в разных языках.
Асинхронная передача данных — это современная популярная тенденция в разработке. Многие нынешние инструменты по программированию имеют собственные инструменты для реализации асинхронных задач. Никто не любит просто ждать, поэтому всегда нужно тщательно определять, когда налаживать синхронное, а когда — асинхронное взаимодействие программы.
Синхронное представление в быту
У нас есть некая занятая девушка, которая запланировала на вечер познакомить родителей со своим молодым человеком. Чтобы все прошло идеально, ей нужно:
доделать дела на работе;
подготовить вечерний наряд;
сделать прическу, маникюр и накрасит ь ся;
попросить маму накрыть на стол.
Асинхронная передача данных в программировании
Асинхронная передача данных — это когда долго выполняемую функцию убирают из основного потока выполнения программы. Она не завершается, а продолжает работать в каком-нибудь другом месте. А сама программа не «зависает» и не «тормозит», а продолжает свое выполнение.
То есть при работе ресурса с фильмами выполнение главного потока программы разделится на 2 части: одна будет поддерживать взаимодействие со страницей, а вторая будет отправлять запрос и ожидать ответа от сервера. Таких асинхронных задач в программе может быть несколько. Для большого их количества придумали даже специальную очередь, которая работает по принципу : кто первый пришел, тот первый ушел.
Терминология асинхронности
Конкурентность. Данны й термин оз начает, что происходит одновременное выполнение нескольких задач. Эти задачи могут быть вообще не связаны друг с другом, поэтому не будет иметь значени я, какая из них завершит выполнение раньше, а какая — позже. Каждая такая задача формирует отдельный поток выполнения.
Параллелизм. Данный термин подразумевает выполнение одной задачи несколькими потоками. То есть фактически происходит разделение одной задачи на несколько небольших частей. Все это делается для того, чтобы ускорить общее выполнение большой з а дачи.
Многопоточность. Данный термин обозначает наличие нескольких потоков выполнения программы.
Заключение
Синхронная и асинхронная передача данных может осуществляться во многих сферах. Мы показали на примере программирования, как работают синхронные и асинхронные события. У обоих подходов есть свои достоинства и недостатки, поэтому использовать их в своих программах нужно обдуманно.
Нельзя утверждать, что асинхронная передача данных — это единственно правильный подход. Это совсем не так, потому что синхронный подход тоже до сих пор очень популярен и часто используется.
Мы будем очень благодарны
если под понравившемся материалом Вы нажмёте одну из кнопок социальных сетей и поделитесь с друзьями.
В чем разница между синхронной и асинхронной передачей данных
При синхронной передаче данных передатчик и приемник синхронизируются с одним и тем же тактовым импульсом. При асинхронной передаче данных передатчик и приемник не используют общий сигнал синхронизаци
Содержание:
При синхронной передаче данных передатчик и приемник синхронизируются с одним и тем же тактовым импульсом. При асинхронной передаче данных передатчик и приемник не используют общий сигнал синхронизации. Это главное отличие между синхронной и асинхронной передачей данных.
Ключевые области покрыты
1. Что такое синхронная передача данных
— определение, функциональность
2. Что такое асинхронная передача данных
— определение, функциональность
3. В чем разница между синхронной и асинхронной передачей данных
— Сравнение основных различий
Основные условия
Асинхронная передача данных, синхронная передача данных
Что такое синхронная передача данных
При синхронной передаче данных передатчик и приемник синхронизируются и используют общий синхронизирующий сигнал. Он использует сигналы синхронизации для синхронизации. Здесь данные текут как непрерывный поток один за другим. Передатчик отправляет данные, а получатель подсчитывает количество бит в полученных данных. Кроме того, между данными нет пробелов. В этом методе сигналы синхронизации должны быть точными для эффективной передачи данных. Более того, этот метод быстрее, чем асинхронная передача данных.
Рисунок 1: Синхронная и асинхронная передача данных
В цифровой системе, если другие регистры используют одни и те же часы с регистрами ЦП, передача данных между ЦП и устройствами ввода и вывода является синхронной передачей данных. Оба эти устройства получают тактовые импульсы от общего генератора импульсов.
Что такое асинхронная передача данных
При асинхронной передаче данных передатчик и приемник работают на разных тактовых частотах. Он использует стартовые и стоповые биты для данных. Согласно приведенному выше примеру (фиг.1), каждый байт данных внедряется в начальный и конечный биты. «0» обозначает начальный бит, а «1» обозначает конечный бит. «1» и «0», выделенные красным цветом, являются начальным и конечным битами. Кроме того, синхронизация не является важным фактором в асинхронной передаче данных.
В цифровой системе, если другие регистры и регистры ЦП используют свои собственные частные часы, они имеют разные сигналы синхронизации. Следовательно, процессор и устройства ввода и вывода должны координировать передачу данных. Это называется асинхронной передачей данных.
Разница между синхронной и асинхронной передачей данных
Определение
При синхронной передаче данных отправитель и получатель работают на одинаковых тактовых частотах, тогда как при асинхронной передаче данных отправитель и получатель работают на разных тактовых частотах. Следовательно, в этом заключается основное различие между синхронной и асинхронной передачей данных.
Скорость передачи данных
Старт и Стоп Биты
При синхронной передаче не возникает никаких дополнительных затрат на дополнительные стартовые и стоповые биты. С другой стороны, асинхронная передача данных использует стартовые и стоповые биты.
Разрыв между данными
При синхронной передаче данных нет промежутков между данными и потоками данных в виде непрерывного потока. Однако при асинхронной передаче данных между данными могут быть промежутки.
Интервалы времени
Синхронная передача использует постоянные интервалы времени. Напротив, асинхронная передача использует случайные или нерегулярные интервалы времени. Это еще одно различие между синхронной и асинхронной передачей данных.
Примеры
Например, чаты и видеоконференции используют синхронную передачу данных, в то время как электронные письма используют асинхронную передачу данных.
Заключение
Основное различие между синхронной и асинхронной передачей данных заключается в том, что при синхронной передаче данных передатчик и приемник синхронизируются с одним и тем же тактовым импульсом, тогда как при асинхронной передаче данных передатчик и приемник не используют общий синхронизирующий сигнал.
Ссылка:
1. Синхронная передача данных | COA, Образование 4u, 11 декабря 2017 года,
Русские Блоги
Разница между HTTP синхронными и асинхронными запросами
Например: обычный режим B / S (синхронный), технология AJAX (асинхронный)
Синхронизация: отправьте запрос-> подождите, пока сервер обработает-> верните после завершения обработки. Браузер клиента ничего не может сделать в течение этого периода.
Синхронизация означает, что вы просите меня кушать, а я иду к вам, когда слышу, если вы этого не слышите, вы продолжаете звонить, пока я не скажу вам услышать, а затем идете кушать вместе.
Асинхронность означает, что вы звоните мне, а потом идете на ужин самостоятельно. Я могу уйти сразу же после получения новостей или пойти на ужин после работы.
Итак, если вы хотите, чтобы я пригласил вас на ужин, используйте синхронный метод, если вы хотите пригласить меня на ужин, используйте асинхронный метод, чтобы вы могли сэкономить деньги.
Метод запроса, разделенный на GET и POST:
Наиболее распространенным HTTP-запросом является GET для просмотра веб-страниц. Запрос параметра GET следует непосредственно за URL-адресом и начинается со знака вопроса. (Получено в window.location.search в JS). Параметры могут быть закодированы с помощью encodeURIComponent, используя:
var EnParam = encodeURIComponent(param);
URL-адрес поддерживает только длину около 2 КБ, то есть количество символов 2048. Когда запросы AJAX выполняются с использованием GET, отображаемая страница будет неправильной. Общий метод добавляет значение случайного параметра;
Используется для отправки данных на сервер.
Значения в форме должны быть извлечены и преобразованы в строки и связаны с амперсандами (аналогично параметрам GET); объем отправляемых данных составляет 2 ГБ; используйте ajax.setRequestHeader (‘Content-Type’, ‘application / x-www- form-urlencoded ‘), который обрабатывает отправленные строки; ajax.send (strings), эти строки представляют содержимое, которое будет отправлено в форме, например a = 1 & b = 2, аналогично этой строке.
Синхронный и асинхронный:
В методе ajax.open третий параметр устанавливается как синхронный или асинхронный. Библиотеки JS, такие как prototype, обычно по умолчанию асинхронны, то есть имеют значение true. Давайте сначала поговорим о синхронизации, js будет ждать возврата запроса и получения статуса. Не требуется обработчик события onreadystatechange. Асинхронный требует обработки события onreadystatechange, а значение 4 необходимо для правильной обработки следующего.
[color=darkblue]
Режим синхронного выполнения:
Так называемый режим синхронного выполнения означает, что в режиме синхронного выполнения оператор всегда будет контролировать поток программы до конца программы. Например, после операции запроса прикладная программа на клиенте будет ожидать, пока сервер вернет результат запроса клиенту после выдачи инструкции операции запроса на сервер, прежде чем перейти к следующей операции.
Как все мы знаем, приложению требуется очень много времени для удаления всех записей из большой таблицы.Если приложение использует однопоточный метод синхронного выполнения, определенная работа по удалению может задержать завершение другой важной работы. Если приложение ожидает удаленную задачу, сбой удаленного сервера или сетевой сбой или некоторые непредсказуемые условия могут привести к тому, что приложение будет ждать неопределенно долго, что является самым большим недостатком синхронного выполнения.
Но режим синхронного выполнения может упростить сложность программирования. Программисты могут использовать режим синхронного выполнения ODBC или использовать элементы управления данными и переменные объекта базы данных для написания приложений без особого понимания использования более сложных API-интерфейсов ODBC 2.0, которые могут повысить эффективность разработки, но программа работает быстрее, чем Не так быстро, как в режиме асинхронного выполнения.
Режим асинхронного выполнения:
Так называемый режим асинхронного выполнения означает, что в режиме асинхронного выполнения порядок выполнения каждого оператора не обязательно совпадает с порядком выполнения операторов. Например, для операции запроса приложение на клиенте отправляет инструкцию операции запроса на сервер и немедленно выполняет следующую инструкцию инструкции оператора запроса, не ожидая, пока сервер вернет результат запроса клиенту. Асинхронное выполнение позволяет освободить приложения от ограничений одной задачи, что повышает гибкость и эффективность выполнения приложений. Однако есть некоторые проблемы с асинхронным режимом выполнения, например, он увеличивает сложность программирования, особенно при написании программ, которые требуют высокой функциональной совместимости.
В сильно загруженной клиент-серверной системе подходит режим асинхронного выполнения. В этой среде временные задержки являются частыми и длительными, и издержки асинхронного выполнения по сравнению с ними незначительны. Однако, если среда, в которой выполняется приложение, является более сложной, необходимо создать полный механизм для периодической проверки состояния выполнения функции для определения следующего плана выполнения. Есть много способов проверить период, например, установить таймер в приложении и обработать информацию WM_TIMER.
Хотя асинхронный режим выполнения очень сложен в программировании, он может обеспечить параллельное выполнение нескольких задач, что значительно повышает эффективность выполнения.
Выбор и настройка режима выполнения Выбор синхронного или асинхронного режима в разработке приложений является более сложным уровнем. Когда запрос или модификация к базе данных относительно проста, синхронный режим выполнения является хорошим выбором: он может вернуть данные результата за несколько секунд или меньше. Кроме того, когда приложение не может продолжить выполнение до тех пор, пока не будет получен набор результатов, совсем не обязательно использовать режим асинхронного выполнения. В случае сложных запросов, особенно операций UPDATE или DELETE сложных многострочных баз данных, выполнение может занять много времени, и требуется асинхронный режим выполнения, чтобы позволить пользователям одновременно управлять другими частями программы.
Для программистов общего профиля, если он не понимает режим синхронного выполнения и режим асинхронного выполнения, он часто выдает на сервер оператор операции (запрашивает или читает запись и т. Д.) И немедленно ссылается на результат выполнения, возвращаемый сервером. Или сделайте следующий шаг с этим результатом, который очень опасен. Поскольку в режиме асинхронного выполнения последующие операторы на клиенте выполняются после выполнения оператора операции, но по разным причинам сервер может быть не в состоянии завершить оператор операции и вернуть результат клиенту до выполнения следующего оператора. машина. Поэтому, ссылаясь на результат выполнения предыдущего оператора операции, последующие операторы часто ссылаются на неправильное значение, поскольку результат выполнения не существует, что приводит к системным ошибкам или взаимоблокировкам. Поэтому в реальных приложениях следует тщательно выбирать выполнение в соответствии с конкретной ситуацией. режим. [/ color]
Синхронный и асинхронный режимы передачи цифрового сигнала
В предыдущих постах я разобрал, что такое синхронизация при передаче цифрового сигнала и как на уровне логических элементов может происходить прием цифрового сигнала в получателе сигнала.
Какие бывают способы синхронизации? Первое, что приходит в голову — это передача тактового сигнала по отдельному дополнительному каналу передачи данных. Рассмотрим рисунок, который уже использовался в предыдущем посте:
Рисунок 1
На рисунке 1 верхний из двух сигналов может быть передан по одному каналу, а нижний (тактовый сигнал) — по другому, параллельному, каналу. Задний фронт (помечен зеленым цветом) импульса тактового сигнала командует источнику сигнала отправить очередной бит цифрового сигнала. Передний фронт (помечен красным цветом) импульса тактового сигнала командует получателю сигнала взять образец сигнала, приходящего от источника. Именно поэтому задний фронт каждого импульса тактового сигнала на рисунке 1 совпадает с началом каждого бита передаваемого от источника сигнала, а передний фронт каждого импульса тактового сигнала совпадает с серединой каждого бита передаваемого от источника сигнала.
Тут может быть два варианта: 1) тактовый импульс идет из источника сигнала. В этом случае получатель сигнала по полученному тактовому импульсу подстраивается под скорость работы источника сигнала. 2) Тактовый импульс идет из получателя сигнала к источнику сигнала. Источник сигнала начинает посылать цифровой сигнал с цифровыми данными при получении тактового сигнала от получателя сигнала. В этом случае источник сигнала подстраивается под скорость работы получателя сигнала.
Естественно, передача тактового сигнала по отдельному каналу по деньгам получается значительно дороже, ведь требуется дополнительный провод. Поэтому зачастую тактовый сигнал передают тем же сигналом, что и передаваемые цифровые данные. В этом случае дополнительный провод не требуется, но в получателе сигнала понадобится оборудование для обработки полученного цифрового сигнала, чтобы выделить из него тактовый сигнал и сигнал, несущий цифровые данные.
Существует еще так называемый «асинхронный режим» передачи цифрового сигнала или просто «асинхронная» передача цифрового сигнала. На самом деле, несмотря на то, что такая передача цифрового сигнала называется «асинхронной» (то есть «не синхронной»), при получении цифрового сигнала в получателе в этом случае всё равно требуется (и выполняется) синхронизация получателя и источника сигнала. Просто в случае асинхронной передачи цифровой сигнал с цифровыми данными идет кусками (пакетами, байтами и тому подобное), а между этими кусками есть промежутки, на которых канал остается пустым (без полезной нагрузки цифровыми данными). В итоге синхронизация нужна (и выполняется) только в момент приема получателем очередного куска цифрового сигнала с цифровыми данными, а в пустом промежутке между кусками сигнала с данными синхронизация не нужна (и не выполняется). То есть под словом «асинхронная» понимается не полное отсутствие синхронизации, а прерывистое выполнение синхронизации — она то выполняется, то не выполняется.
В википедии асинхронный режим передачи данных проиллюстрирован такой картинкой:
Из-за излишней компактности иллюстрации некоторые соседние надписи на этой иллюстрации сливаются и зритель с первого раза может воспринять некоторые соседние надписи на этой картинке за одну надпись, что может сильно затруднить понимание. На самом деле, на этой картинке только надпись «data bits» состоит из двух слов. Все остальные надписи — однословные.
Чтобы соседние надписи не сливались, я отделил их друг от друга цветом, кое-где добавил к линиям стрелки для понятности, и некоторые линии сделал пунктирными:
Понятия «mark» и «space», использующиеся в англоязычной литературе, посвященной передаче цифрового сигнала, по-русски означают «логическая единица» и «логический нуль» соответственно или для булевой алгебры — «true» («истина») и «false» («ложь»). В физическом смысле логическая единица может представляться, к примеру, высоким уровнем сигнала, а логический нуль — низким уровнем сигнала, или наоборот. В англоязычной википедии по этим понятиям есть статья «Mark and space». На рассматриваемом рисунке логическая единица («mark») показана высоким уровнем цифрового сигнала, а логический нуль («space») показан низким уровнем цифрового сигнала.
Как и описывалось выше при определении понятия «асинхронной» передачи цифрового сигнала, на рисунке есть промежутки, в течение которых канал заполнен данными, и промежутки, в течение которых канал не заполнен данными (последнее состояние на рисунке обозначено английским словом «idle», которое по-русски в данном случае значит «пустой» или «незанятый»). На рисунке таких незанятых промежутка два: перед стартовым битом первого байта и после стопового бита второго байта. Между двумя байтами, изображенными на рисунке, незанятого данными промежутка «idle» нет, но он может быть. Просто в данном случае байты переданы впритык друг к другу, но могли быть переданы и разделенными промежутком «idle».
На рисунке промежуток «idle» показан высоким уровнем сигнала, но в разных протоколах он может быть представлен как высоким уровнем сигнала, так и низким уровнем сигнала. Тут есть условие: стартовый бит всегда должен быть представлен уровнем сигнала, противоположным уровню промежутка «idle», а стоповый бит должен быть представлен уровнем сигнала, совпадающим с уровнем промежутка «idle». Очевидно, что стартовый и стоповый биты должны быть представлены противоположными уровнями сигнала.
Как работает асинхронный режим передачи цифрового сигнала? Каждый кусок (пакет, байт и тому подобное) данных может быть передан отдельно, отделяясь (или не отделяясь) друг от друга промежутками «idle» (канал не занят данными). При приеме очередного байта получателю сигнала нужно достичь синхронизма с источником сигнала, чтобы получить данные без ошибок. Для этого получателю сигнала необходимо знать момент начала входящего байта. Этот момент на обсуждаемом рисунке обозначен передним фронтом стартового бита («start»): в данном случае это переход из высокого уровня сигнала к низкому уровню сигнала. После передачи битов данных («data bits») обязательно нужно вернуть цифровой сигнал на уровень промежутка «idle», то есть в случае, показанном на обсуждаемом рисунке — на высокий уровень сигнала. Это нужно для того, чтобы было возможно отметить начало следующего байта передним фронтом стартового бита следующего байта. Возврат на уровень сигнала, соответствующий промежутку «idle», выполняется стоповым битом («stop»).
Для достижения синхронизма кроме начала участка цифрового сигнала, содержащего цифровые данные, получателю сигнала для правильного приема нужно знать длину одного бита цифрового сигнала. Как я понимаю, скорость передачи данных между стартовым и стоповым битом, определяющая длину одного бита сигнала, становится известна получателю сигнала перед началом передачи данных (настроена заранее), поэтому получателю сигнала в данном случае и требуется только информация о начале каждого байта.
Как видно из рисунка, к каждому байту данных при асинхронной передаче необходимо добавлять два дополнительных бита: стартовый и стоповый. Такую передачу цифрового сигнала часто называют «старт-стопной» передачей данных. Очевидно, что эти дополнительные биты уменьшают скорость передачи данных по сравнению с синхронным режимом передачи данных, при котором все байты передаются впритык друг к другу, без дополнительного обозначения начала и конца байта с помощью стартового и стопового битов.
Скорость передачи данных при асинхронном режиме передачи меньше еще и из-за того, что между байтами могут вставляться промежутки «idle» (канал не занят данными), а при синхронном режиме передачи между передаваемыми данными нет никаких лишних промежутков.
Оба эти режима передачи данных сегодня используются. В англоязычной википедии есть хорошая небольшая статья, сравнивающая эти режимы:
Русские Блоги
Об интеграции приложений: сравнение синхронного и асинхронного режимов связи
Что такое интеграция приложений?
Интеграция приложений (или интеграция корпоративных приложений) означает возможность совместного использования процессов и данных из разных приложений в корпоративной ИТ-среде. Для предприятий любого размера интеграция приложений стала ключевой возможностью для соединения различных приложений и достижения взаимного сотрудничества между ними, тем самым помогая предприятиям повысить общую эффективность бизнеса, повысить масштабируемость и сократить расходы на ИТ.
Интеграция приложений на разных уровнях
Существует четыре различных уровня методов интеграции приложений. На уровне представления интеграция может быть достигнута путем представления нескольких различных приложений в виде единого представления приложения с общим пользовательским интерфейсом (UI). Этот старый метод интеграции также называется «очисткой экрана», в котором используется технология промежуточного программного обеспечения для сбора информации, вводимой пользователями на веб-страницах или других пользовательских интерфейсах. В прошлом люди использовали методы интеграции на уровне презентации для интеграции приложений, которые невозможно было соединить. Но сегодня технологии интеграции приложений развиваются и становятся более сложными, что делает этот подход менее распространенным.
Посредством интеграции бизнес-процессов компании сопоставляют логические процессы, необходимые для ведения бизнеса, со своими ИТ-активами, которые обычно расположены в различных частях внутренней ИТ-среды компании, а с развитием облачных вычислений все больше и больше размещается в облаке. Идентифицируя различные операции в бизнес-процессе и позиционируя свои ИТ-активы как метасистему (систему о системе), предприятия могут использовать методы интеграции приложений, чтобы определить, как каждое приложение должно взаимодействовать для достижения ключевого Автоматизация бизнес-процессов ускоряет доставку товаров и услуг для клиентов, снижает вероятность человеческой ошибки и снижает эксплуатационные расходы.
Помимо интеграции бизнес-процессов, для интеграции приложений также необходимы возможности интеграции данных. Если приложение не может обмениваться данными из других приложений и точно понимать их, могут возникнуть несоответствия, которые снизят эффективность бизнес-процессов. Возможности интеграции данных могут быть достигнуты одним из следующих двух методов: 1) написать код, чтобы каждое приложение понимало данные из других приложений на предприятии, 2) использовать приложения отправителя и получателя, которые могут анализировать Единый формат обмена данными. Последний метод лучше, чем первый, поскольку он более масштабируемый по мере роста размера и сложности корпоративных систем. Согласно двум вышеупомянутым методам, доступ к данным, анализ и преобразование являются важными возможностями, которые могут успешно обеспечить интеграцию данных. В традиционной технологической системе SOA формат данных XML обычно используется как унифицированный формат обмена и обработки данных, описанный выше. На платформе управления API нового поколения и интеграции приложений компании Lingchang Technology мы применяем более легкий и эффективный формат данных JSON, который легко анализировать, обрабатывать и преобразовывать, и можем использовать различные эффективные инструменты обработки данных в богатой экосистеме JavaScript для непосредственного Манипуляция данными помогает эффективно завершить интеграцию данных между различными приложениями.
Ниже уровня интеграции бизнес-процессов и данных находится интеграция уровня связи. Это относится к тому, как различные приложения внутри предприятия взаимодействуют друг с другом с помощью таких методов, как передача файлов, методы запроса / возврата или обмен сообщениями. Во многих случаях приложения не предназначены для взаимодействия друг с другом, поэтому на уровне связи необходимо применять технологии, которые могут помочь реализовать обмен данными между приложениями. Эти технологии включают интерфейсы прикладного программирования (API), определяющие способ вызова приложений, а также носители, которые действуют как соединители между приложениями. На уровне связи также важно учитывать архитектуру взаимодействия между приложениями. Для реализации архитектуры взаимодействия приложений на уровне связи можно использовать такие технологии, как двухточечная модель, модель концентратора и звезды или служебная шина предприятия (ESB).
Получайте новости: синхронное и асинхронное общение
Без эффективного взаимодействия бизнес-процессы и данные не могут быть должным образом интегрированы. В соответствии с конкретными потребностями предприятия связь между приложениями может быть синхронной, асинхронной или их комбинацией.
При синхронной связи приложение-отправитель отправляет запрос вызова API в приложение-получатель и должно дождаться ответа, чтобы продолжить обработку. Этот режим обычно используется в сценариях, где запросы данных необходимо координировать последовательным образом.
При асинхронной связи приложение-отправитель отправляет сообщение приложению-получателю и продолжает локальную обработку до получения ответа. Другими словами, приложение-отправитель не зависит от приложения-получателя для завершения своей обработки. Если несколько приложений интегрированы таким образом, приложение-отправитель может завершить вызов API, даже если другие запросы вызова API еще не были обработаны.
Кроме того, асинхронная связь позволяет ослабить связь между приложениями, тем самым устраняя необходимость в управлении подключением. Это делает решения по интеграции приложений более гибкими, гибкими и легко расширяемыми: это основные атрибуты, которыми должны обладать корпоративные информационные системы сегодня.