Используем объекты Caché Бакулин Сергей Москва, 11 апреля.

Презентация:



Advertisements
Похожие презентации
Объектный доступ к Cache из среды.NET Александр Харитонов, InterSystems.
Advertisements

Обеспечение целостности данных Процедурное. Хранимые процедуры Хранимые процедуры пишутся на специальном встроенном языке программирования, они могут.
Симпозиум 2008 Сергей Шутов, ДИМАС Борис Егоров, Интерсистемс Практика использования Zen и Прототип-6.
Jalapeño – эффективная разработка приложений для Java Морозов Максим InterSystems Symposium 2007, Москва 4-5 сентября.
Object Relational Mapping (ORM) Объектно-реляционное отображение.
ADO.NET Интегрированная среда разработки. ADO.NET Общая картина Все типы ADO.NET предназначены для выполнения одного набора задач: установить соединение.
NHibernate что, где, когда Артур Дробинский ЗетаСофт Томск, 2012.
Новые возможности Егоров Борис «Школа Инноваций InterSystems 2007»
САОД кафедра ОСУ 1 Основные абстрактные типы данных Схема процесса создания программ для решения прикладных задач ВУ.
Object Relational Mapping (ORM) Объектно-реляционное отображение
Платформа J2EE Сервис: Java Naming Directory (JNDI) – универсальный сервис хранения объектов в иерархической структуре имен (аналогично файловой системе)
©Павловская Т.А. (СПбГУ ИТМО) Курс «С#. Программирование на языке высокого уровня» Павловская Т.А.
Объектные интерфейсы (.NET) «Школа Инноваций InterSystems 2007»
Департамент образования и науки Тюменской области Государственное автономное профессиональное образовательное учреждение Тюменской области «Западно-Сибирский.
Платформа J2EE Сервис: Java Naming Directory (JNDI) – универсальный сервис хранения объектов в иерархической структуре имен (аналогично файловой системе)
Автоматическая генерация схемы реляционной базы данных на основе объектной схемы данных Богданов Алексей.
С# и ООП Формальное определение класса с C# Класс в C# - это пользовательский тип данных (user defined type), который состоит из данных (часто называемых.
Тема 5. Основы современной технологии программирования Программирование в средах современных информационных систем. Интегрированные системы разработки.
Java : доступ к базам данных, технология JDBC. Примеры баз данных.
Языки программирования Дмитрий Сошников
Транксрипт:

Используем объекты Caché Бакулин Сергей Москва, 11 апреля

Caché Server Pages (CSP) Объекты в Caché 5.1 Платформы Ядро Caché Ядро Caché SQL ODBC JDBC Objects Direct Callin Callout VisM Caché Object Script & Caché Basic MultiValue SOAP C++ Java Perl ActiveX Python Jalopeno.NET Сервер Caché Сервер Caché Объектная модель Caché Множественное наследование Множественное наследование Атрибуты Атрибуты –Литералы –Ссылки –Коллекции –Потоки Методы Методы –Методы объектов –Методы классов Запросы на SQL Запросы на SQL

Объекты Caché в клиентском приложении Объекты Caché в клиентском приложении –Создание, редактирование и удаление объектов Caché –Запуск методов классов Caché –Работа с запросами классов Caché Объектная модель данных Объектная модель данных Бизнес логика в Caché Бизнес логика в Caché Нет необходимости использовать реляционные интерфейсы с ОО средством разработки Нет необходимости использовать реляционные интерфейсы с ОО средством разработки Объекты в Caché 5.1 Объектная модель Caché Множественное наследование Множественное наследование Атрибуты Атрибуты –Литералы –Ссылки –Коллекции –Потоки Методы Методы –Методы объектов –Методы классов Запросы на SQL Запросы на SQL

Caché Object Factory ActiveX-компонент CacheObject.Factory ActiveX-компонент CacheObject.Factory Объектная фабрика Объектная фабрика –Называется так, поскольку именно этот объект создает объекты классов Caché –Эта же фабрика используется для открытия объектов из БД и сохранения их Разработчик получает доступ ко всем свойствам и методам объектов Разработчик получает доступ ко всем свойствам и методам объектов

