Скачать презентацию
Идет загрузка презентации. Пожалуйста, подождите
Презентация была опубликована 11 лет назад пользователемНина Сябрина
1 Используем объекты Caché Бакулин Сергей Москва, 11 апреля
2 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
3 Объекты Caché в клиентском приложении Объекты Caché в клиентском приложении –Создание, редактирование и удаление объектов Caché –Запуск методов классов Caché –Работа с запросами классов Caché Объектная модель данных Объектная модель данных Бизнес логика в Caché Бизнес логика в Caché Нет необходимости использовать реляционные интерфейсы с ОО средством разработки Нет необходимости использовать реляционные интерфейсы с ОО средством разработки Объекты в Caché 5.1 Объектная модель Caché Множественное наследование Множественное наследование Атрибуты Атрибуты –Литералы –Ссылки –Коллекции –Потоки Методы Методы –Методы объектов –Методы классов Запросы на SQL Запросы на SQL
4 Caché Object Factory ActiveX-компонент CacheObject.Factory ActiveX-компонент CacheObject.Factory Объектная фабрика Объектная фабрика –Называется так, поскольку именно этот объект создает объекты классов Caché –Эта же фабрика используется для открытия объектов из БД и сохранения их Разработчик получает доступ ко всем свойствам и методам объектов Разработчик получает доступ ко всем свойствам и методам объектов
5 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;
6 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 }
7 Генератор классов C++ Новое расширение компилятора классов Caché, создающее классы С++ (код и заголовочные файлы) на основании классов, определенных в Caché Class Dictionary Новое расширение компилятора классов Caché, создающее классы С++ (код и заголовочные файлы) на основании классов, определенных в Caché Class Dictionary Является внешним по отношении к Caché приложением Является внешним по отношении к Caché приложением С++С++ Прокси классы CachéCaché Библиотека классов
8 Библиотека 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 Нужно еще? Свяжитесь с нами! Нужно еще? Свяжитесь с нами!
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 =" title="Раннее связывание и динамические объекты 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 =" class="link_thumb"> 9 Раннее связывание и динамические объекты 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 Помогает более широко использовать наследование 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 ="> 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 Помогает более широко использовать наследование"> 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 =" title="Раннее связывание и динамические объекты 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 =">
10 Использование Java BEA WebLogic8.1 BEA WebLogic8.1 JBoss4.0 3 JBoss4.0 3 Caché Java Binding Java Binding EJB Binding EJB Binding Генератор классов Генератор классов Библиотека прокси-классов Библиотека прокси-классов Объектный сервер Объектный сервер
11 EJB в один момент Автоматически создает: Entity bean Entity bean Дескриптор установки Дескриптор установки Сценарий установки Сценарий установки Тестовое приложение Тестовое приложение Автоматически создает: Entity bean Entity bean Дескриптор установки Дескриптор установки Сценарий установки Сценарий установки Тестовое приложение Тестовое приложение
12 Пример работы с объектом 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;
13 Perl Binding, Python Binding Используются специальные пакеты системных прокси-классов Используются специальные пакеты системных прокси-классов –Соединение с сервером –Фабрика объектов –Полная поддержка объектной модели Caché
14 Пример для 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",[])
15 ADO.Net Managed Provider C#, VB.Net, … ADO.Net Object Высокая скорость работы в объектном и реляционном представлении в рамках одного приложения Высокая скорость работы в объектном и реляционном представлении в рамках одного приложения Visual Studio.Net 2005 Visual Studio.Net 2005 Родная.Net связкаРодная.Net связкаCachéCaché
16 Проецируем классы.Net Windows.NET Client Прокси- Классы ISC ClassBinder Caché Определение класса Исходный код Клиент на любой платформе Самостоятельное приложение или инструмент Visual Studio Самостоятельное приложение или инструмент Visual Studio Сгенерированный код напрямую используется приложением.Net Сгенерированный код напрямую используется приложением.Net Использование Генератора классов
17 Мастер создания классов.Net.Net приложение, создающее классы- проекции для – –С# – –C++ – –VB.Net
18 Caché Managed Provider для.Net Windows.NET Framework.NET приложение Код Caché / Ensemble Классы/ Таблицы Managed Objects Сервер (любая платформа) ADO.NET Objects SQL TCP
19 Пример работы с объектом Sample.Person person = Sample.Person.OpenId(CacheConnect, "1"); Console.WriteLine(Значение свойств: \r\n " + person.Id() + ": " + person.Name
20 Пример 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")]); };
21 Объекты и таблицы CacheCommand cacheCommand = User.Person.FindAll(cacheConnection); UserTable = new DataTable(); UserTable.Load(cacheCommand.ExecuteReader()); UserDS.DataSource = UserTable; Drop.DisplayMember = "Name"; Drop.ValueMember = "ID"; В коде можно сочетать объектный и реляционный подход в одном приложении В коде можно сочетать объектный и реляционный подход в одном приложении
22 Использование коллекций литералов и ссылок на объекты 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"); 0) colors.RemoveAt(0); colors.Insert(0,"Blue"); colors.Add("Green");">
23 Наследование и отношения Классы-проекции.Net соответствуют по структуре своим оригиналам в Caché. Работать с ними можно аналогичным образом: CacheRelationshipObject colleagues = company.Employees; foreach (Sample.Employee colleague in colleagues) { Display.WriteLine("\t" + colleague.Name); }
24 В версии Jalapenо Java Object Schema Import Java Object Schema Import –Традиционно Caché предлагает механизмы по созданию прокси- классов из хранимых классов Caché. Jalapeno обращает этот механизм, позволяет создавать классы Caché из существующих описаний классов Java.
25 Что нам все это даст?! Простота проектирования и модернизации приложений Простота проектирования и модернизации приложений Накопленный багаж ОО практик при разработке приложений Накопленный багаж ОО практик при разработке приложений Единство моделей данных на клиенте и на сервере Единство моделей данных на клиенте и на сервере
26 Таким образом… Полноценная объектная модель на всех уровнях разработки Полноценная объектная модель на всех уровнях разработки Объектные средства реализации бизнес логики Объектные средства реализации бизнес логики Широкие возможности по применению объектных средств разработки Широкие возможности по применению объектных средств разработки –.Net –Java –C++ –Delphi –Perl –Python Возможность сочетать мощь объектного подхода со стандартным SQL-доступом Возможность сочетать мощь объектного подхода со стандартным SQL-доступом Возьмите у нас Caché 5.1!
27 Используем объекты Caché Бакулин Сергей
Еще похожие презентации в нашем архиве:
© 2024 MyShared Inc.
All rights reserved.