Построение объектно-ориентированной модели расчетов с использованием удаленных баз данных

Автор: content Понедельник, Апрель 9th, 2012 Нет комментариев

Рубрика: Язык Java

Рассматривается задача организации удаленных рабочих мест для Internet расчетов с использованием удаленных баз данных. Для решения этой задачи применяется следующая технология: HTML — страничка — Java — апплет — база данных в Microsoft Access – HTML страничка. Менеджер производит расчеты с использованием Internet и базы данных в Microsoft Access. Менеджер, рабочее место которого можно рассматривать как удаленное рабочее место, загружает HTML — страничку, находит информацию в данных, доставляемых из базы данных, и заносит изменения об оплате за услуги. Возможно также редактирование удаленной базы данных. Обработка данных производится в апплете, написанном на языке Java.

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

Новизна предлагаемого подхода состоит в том, что для решения подобного рода задач применяются технологии объектно – ориентированного программирования. Задачи организации удаленных рабочих мест решались и решаются с помощью других языков программирования. Интернет — магазины, системы заказов для дистрибьюторов, корпоративные порталы для интеграции удаленных офисов, мобильные пользователи, имеющие доступ к центральной базе данных — неполный перечень интернет- решений, все больше и больше использующихся фирмами, желающими максимально использовать интернет для своего бизнеса. Однако грамотное, полноценное использование возможностей интернет решений все еще является дефицитом. Разработанные решения зачастую не решают поставленных задач или малофункциональны. При разработке решения компания GSoft применяет хорошо известные CGI – технологии ( www.gsoft.ru ).

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

Рассмотрим разницу между CGI — технологией и работой Java based Web Server. Когда Web-сервер получает CGI(Common Gateway Interface) — запрос, ему нужно запустить постороннюю программу, дать возможность этой программе выполниться и затем завершиться, и после этого вернуть полученный в результате выполнения текст в Web-браузер. Каждый раз во время выполнения CGI должно создаваться новое обращение к базе данных, которое занимает несколько секунд.

Технология PHP, которая в отдельно взятых случаях является средством погашения всех свободных ресурсов сервера, отличается от технологии Java тем, что не используется единый главный процесс для всех пришедших на сервер запросов

Технология, использованная при решении поставленной в проекте задачи, позволяет преодолеть недостатки этих и других сайтов. При работе Java Web Server имеет место многопоточность в едином процессе. Множество сервлетов выполняются параллельно в рамках одного процесса на сервере и по своей производительности превосходят как CGI, так и Fast-CGI приложения. Сервлетам нет необходимости перезагружать процесс при каждом новом запросе, и это также повышает их быстродействие.

Для разработки проекта применялся Borland JBuilder9 Enterprise. Теоретическая и экспериментальная разработка проекта полностью согласуется с теорией объектно — ориентированного программирования. Термин апплет обозначает маленькую, вложенную (embedded) программу (application), которая может быть использована внутри большей системы. В этом смысле, большинство программ являются вложенными (embedded) в операционную систему компьютера. Java — апплеты есть программы на Java, которые вложены (embedded) и контролируются другой большей программой, такой как Java — браузер (browser) или апплет вьювер (appletviewer). Апплет, даже если он доставлен издалека, работает на компьютере пользователя. Интерпретация (а не компиляция) программ и наличие виртуальной машины (JVM Java Virtual Machine) делают возможным такое выполнение программ.

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

С точки зрения классического описания, базовой архитектурой системы является многозвенка. Проанализируем Java с точки зрения полной многозвенной архитектуры (рис. 1).

Рис.1. Полная многозвенная архитектура

Клиент через контроллер посылает запрос на сервер. Далее происходит сопоставление данных и устанавливается связь с источником данных. Данные считываются из источника данных и передаются на сервер. Далее через медиатор данные передаются клиенту. Анализ Java с точки зрения полной многозвенной архитектуры позволяет сделать выбор платформы Java для разработки проекта.