Caché Objects : использование фабрики Uses ComObj; Var Factory : Variant; Pers: Variant; procedure Start(); Begin Factory := CreateOleObject( 'CachéObject.Factory'); Factory.Connect( 'cn_iptcp: [1972]:Samples'); Pers := Factory.New(User.Person'); Pers.Name=Serguey; Pers.sys_Save; End;

Web-сервисы Простой Web- сервис Простой Web- сервис Создан мастером Web-сервисов Создан мастером Web-сервисов Автоматически на веб-сервере помещается WSDL - описание Автоматически на веб-сервере помещается WSDL - описание Class User.CacheServ Extends %SOAP.WebService [ProcedureBlock] { /// Название сервиса Parameter SERVICENAME = "AplusB"; /// URL для вызова вебсервиса Parameter LOCATION = " /// AplusBMethod ClassMethod AplusBMethod(a as %Integer, b as %Integer) As %String [ WebMethod ] { Quit a+b }

Генератор классов C++ Новое расширение компилятора классов Caché, создающее классы С++ (код и заголовочные файлы) на основании классов, определенных в Caché Class Dictionary Новое расширение компилятора классов Caché, создающее классы С++ (код и заголовочные файлы) на основании классов, определенных в Caché Class Dictionary Является внешним по отношении к Caché приложением Является внешним по отношении к Caché приложением С++С++ Прокси классы CachéCaché Библиотека классов

Библиотека Caché C++ Новый набор классов C++, с помощью которого реализуется проекция классов Caché в классы C++ с сохранением их функциональности Новый набор классов C++, с помощью которого реализуется проекция классов Caché в классы C++ с сохранением их функциональности Поддерживаются среды разработки Поддерживаются среды разработки MS VS 6.0 MS VS 6.0 MS VS 7.1 MS VS 7.1 Borland C++ Builder 6.0 Borland C++ Builder 6.0 gсc gсc Нужно еще? Свяжитесь с нами! Нужно еще? Свяжитесь с нами!

Раннее связывание и динамические объекты d_ref per = User_Person::openid(&db,L"1"); d_string name=per->getName(); d_string res=per->Method(); d_ref per=NULL; const_name_t cl_name(L"User.Person"); per = Dyn_obj::openid(&db, cl_name, L"1"); d_ref per = Dyn_obj::openref(per->get_property(LName"), &db); D_type** args =(D_type**)db.get_arg_ptrs_buf(); d_int arg1(1); args[0]=&arg1; d_string res(per->run_obj_method(LMethod",args,1)); Стандартный подход для большинства разработчиков Стандартный подход для большинства разработчиков Удобство синтаксиса Удобство синтаксиса Работа непосредственно с прокси-классами Работа непосредственно с прокси-классами o Динамическое определение типов данных o Помогает более широко использовать наследование

Использование Java BEA WebLogic8.1 BEA WebLogic8.1 JBoss4.0 3 JBoss4.0 3 Caché Java Binding Java Binding EJB Binding EJB Binding Генератор классов Генератор классов Библиотека прокси-классов Библиотека прокси-классов Объектный сервер Объектный сервер

EJB в один момент Автоматически создает: Entity bean Entity bean Дескриптор установки Дескриптор установки Сценарий установки Сценарий установки Тестовое приложение Тестовое приложение Автоматически создает: Entity bean Entity bean Дескриптор установки Дескриптор установки Сценарий установки Сценарий установки Тестовое приложение Тестовое приложение

Пример работы с объектом Caché из Java Открываем объект Открываем объект person = (Sample.Person)Sample.Person._open(dbconnection, new Id(strID),3); Выводим свойства объектов Выводим свойства объектов System.out.println("Name: " + person.getName()); Изменяем свойства Изменяем свойства person.setName("Serguey"); Сохраняем объект в БД Сохраняем объект в БДperson._save(); Закрываем объект Закрываем объектdbconnection.closeObject(person.getOref()); person = null;

Perl Binding, Python Binding Используются специальные пакеты системных прокси-классов Используются специальные пакеты системных прокси-классов –Соединение с сервером –Фабрика объектов –Полная поддержка объектной модели Caché

Пример для Python Создание соединения с сервером Создание соединения с сервером conn = intersys.pythonbind.connection() conn.connect_now(url,user,password, None) database = intersys.pythonbind.database(conn) Создаем новый объект Создаем новый объект person = database.create_new("Sample.Person", None) Работаем со свойствами Работаем со свойствами person.set("Name","Doe, Joe A") name = person.get("Name") Выполняем метод Выполняем метод answer = person.run_obj_method("Addition",[17,20]) Сохраняем объект Сохраняем объектperson.run_obj_method("%Save",[])

ADO.Net Managed Provider C#, VB.Net, … ADO.Net Object Высокая скорость работы в объектном и реляционном представлении в рамках одного приложения Высокая скорость работы в объектном и реляционном представлении в рамках одного приложения Visual Studio.Net 2005 Visual Studio.Net 2005 Родная.Net связкаРодная.Net связкаCachéCaché

Проецируем классы.Net Windows.NET Client Прокси- Классы ISC ClassBinder Caché Определение класса Исходный код Клиент на любой платформе Самостоятельное приложение или инструмент Visual Studio Самостоятельное приложение или инструмент Visual Studio Сгенерированный код напрямую используется приложением.Net Сгенерированный код напрямую используется приложением.Net Использование Генератора классов

Мастер создания классов.Net.Net приложение, создающее классы- проекции для – –С# – –C++ – –VB.Net

Caché Managed Provider для.Net Windows.NET Framework.NET приложение Код Caché / Ensemble Классы/ Таблицы Managed Objects Сервер (любая платформа) ADO.NET Objects SQL TCP

Пример работы с объектом Sample.Person person = Sample.Person.OpenId(CacheConnect, "1"); Console.WriteLine(Значение свойств: \r\n " + person.Id() + ": " + person.Name

Пример SQL-запроса string SQLtext = "SELECT * FROM Sample.Person WHERE ID = 1"; CacheCommand Command = new CacheCommand(SQLtext, CacheConnect); CacheDataReader Reader = Command.ExecuteReader(); while (Reader.Read()) { Console.WriteLine("Provider output: \r\n " + Reader[Reader.GetOrdinal("ID")] + ": " + Reader[Reader.GetOrdinal("Name")]); };

Объекты и таблицы CacheCommand cacheCommand = User.Person.FindAll(cacheConnection); UserTable = new DataTable(); UserTable.Load(cacheCommand.ExecuteReader()); UserDS.DataSource = UserTable; Drop.DisplayMember = "Name"; Drop.ValueMember = "ID"; В коде можно сочетать объектный и реляционный подход в одном приложении В коде можно сочетать объектный и реляционный подход в одном приложении

Использование коллекций литералов и ссылок на объекты CacheListOfStrings colors = person.FavoriteColors int row = 0; foreach (string color in colors) { Display.WriteLine(" Element #" + row++ + " = " + color); } ///Плюс стандартные методы обработки коллекций Caché if (colors.Count > 0) colors.RemoveAt(0); colors.Insert(0,"Blue"); colors.Add("Green");

Наследование и отношения Классы-проекции.Net соответствуют по структуре своим оригиналам в Caché. Работать с ними можно аналогичным образом: CacheRelationshipObject colleagues = company.Employees; foreach (Sample.Employee colleague in colleagues) { Display.WriteLine("\t" + colleague.Name); }

В версии Jalapenо Java Object Schema Import Java Object Schema Import –Традиционно Caché предлагает механизмы по созданию прокси- классов из хранимых классов Caché. Jalapeno обращает этот механизм, позволяет создавать классы Caché из существующих описаний классов Java.

Что нам все это даст?! Простота проектирования и модернизации приложений Простота проектирования и модернизации приложений Накопленный багаж ОО практик при разработке приложений Накопленный багаж ОО практик при разработке приложений Единство моделей данных на клиенте и на сервере Единство моделей данных на клиенте и на сервере

Таким образом… Полноценная объектная модель на всех уровнях разработки Полноценная объектная модель на всех уровнях разработки Объектные средства реализации бизнес логики Объектные средства реализации бизнес логики Широкие возможности по применению объектных средств разработки Широкие возможности по применению объектных средств разработки –.Net –Java –C++ –Delphi –Perl –Python Возможность сочетать мощь объектного подхода со стандартным SQL-доступом Возможность сочетать мощь объектного подхода со стандартным SQL-доступом Возьмите у нас Caché 5.1!

Используем объекты Caché Бакулин Сергей