Лабораторная работа: Реализация почтового клиента и сервера на основе CORBA

Лабораторная работа: Реализация почтового клиента и сервера на основе CORBA




👉🏻👉🏻👉🏻 ВСЯ ИНФОРМАЦИЯ ДОСТУПНА ЗДЕСЬ ЖМИТЕ 👈🏻👈🏻👈🏻




























































Методические указания к лабораторной работе
по курсу «Распределенные системы обработки информации»
"Реализация почтового клиента и сервера на основе
CORBA
"

1. Познакомиться с технологией CORBA.
2. Познакомиться с языком IDL и описанием интерфейсов.
3. Освоить классы библиотеки org.omg.
4. Применить полученные знания на практике
Ознакомиться с теоретическим материалом, представленным в приложениях к данным методическим указаниям и примерами программ. Ознакомиться с текстом задания к лабораторной работе, предложить размещение компонентов и функциональность, удовлетворяющую требованиям задания к лабораторной работе, и написать программу.
Разработать почтовый клиент и сервер. Клиент – оконное приложение, которое будет позволять отсылать и получать с сервера сообщения. Идентификация клиентов на сервере, протокол передачи сообщений – на усмотрение студентов.
Сервер может быть консольным приложением. Хранить сообщения можно в текстовом файле. Рекомендуется сделать сервер многопоточным.
Для взаимодействия клиента и сервера использовать технологию CORBA.
В качестве дополнения предлагается сервер или клиент реализовать не на Java.
1. Постановку задачи, решаемой отлаженной программой.
2. Руководство пользователя отлаженной программы, содержащее описание интерфейсов всех функций программы.
3. Листинг программы с необходимыми комментариями.
2. Что такое IDL? Для чего он нужен?
3. Как осуществляется взаимодействие клиента и сервера в CORBA?
4. Как передаются данные между ними?
1. Кен Арнольд, Джеймс Гослинг, Дэвид Холмс. Язык программирования Java™.
2. Официальный сайт Java – http://java.sun.com/ (есть раздел на русском языке с учебником).
3. Java™ 2 SDK, Standard Edition Documentation – http://java.sun.com/products/jdk/1.5/index.html.
4. Джеймс Гослинг, Билл Джой, Гай Стил. Спецификация языка Java (The Java Language Specification – http://www.javasoft.com/docs/books/jls/). Перевод на русский язык – http://www.uni-vologda.ac.ru/java/jls/index.html
5. Официальный сайт проекта Eclipse – http://www.eclipse.org/.
Технология CORBA (Common Object Request Broker Architecture) – это стандарт написания распределенных приложений, предложенный консорциумом OMG (Open Management Group). Создавая CORBA‑объекты, мы можем, например, существенно уменьшить время решения задач, требующих выполнения большого объема вычислений. Это возможно благодаря размещению CORBA‑объектов на разных машинах. Каждый удаленный объект решает определенную подзадачу, тем самым разгружает клиент от выполнения лишней работы.
Основу CORBA составляет объектный брокер запросов (Object Request Broker). ORB управляет взаимодействием объектов в распределенной сетевой среде. IIOP (Internet Inter-ORB Protocol) – это специальный протокол взаимодействия между ORB.
В адресном пространстве клиента функционирует специальный объект, называемый заглушкой (stub). Поучив запрос от клиента, он упаковывает параметры запроса в специальный формат и передает его серверу, а точнее скелету.
Скелет (skeleton) – объект, работающий в адресном пространстве сервера. Получив запрос от клиента, он распаковывает его и передает серверу. Также скелет преобразует ответы сервера и передает их клиенту (заглушке).
Для того чтобы написать любое приложение CORBA используя технологию Java, необходимо иметь две вещи – это установленный пакет JDK1.5 и компилятор idlj (…\jdk1.5.0\bin\idlj.exe). JDK предоставляет набор классов для работы с CORBA объектами, а idlj производит отображение языка IDL в Java.
Создание CORBA приложения на Java начинается с написания интерфейса для удаленного объекта, используя язык описания интерфейсов (Interface Definition Language, IDL).
Данный интерфейс описывает лишь два метода shutdown и sayHello
. Причем, нам не важно, что делают эти методы, главное мы определяем, что они есть и определяем какие у них входные и выходные параметры.
Далее следует запустить компилятор IDL-to-Java idlj:
В текущей директории появилась новая папка Hello
App
, в которой содержаться шесть java‑файлов. Каждый из них имеет свое назначение.
· HelloPOA.java java – абстрактный класс, который представляет собой ни что иное, как скелет сервера (skeleton) и обеспечивает функциональность сервера.
· _HelloStub.java – класс, реализующий заглушку (stub) клиента. Обеспечивает функциональность клиента.
· HelloHelper.java и HelloHolder.java – классы, предоставляющие вспомогательные функции для CORBA объектов.
· HelloOperations.java – класс, содержащий описание интерфейса hello на языке Java.
· Hello.java – класс – наследник HelloOperations, поддерживающий интерфейс org.omg.CORBA. Object.
Теперь наша задача – написать класс, реализующий интерфейс hello
. В нашем случае это будет HelloImpl
. Обратите внимание, на то, что он является наследником класса HelloPOA
. В HelloImpl
реализованы методы, объявленные в Hello
.
idl
.
Для упрощения задачи объявление методов можно взять из файла
HelloOperations
.
java
, сгенерированного
jdlj
.

Следующим шагом будет создание собственно серверной части приложения. Это будет класс HelloServer.
В нем будет всего один метод – стандартная функция main.
Первое что мы делаем, создаем ORB. Затем создаем экземпляр класса удаленного объекта (HelloImpl) и регистрируем его в ORB. Дальше вызываем специальную службу имен (NameService) и регистрируем в ней имя удаленного объекта, чтобы клиент смог его найти.
1. Создание и инициализация ORB. Производится вызовом статического метода init
класса ORB
2. Создание экземпляра класса удаленного объекта и регистрация его в ORB
HelloImpl helloImpl = new HelloImpl();
3. Получение контекста имен (NamingContext)
org.omg.CORBA. Object objRef = orb.resolve_initial_references («NameService»);
NamingContextExt ncRef = NamingContextExtHelper.narrow(objRef);
В первой строчке мы получаем объектую ссылку на службу имен (NameService). Но фактически это обыкновенный CORBA‑объект и для того, чтобы использовать его как контекст имен (NamingContext), необходимо вызвать метод narrow
класса NamingContextHelper
, который как бы конкретизирует данный CORBA‑объект.
4. Регистрация имени удаленного объекта (HelloImpl)
NameComponent path[] = ncRef.to_name(name);
Регистрация имени производится для того, чтобы клиент смог найти удаленный объект. Этой цели служит функция rebind (NameComponent[] nc, Object obj) интерфейса NamingContext.
public static void main (String args[]) {
// get reference to rootpoa & activate the POAManager
POA rootpoa = POAHelper.narrow (orb.resolve_initial_references («RootPOA»));
rootpoa.the_POAManager().activate();
// create servant and register it with the ORB
HelloImpl helloImpl = new HelloImpl();
// get object reference from the servant
org.omg.CORBA. Object ref = rootpoa.servant_to_reference(helloImpl);
Hello href = HelloHelper.narrow(ref);
// NameService invokes the name service
orb.resolve_initial_references («NameService»);
// Use NamingContextExt which is part of the Interoperable
// Naming Service (INS) specification.
NamingContextExt ncRef = NamingContextExtHelper.narrow(objRef);
// bind the Object Reference in Naming
NameComponent path[] = ncRef.to_name(name);
System.out.println («HelloServer ready and waiting…»);
// wait for invocations from clients
System.out.println («HelloServer Exiting…»);
Перейдем к написанию кода для клиента.
Основные шаги написания клиентского приложения
2. Получение контекста службы имен (NamingContext)
Как видно, первые два пункта совпадают с этапами создания серверного приложения, поэтому рассматривать их не будем.
Третий пункт реализуется тоже достаточно просто. Создается объект NameComponent. Вызывается метод resolve (NameComponent[] path), который отыскивает по имени удаленный объект (стандартный CORBA‑объект). При помощи метода narrow (org.omg.CORBA. Object obj) класса helloHelper (сгенерированного idlj компилятором) получаем объектную ссылку на интерфейс hello.
helloImpl = HelloHelper.narrow (ncRef.resolve_str(name));
Теперь можно вызывать метод sayHello:
System.out.println (helloImpl.sayHello());
Метод shutdown завершает работы сервера.
import org.omg. CosNaming. NamingContextPackage.*;
public static void main (String args[])
orb.resolve_initial_references («NameService»);
// Use NamingContextExt instead of NamingContext. This is
// part of the Interoperable naming Service.
NamingContextExt ncRef = NamingContextExtHelper.narrow(objRef);
// resolve the Object Reference in Naming
helloImpl = HelloHelper.narrow (ncRef.resolve_str(name));
System.out.println («Obtained a handle on server object:» + helloImpl);
System.out.println (helloImpl.sayHello());
Файлы HelloServer.java and HelloClient.java, Hello.idl и папка HelloApp, созданная idkj.exe должны храниться в одной папке.
Для компиляции клиента и сервера надо в командной строке набрать
javac.exe находится в …\jdk1.5.0\bin.
Среда Eclipse не позволяет запускать CORBA‑приложения. Для запуска
1. Запустить службу orbd – Object Request Broker Daemon (…\jdk1.5.0\bin\orbd.exe). Это делается, чтобы мы смогли получить ссылку на службу имен.
Параметр – ORBInitialPort – номер порта, на котором будет работать сервер имен.
start java HelloServer – ORBInitialPort 1050 – ORBInitialHost localhost
Указывается порт, на котором работает сервер имен. Параметр – ORBInitialHost указывает хост, на котором работает сервер имен.
java HelloClient – ORBInitialPort 1050 – ORBInitialHost localhost
Указывается порт, на котором работает сервер имен. Параметр – ORBInitialHost указывает хост, на котором работает сервер имен.
Для удобства компиляции и запуска можно создать bat‑файл:
start java HelloServer – ORBInitialPort 1050 – ORBInitialHost localhost
java HelloClient – ORBInitialPort 1050 – ORBInitialHost localhost
Язык OMG IDL (Interface Definition Language – Язык Описания Интерфейсов) представляет собой технологически независимый синтаксис для описания интерфейсов объектов. При описании программных архитектур, OMG IDL прекрасно используется в качестве универсальной нотации для определения границ объекта, определяющих его поведение по отношению к другим компонентам информационной системы. OMG IDL позволяет описывать интерфейсы, имеющие различные методы и атрибуты. Язык также поддерживает наследование интерфейсов, что необходимо для повторного использования объектов с возможностью их расширения или конкретизации.
IDL является чисто декларативным языком, то есть он не содержит никакой реализации. IDL‑спецификации могут быть откомпилированы (отображены) в заголовочные файлы и специальные прототипы серверов, которые могут использоваться непосредственно программистом. То есть IDL‑определенные методы могут быть написаны, а затем выполнены, на любом языке, для которого существует отображение из IDL. К таким языкам относятся C, C++, SmallTalk, Pascal, Java, Ada.
С помощью IDL можно описать и атрибуты компоненты, и родительские классы которые, она наследует, и вызываемые исключения, и, наконец, методы, определяющие интерфейс, причем с описанием входных и выходных параметров.
Структура CORBA IDL файла выглядит следующим образом:
Синтаксис языка IDL довольно объемный и не представляется возможным описать его в методическом пособии.
Для реализации интерфейса почтового сервера можно дополнить Hello.idl
typedef sequence TMessages;
TMessages GetMessages (in string Name, out short count);
oneway void Send (in string Client, in string Name, in string Message);
typedef sequence TMessages; – объявление типа динамический массив сообщений TMessage.

Название: Реализация почтового клиента и сервера на основе CORBA
Раздел: Рефераты по информатике, программированию
Тип: лабораторная работа
Добавлен 17:58:33 29 июня 2009 Похожие работы
Просмотров: 131
Комментариев: 14
Оценило: 3 человек
Средний балл: 5
Оценка: неизвестно   Скачать

Привет студентам) если возникают трудности с любой работой (от реферата и контрольных до диплома), можете обратиться на FAST-REFERAT.RU , я там обычно заказываю, все качественно и в срок) в любом случае попробуйте, за спрос денег не берут)
Да, но только в случае крайней необходимости.