Платформа Java претерпела значительные изменения с того момента, когда она была впервые продемонстрирована. Из рассматривавшегося исключительно как язык ‘апплетов’ для Internet, Java вырос в масштабируемую платформу для создания Intranet, Extranet и Internet-решений. Следует упомянуть ключевые области, в которых используется Java:

Разработки для Web с использованием апплетов, HTML и сервлетов
Разработки распределенных клиентов и серверов с использованием CORBA
Создание повторно используемых компонентов JavaBean.

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

Как было сказано выше, предлагаемый проект посвящен организации удаленных рабочих мест для Internet — расчетов абонентов энергосети. Для разработки проекта применялись апплеты, а не полноценное Java – приложение, которое может публиковаться через Java Web Start. Причины выбора апплетов для разработки проекта изложены ниже.

Апплеты (applets) представляют собой разновидность приложений Java, которые интерпретируются виртуальной машиной Java, встроенной практически во все современные браузеры.

Приложения на Java — это обычные автономные программы. Так как они не содержат машинного кода и работают под управлением специального интерпретатора, их производительность заметно ниже, чем у обычных программ, составленных, например, на языке программирования C++. Достоинством программ Java является то, что они способны без перетрансляции работать на любой платформе, что само по себе имеет большое значение в плане разработок для Internet.

Апплеты Java встраиваются в документы HTML, хранящиеся на сервере Web. С помощью апплетов можно сделать страницы сервера Web динамичными и интерактивными. Апплеты позволяют выполнять сложную локальную обработку данных, полученных от сервера Web или введенных пользователем с клавиатуры. Из соображений безопасности апплеты (в отличие от обычных приложений Java) не имеют никакого доступа к файловой системе локального компьютера. Все данные для обработки они могут получить только от сервера Web. Более сложную обработку данных можно выполнять, организовав взаимодействие между апплетами и расширениями сервера Web — приложениями CGI и ISAPI.

Одной из причин выбора апплетов для разработки проекта был факт уязвимости безопасности с Java Web Start (Security Vulnerability With Java Web Start). Уязвимость в Java Web Start делает возможным неизвестному приложению, например, прочесть из локальных файлов или написать в локальные файлы, а также выполнять локальные приложения, которые не должны быть доступны неизвестному приложению.

Web — приложение представляет собой автономную структуру, содержащую все необходимые файлы и определяющие особенности доставки и выполнения программных компонентов. Таким образом, преимущества, присущие языку Java, переносятся на целую платформу, содержащую корректное представление информации на различных серверах. Инфраструктура Web — приложения предполагает наличие некоторого корневого каталога, содержащего все ресурсы, необходимые для обеспечения его работы. Все HTML — станицы, JSP, изображения и другие ресурсы, составляющие приложения (за исключением библиотек Java — классов), располагаются в подкаталогах корневого каталога.

Использование апплетов имеет следующие преимущества:

Разработки выполняются непосредственно на том компьютере, где происходит обработка данных и получение результатов, то есть данные не пересылаются, что сокращает трафик в сети.
Ресурсы компьютера пользователя могут быть полностью выделены апплету. Это позволяет работать быстрее, чем на сервере, где размещена Web — страница, так как сервер выделяет для этого лишь часть ресурсов.
Возможность доступа ко всем средствам языков программирования Java. Например, для работы с апплетами используется класс Applet из пакета applet (java.applet.Applet). Для взаимодействия с пользовательским интерфейсом используется пакет AWT(Abstract Window Toolkit).

Очевидно, что функционала классического тонкого клиента на основе браузера (HTML + Java Script) недостаточно. В предлагаемом проекте в Java – коде используется SQL – запрос (statement) для извлечения данных из базы данных. Использование SQL – запроса (statement ) невозможно в случае HTML + Java Script. Java Script является скриптовым языком и не может выполнять функции, которые способен выполнить язык Java.

В проекте была создана база данных в Microsoft Access.

