Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Korporativnye_informatsionnye_sistemy.docx
Скачиваний:
12
Добавлен:
01.03.2025
Размер:
260 Кб
Скачать
☆

???Интерфейсы.

Интересное явление – обеспечение интерфейсов классов. Интерфейс – это список прототипов, каждый из которых содержит только описание свойств и методов. В теории класс может наследовать один или несколько интерфейсов. В конечном классе должен быть указан код для всех наследуемых Public методов.

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

  1. ???Интеграция при помощи промежуточного буфера

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

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

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

  1. Обмен сообщениями. Протокол dde.

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

Но лучше сначала запустить серверное приложение при помощи команды SHELL, а затем установить канал связи с ним. Если, конечно, вы знаете, что пользователь уже запустил серверное приложение, а вы хотите управлять уже запущенным приложением, то вам требуется установить связь с уже запущенным приложением.

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

Основные команды протокола: DDEInitiate – открыть канал, DDEExecute – выполнить команду, DDETerminate – закрыть канал, DDETerminateAll – закрыть все каналы, DDEPoke – изменить данные на сервере, DDERequest – запросить информацию о сервере.

Рассмотрим пример, в котором сначала запускается при помощи команды Shell приложение MS Excel. Затем командой DDEInitiate открывается канал связи с темой «System». В следующем операторе выполняется DDE-команда OPEN. Параметр команды – имя открываемого файла, чтобы поместить имя в кавычки используется добавление символа «кавычки» по его ASCII-коду. Затем канал закрывается.

Dim lngChannel As Long

Dim strTopicList As String

RetVal = Shell("E:\Program Files\Microsoft Office\Office12\EXCEL.EXE", 1)

lngChannel = DDEInitiate(App:="Excel", Topic:="System")

DDEExecute Channel:=lngChannel, Command:="[OPEN(" & Chr(34) _

& "f:\Book.xls" & Chr(34) & ")]"

DDETerminate Channel:=lngChannel

Снова открывается канал, но уже с другой темой – именем открытого файла. При помощи команды DDEPOke выполняется изменение содержимого ячейки «А2» (задана в формате номер строки – номер колонки R2C1). Затем файл закрывается. Наконец закрывается канал.

lngChannel = DDEInitiate(App:="Excel", Topic:="f:\book .xls")

DDEPoke Channel:=lngChannel, Item:="R2C1", Data:="17777"

DDEExecute Channel:=lngChannel, Command:="[CLOSE]"

DDETerminate Channel:=lngChannel

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

lngChannel = DDEInitiate(App:="Excel", Topic:="System")

strTopicList = DDERequest(Channel:=lngChannel, Item:="Topics")

Selection.InsertAfter strTopicList

DDETerminate Channel:=lngChannel

Выяснив таким образом наличие темы «Лист2», можно открыть канал с этой темой и изменить значение в некоторой ячейке.

lngChannel = DDEInitiate(App:="Excel", Topic:="Лист2")

DDEPoke Channel:=lngChannel, Item:="R3C1", Data:="8888"

DDETerminateAll

  1. ???Именованные каналы

  2. ???Сокеты

  1. ??? Интеграция при помощи web-технологий.

  2. Серверные и распределенные базы данных.

Проблемы одновременного доступа.

Сетевые версии прикладного программного обеспечения. Блокировка файлов, блокировка записей, построение запросов (view), «зеркалирование», транзакции, использование прав доступа.

Для приложений могут выпускаться сетевые и несетевые варианты. Очевидно, что для работы Вам требуется обратиться именно к сетевой версии.

Некоторые приложения выпускаются в виде версий, рассчитанных на работу в ограниченной сети (например, не более 5 пользователей). Эти ограничения объясняются тем, насколько продуманы в данной версии все возможные проблемы, возникающие при одновременной многопользовательской работе.

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

Для разрешения возникающих конфликтов есть несколько возможных путей (которые уже реализованы в тех или иных приложениях):

  1. Блокировка файла,

  2. Перехват управления,

  3. Блокировка части файла (обычно, записи),

  4. Построение выборки (в БД - запрос),

  5. Транзакции

  6. Зеркалирование

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

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

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

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

Часто более удобным представляется способ организации доступа пользователей к запросам – части файла, состоящей из нескольких записей. При этом пользователь меняет свой запрос, не ощущая, что, возможно, к тем же записям обращается и другой пользователь. Но, следовательно, требуется некий организатор работы по запросам – специальная программа. В настоящее время общепризнанный язык запросов – SQL. А программа, «понимающая» этот язык – SQL-сервер. Таких программ достаточно много, работают они в разных ОС. SQL-сервер не только предоставляет выборки, но и своевременно вносит все накопившиеся изменения в них.

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

Еще один вариант организации работы с дополнительным управляющим средством – «зеркалирование». В этом случае данные копируются («зеркалируются») на компьютеры всех пользователей. А специальное приложение следит за изменениями и разносит их по компьютерам.

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

Один из способов ускорить работу приложений – отказаться от расположения БД в одном месте, а перейти к распределенной БД. Метод зеркалирования – первый шаг в этом направлении.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]