Навигация
Последние комментарии
Автор: , в новости:
Hibernate для чайников. Часть 1.
Автор: , в новости:
Hibernate для чайников. Часть 1.
Автор: , в новости:
Hibernate для чайников. Часть 1.
Автор: , в новости:
Hibernate для чайников. Часть 1.
Автор: , в новости:
Hibernate для чайников. Часть 1.
Автор: , в новости:
Hibernate для чайников. Часть 1.
Автор: , в новости:
Hibernate для чайников. Часть 1.
Чат
:)
:) :D ;) :-P (h) :o
:$ :| 8-) *-) :^) ^o)
:-# *o( |-) :S :@ :(
QQ 8o| (b) (d) (c) (^)
(ci) (y) (n) (f) (t) (???)
Реклама
Популярные публикации
Пользователи on-line
Всего на сайте: 4
Гостей: 0
Пользователи: - отсутствуют
Роботы: crawl Bot, crawl Bot, MSN Bot, MSN Bot

20-ка посетителей: - отсутствуют

Поиск по сайту
RSS подписка
RSS-подписка
Ваше мнение
Какое отношение Вы имеете к Java?

Я Программист
Я Вебмастер
Я люблю java приложения
Затрудняюсьответить

Архив публикаций
Реклама
7-07-2010, 01:54

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

Хранение состояний и данных всегда было проблемой объектно-ориентированного программного обеспечения. Годами разработчики хранили объектные данные, используя для этого множество различных способов, включая реляционные базы данных, flat файлы и XML. Ни один из этих подходов не мог обеспечить полную объектную ориентированность программ. Команда разработчиков Prevayler своей концепцией превалирования объектов изменила текущее положение вещей.

Примечание: Возможно, вам потребуется знакомство с концепцией командных объектов. Обсуждаемая тема тесно перекликается с литературой по шаблонам разработки.


Чем плох метод хранения, который вы используете

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

Метод Превалирования

Превалирование объектов - это концепция, разработанная Клаусом Вьюстэфилдом (Klaus Wuestefeld) совместно с коллегами из Objective Solutions. Ее первая реализация, известная как Prevayler, вышла в ноябре 2001 в качестве проекта с открытым исходным кодом (См. Ссылки). Сегодня уже существует Prevayler версии 1.3.0, содержащий около 350 строк кода. Вы можете счесть объем кода слишком незначительным, чтобы оказаться чем-нибудь полезным, но я, опираясь на личный опыт работы над многими проектами, могу подтвердить, что Prevayler в несколько раз быстрее ряда ведущих реляционных баз данных с открытым исходным кодом. Все дело в простоте.

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

В превалирующих системах все сохраняется в RAM, как если бы вы просто использовали язык программирования. Сериализуемые командные объекты управляют всеми необходимыми изменениями, требующимися для хранения. Запросы запускаются из написанных на языке Java объектов, предоставляя разработчику всю гибкость Collections API и других API, таких как Jakarta Commons Collections и Jutil.org. (См.Ссылки)

Рис. 1. Как работает превалирующая система

Прежде чем изменения коснутся бизнес объектов, каждая команда сериализуется и записывается в файл отчета (см. Рис.1). Затем, каждая команда незамедлительно выполняется. При необходимости, в период простоя, система может сделать снимок бизнес объектов, объединив все команды в один большой файл для сокращения времени на перезагрузку.

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

Чтобы превалирующая система работала правильно, ее бизнес объекты должны удовлетворять двум простым правилам. Бизнес объекты должны быть:

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

Это особенно важно, когда бизнес объекты взаимодействуют с системными часами. Гуру объектно-ориентированного подхода часто говорят, что системные часы - внешнее действующее лицо по отношению к системе. Prevayler помогает вам придерживаться этой точки зрения, обеспечивая класс адаптера, называемый AlarmClock, который выполняет для разработчика приложения слежку за тактами системных часов.

Создание вашей первой Превалирующей системы

Теперь, чтобы приступить к созданию первой превалирующей системы нам нужно скачать Prevayler с web сайта проекта. Убедитесь в правильности установки, проверив его наличие в вашем CLASSPATH.

Начало

Создаваемая превалирующая система будет простейшим менеджером подключений, работающим из командной строки. Вам потребуется найти идентификатор пользователя, пароль, имя и адрес электронной почты. Начнем с описания класса User (см. Листинг 1):

Листинг 1. Описание класса Use


package org.prevayler.intro.users;
import java.io.Serializable;

/** Представляет пользователя системы.
* @author Carlos Villela
*/

public class User implements Serializable {

private String name = "";
private String email = "";
private String login = "";
private String password = "";

// далее идут методы get и set
// ...

}

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

Теперь включите HashMap в PrevalentSystem, как показано на Листинге 2.

Листинг 2. Включение пользовательского hashmap в PrevalentSystem

package org.prevayler.intro.users;
import java.util.HashMap;

import org.prevayler.implementation.AbstractPrevalentSystem;

/** Превалирующая система для Демонстрационного менеджера пользователей.
* @author Carlos Villela
*/

public class UserLogonSystem extends AbstractPrevalentSystem {

/**
* Карта, содержащая ссылки пользователей системы.
*/

private HashMap users;

public UserLogonSystem() {
this.users = new HashMap();
}

public HashMap getUsers() {
return users;
}

public void setUsers(HashMap users) {
this.users = users;
}
}

Теперь вы описали свою систему, используя класс AbstractPrevalentSystem. Вы можете реализовать интерфейс PrevalentSystem непосредственно, если вам необходимо использовать системные часы, или если вашей системе нужно расширить какие-нибудь другие классы.

Теги:
 
Рейтинг: 
 
Нравится(+)0 Не нравится(-)
    Добавил: Добавил admin  
Просмотров: 10


© 2010 java-aplikace.org
На сайте Java-aplikace.org вы найдете любую интересующую
Вас информацию о Java и JavaScript.
При полной или частичной перепечатке текстов статей и публикаций гиперссылка на www.java-aplikace.org обязательна.
Администрация сайта не несет ответственности за устанавливаемое
Вами программное обеспечение. Вы сами решаете, что Вам устанавливать и чем пользоваться.