В работе использовался коммуникационный интерфейс ODBC(Open Database Connectivity). ODBC API(Application Programming Interface) позволяет разработчику создать приложения, работающие с базами данных различных производителей. ODBC весьма широко используются различными системами. Концепция виртуальной машины в Java делает возможной разработку приложений вне зависимости от платформы [1]. JDBC представляет собой соединение с базой данных вне зависимости от операционной системы. Запрос, поступающий в апплет, обрабатывается при помощи SQL — запроса (statement). Java — код (в данном случае апплет) обрабатывает данные, а затем полученные данные передаются на HTML-страничку. Итак, согласно приведенной выше схеме, апплет вызывается HTML — страницей. HTML -страница в нашем случае состоит из HTML — кода, из которого происходит доступ к Java — апплету.

Путь к апплету указан в следующей строке

code = «untitled.Applet1.class»

Ширина выбрана равной 800, а высота — равной 600.

Далее осуществляется связь между Application Server(Java) и DMBS (Database Server) через DMBS — propietary protocol. Описанная выше схема изображена на рисунке 2.

Рис. 2. Связь между Application Server(Java) и DMBS (Database Server).

Эта технология находится в полном соответствии с технологией, описанной в [2].

Работа апплета происходит следующим образом:

Web – страница автоматически инициирует запрос на загрузку апплета,
сервер посылает байт — код апплета в браузер,
происходит пересылка кода,
виртуальная машина Java выполняет код на локальной машине.

Работа сервлета происходит следующим образом:

Windows — страница инициирует запрос на функцию, реализованную с помощью сервлета,
сервер получает запрос и передает его сервлету,
сервлет выполняется и возвращает результат Web — серверу,
происходит пересылка данных,
сервер отсылает результаты браузеру,
происходит пересылка данных,
браузер отображает данные.

Разница между апплетом и сервлетом состоит в следующем: сервлеты являются объектами, которые образуют специфический интерфейс, с помощью которого их можно свободно встраивать в Java-ориентированные Web-серверы. В отличие от апплетов, они являются облегченными Java-объектами (без графики и GUI-компонентов), но зато, будучи кроссплатформенными и динамически загружаемыми и, используя все возможности Java, они могут использовать практически любой HTML и взаимодействовать с любым браузером. Сервлеты работают на стороне сервера, а апплеты работают на стороне клиента. С помощью сервлетов можно извлекать информацию из баз данных, а с помощью апплетов нельзя извлекать информацию из баз данных.

Всемирная паутина WWW(World Wide Web) создана из Web — страниц, которые формируются с помощью HTML (HyperText Markup Language) — языка разметки гипертекста. При разработке HTML – документа выполняется разметка текстового документа. Специальные программы просмотра HTML — документов, которые часто называют браузерами, служат для интерпретации файлов, размеченных по правилам языка HTML, форматирования их в виде HTML — страниц и отображении их содержимого на экране компьютера пользователя. Существует большое количество программ — браузеров, разработанных различными компаниями, например, Netscape Communicator и Microsoft Internet Explorer. Современные браузеры обладают широкими возможностями, но основным для них является интерпретация документов, размеченных по правилам HTML. В предлагаемом авторами проекте были созданы HTML – страницы.

Рассмотрим задачу построения описанной выше модели подробнее. Создание современных программных продуктов подразделяется на четыре стадии разработки (software development cycle): анализ (analysis), дизайн (design), кодирование (coding), тестирование (testing).

В ходе работы над поставленной задачей был создан проект в JBuilder. В JBuilder понятие проекта используется для обозначения структуры, с помощью которой группируются текстовые файлы (Java, JSP, HTML, JDL, XML и др., в том числе файлы, генерируемые в процессе работы), двоичные файлы (файлы изображений, аудиофайлы, архивы Jar и Zip и т.д.), а также свойства (информация о расположении различных файлов, номер версии JDK и т.д.). Файл проекта имеет расширение . jpx. При работе с проектом могут использоваться и другие текстовые файлы (например, файлы . library). При разработке Web — приложения используются апплеты и сервлеты, применение которых позволяет значительно упростить процесс формирования содержимого Web — документов.

Рассмотрим технологию интеграции различных частей созданного нами приложения. В проекте использованы HTML — страницы и апплеты. На сервере существует компонент, который отвечает за создание «моделей данных» (шаблон проектирования MVC), который отправляет эти модели на отображение апплету и HTML — странице. В нашем случае таким компонентом является сервлет.

