Файлы (буферы) общего доступа.

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

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

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

Для того чтобы разработчики не придумывали каждый раз промежуточный формат, одно время рекомендовалось использовать для этого HTML файлы. Это оказалось не очень удобным, так как подавляющее большинство передаваемых данных имеют особенную иерархическую структуру. В то же время HTML не предоставляет никаких возможностей для описания семантики, набор тэгов ограничен и не приспособлен для отображения связей между элементами (за исключением <table>, <tr> и <td>). В связи с чем идея использовать html-формат не получила широкого распространения.

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

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

Применение семафоров необходимо тогда, когда требуется определить степень занятости некоторого ресурса, а не просто получить ответ на вопрос «занят ресурс или свободен». Семафор – это целая неотрицательная системная переменная. В частном случае, когда семафор S может принимать только значения 0 и 1, он превращается в блокирующую переменную (или мьютекс). При помощи двух семафоров можно организовать классическую задачу «писатель-читатель» с ограниченным общим буфером.

Итак, передача данных через промежуточный буфер (файл), с одной стороны, часто наиболее простой способ интеграции. Но, с другой стороны, при этом способе неизбежны потери, часто значительные, при преобразовании форматов данных. Причем преобразований может быть либо одно: из формата одной информационной системы (ИС) в формат другой, или даже два: преобразование в промежуточный формат и затем - из промежуточного формата в конечный.