Лабораторная работа: Реализация почтового клиента и сервера на основе CORBA
Реферат: Елфимов, Пётр Петрович
Реферат: Синантропные средства
Реферат по теме Углерод и его соединения
Реферат На Тему Состав Мембран
Курсовая работа: Удосконалення процесу очищення соняшникової олії (електромагнімним способом)
Эссе На Тему Игра
Реферат: Понятие внутрибольничная инфекция
Эссе Первые Художники Земли
Правоведение И Противодействие Коррупции Реферат
Курсовая Работа На Тему Место И Роль Спроса В Системе Общественного Воспроизводства
Курсовая работа по теме Единый социальный налог
Реферат: Play Dough Essay Research Paper Ingredients1 cup
Реферат: Romeo And Juliet First Balcony Scene Essay
Доклад по теме Люстрація в аспекті порушення прав і свобод
Курсовая работа: Разработка стратегии маркетинговой деятельности ОАО Березовские минеральные воды
Сочинение Герой Нашего Времени Образ
Курсовая работа: Сервис на транспорте
Пищевая ценность продуктов. Супы и бульоны
Сочинение Красота Вокруг Нас Кратко
Реферат: Природні стихії та їх екологічні наслідки
Реферат: Теории технократии
Реферат: Ответственность заемщика за несвоевременный возврат займа или кредита
Реферат: Изучение истории в основной школе

Report Page