Для того чтобы сервлеты могли использоваться для обработки запросов клиента, Web — сервер должен поддерживать Java Servlet API. Это требование выполняется либо путем установки на Web – узле сервера с встроенными средствами поддержки указанного API, либо с помощью специальных программных средств, интегрированных с Web — сервером и ориентированных на работу с Java — сервлетами. Когда Web — сервер получает запрос, в котором указан определенный ресурс, он анализирует тип ресурса. Если ресурс представляет собой сервлет, он запускается на выполнение и запрос перенаправляется ему. Сервлет обрабатывает запрос и формирует ответ, который передается Web — серверу. Получив ответ от сервлета, Web — сервер пересылает ответ тому клиенту, от которого был получен запрос.

Содержимое Web — узла и размещённых на них Web — приложений представляет собой сочетание статической, т.е. не изменяемой с течением времени, информации и динамически формируемых данных [3]. Web — страницы хорошо справляются с доставкой статических данных; в ответе на запрос браузера серверы передают им HTML — документы.

Одно из преимуществ использования языка Java для создания программ состоит в том, что написанный и скомпилированный код можно переносить с одной платформы на другую.

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

Рассмотрим созданную и использованную нами базу данных. База данных создана с помощью Microsoft Access. Microsoft Access позволяет управлять сведениями из файла базы данных. Многие современные приложения предназначены для работы с базами данных. Базы данных обеспечивают хранение и эффективный поиск информации; для извлечения данных из базы используется язык структурированных запросов SQL (Structured Query Language). Поддержка соединения с базой данных и передача SQL-запросов осуществляются средствами JDBC API (Java DataBase Connectivity API). JDBC API — прикладной программный интерфейс для взаимодействия с базами данных средствами Java. Универсальный язык SQL позволяет применять команды, ориентированные на определенную базу данных, для работы с продуктами других производителей. Язык SQL используется в проекте для извлечения данных из базы данных в Microsoft Access. Например, следующий SQL — запрос «SELECT c.CityName,s.StreetName FROM City AS c, Street AS s WHERE» +» s.StreetId=»+streetId+» AND c.CityId=s.CityId» извлекает данные из таблиц City и Street созданной нами базы данных SHOP.

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

Основой для создания ODBC (Open Database Connectivity)послужил стандарт SQL X/Open Call Level Interface. ODBC API позволяет разработчикам создавать приложения, работающие с базами данных разных производителей. Средства ODBC используются в различных системах. JDBC предоставляет средства соединения с базами данных, не зависящие от операционной системы. После установления соединения Connection выполняются выражения, для чего используется объект Statement. При выполнении выражений могут возвращаться наборы результатов, представляемые объектом ResultSet. После окончания работы с базой соединение с ней разрывается.

Пишем экспериментальную часть нашего проекта. Рассмотрим программный продукт, с помощью которого, например, можно производить Internet — расчеты за услуги энергоснабжения. Каждый месяц производятся расчеты за электроэнергию. Такие расчеты можно производить с помощью созданного авторами программного продукта. Для успешной работы Java — апплета необходимо использование стандартных пакетов Java. В результате импортирования мы получаем доступ к графике (java.awt.*), апплетам (java.applet.*), а также ко многим другим пакетам и стандартным классам Java, которые призваны быть вспомогательным средством для успешной работы Java -апплета. Класс main, декларированный как public, является сыном класса Applet, что выражается глаголом extends. В классе main обязательно присутствует одноименный метод — констуктор main() [4]. Остановимся подробнее на деталях имплементации. Каждая кнопка декларируется как jButton. Употребление кнопок связано с интерфейсом ActionListener. Как видно из кода, связь между классом Applet1 jButton actionAdapter и интерфейсом java.awt.event.ActionListener осуществляется с помощью глагола implements. С употреблением интерфейса ActionListener связано использование метода actionPerformed, который в коде имеет вид jButton_actionPerformed с аргументом e типа ActionEvent. Экземпляр панели создается при помощи конструктора:

