Модель исходной системы, Выбор методов для переноса - Система автоматизированного разделения кода прикладных программ

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

Способ взаимодействия между клиентом и сервером приложений значения не имеет, однако желательно отсутствие в сообщениях должен SQL кода или его частей, которые потом будут пересланы на сервер БД.

Несмотря на то, что для исследования выбраны приложения, работающие с БД PostgreSQL, конкретный вид используемой приложением СУБД не важен. На сервер приложений и сервер БД накладываются только следующее ограничение:

- Взаимодействие с БД происходит посредством использования JDBC и классов пакета Java. sql .

JDBC позволяет не привязываться к определенной специфике СУБД, а также при ее замене модификации кода минимальны, если вообще присутствуют

Выбор методов для переноса

Критерием для определения метода, как подходящего для переноса может являться использование в нем классов, объектов и методов из пакета Java. sql.

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

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

Сигналом для добавления метода к подходящим для перемещения на другой сервер может быть: наличие объектов принадлежащих к типам Java. sql. Connection, java. sql. ResultSet, java. sql. Statement, наличие возвращаемого значения принадлежащего к этим же типам, а также выполнение методов: GetConnection, prepareStatement, createStatement, execute, executeQuery, executeUpdate.

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

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

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

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

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

Под клиентом в данном случае подразумевается сервер приложений, а под сервером - сервер БД. Это обусловлено тем, что в RMI именно клиент инициирует удаленный вызов, что соответствует логике сервера приложений.

Похожие статьи




Модель исходной системы, Выбор методов для переноса - Система автоматизированного разделения кода прикладных программ

Предыдущая | Следующая