pnlMain pnl=new pnlMain();

Применяя View к файлу main.html, получим извлеченный из базы данных список улиц, абонентов, тарифов, счетов, и других категорий, извлекаемых из базы данных SHOP при помощи JDBC — ODBC connection. Менеджер, работающий на удаленном рабочем месте, работает с HTML — страницей, находя информацию в данных, доставляемых из базы данных, заносит изменения об оплате за услуги либо добавляет нового абонента.

Авторами создан проект shop.jpx, в состав которого входят следующие файлы: mainApplet.html, mainApplet.java, ShowOrderDialogs.java, AddCityDlg.java, AbonentAddDlg.java, AbonentAddEditPnl.java , AbonentBean.java, AbonentEditDlg.java , AbonentTableModel.java , AddDistrictDlg.java, AddFindAbonentDlg.java, AddStreetDlg.java, AddWorkerDialog.java ,DBUtils.java, EditOneTariffDialog.java, EditTariffDialog.java, MyCityTableModel.java, MyTableModel.java, PayBean.java, PayDialog.java, PaymentPanel.java, StreetsDlg.java, test.java, WorkerAddEditPanel.java, WorkerBean.java, WorkerEditDialog.java, WorkersDialog.java, WorkerTableModel.java. Каждый из этих файлов выполняет специальные функции. Названия файлов говорят сами о себе, поэтому авторы считает нецелесообразным останавливаться на них подробно. После компиляции формируются class — файлы для каждого одноименного java — файла из списка, приведенного выше. Для успешной имплементации необходимо установить связь между апплетом и базой данных в Microsoft Access. Эта связь есть JDBC — ODBC connection. Для ее установления, прежде всего, импортируется sun.jdbc.odbc.OdbcDef. Далее устанавливается JDBC –ODBC соединение (connection).

Затем производятся приготовления, связанные с использованием языка SQL, в частности Queries (запросов) на языке SQL. C этой целью производится импортирование com.borland.dx.sql.dataset.QueryDescriptor. Доступ к данным осуществляется при помощи запроса следующим образом:

queryDataSet1.setQuery(new
com.borland.dx.sql.dataset.QueryDescripor(database1, «Select *
From Shop», null, true, Load.All);

В приведенной выше команде действия производятся с QueryDescriptor, далее приводится запрос для извлечения данных из базы данных.

database1.setConnection(new
com.borland.dx.sql.dataset.ConnectionDescriptor(«jdbc:odbc:SHOP»,
«», «», false, «sun.jdbc.odbc.JdbcOdbcDriver»));

В приведенной выше команде производится установка jdbc:odbc связи и получение доступа к базе данных SHOP.

Кроме того, необходимо также на Панели управления в разделе Администратор внести следующие изменения в источники данных (ODBC): в разделе Пользовательский DSN необходимо Добавить MicrosoftAccessDriver, затем необходимо выбрать базу данных и добавить ее к пользовательскому DSN.

Итогом работы является создание программного продукта для организации удаленных рабочих мест в соответствии с описанной выше технологией: HTML-страничка — Java — апплет — база данных в Microsoft Access – HTML страница. Модель построена и обоснована на базе задачи расчетов организаций за услуги энергоснабжения. Менеджер, использующий разработанный проект, производит расчет с абонентом за потребляемые услуги с использованием Internet, а также базы данных в Microsoft Access. Менеджер, рабочее место которого можно рассматривать как удаленное рабочее место, используя разработанный проект, загружает HTML — страничку, находит информацию в данных, доставляемых из базы данных, и заносит изменения об оплате за услуги. Возможно редактирование базы данных. Предлагаемая статья является обобщением и теоретическим обоснованием проведенной работы. Подход актуален для широкого спектра задач объектно – ориентированного дизайна, например, для задач, возникающих в банковском деле, для построения объектно – ориентированных моделей для работы с базами данных различных организаций.

Источник: http://www.javaportal.ru/java/articles/OOMBD.html
Автор: Оксана Масловская

Оставить комментарий

Чтобы оставлять комментарии Вы должны быть авторизованы.

Похожие посты