Джини: Нова технология за мрежов свят

Предишна 1 2 Страница 2 Страница 2 от 2

Джини в контекст

Традиционно операционните системи са проектирани с предположението, че компютърът ще има процесор, малко памет и диск. Когато стартирате компютър, първото нещо, което прави, е да потърси диск. Ако не намери диск, той не може да функционира като компютър. Все по-често обаче компютрите се появяват в различен облик: като вградени устройства, които имат процесор, малко памет и мрежова връзка - но без диск. Първото нещо, което мобилният телефон прави, когато го стартирате, например, е да потърси телефонната мрежа. Ако не намери мрежата, тя не може да функционира като мобилен телефон. Тази тенденция в хардуерната среда, от дискоцентрична до мрежова, ще повлияе на начина, по който организираме нашия софтуер - и тук идва Jini.

Jini е опит за преосмисляне на компютърната архитектура, предвид нарастващото значение на мрежата и разпространението на процесори в устройства, които нямат дисково устройство. Тези устройства, които ще идват от много различни доставчици, ще трябва да си взаимодействат през мрежа. Самата мрежа ще бъде много динамична - устройства и услуги ще се добавят и премахват редовно. Jini предоставя механизми, които позволяват плавно добавяне, премахване и намиране на устройства и услуги в мрежата. В допълнение, Jini предоставя програмен модел, който улеснява програмистите да накарат устройствата си да говорят помежду си.

Изграждайки върху Java, обектна сериализация и RMI, които позволяват на обектите да се движат из мрежата от виртуална машина към виртуална машина, Jini се опитва да разшири предимствата на обектно-ориентираното програмиране в мрежата. Вместо да изисква от доставчиците на устройства да се споразумеят за мрежовите протоколи, чрез които техните устройства могат да взаимодействат, Jini дава възможност на устройствата да говорят помежду си чрез интерфейси към обекти.

Какво е Джини?

Jini е набор от API и мрежови протоколи, които могат да ви помогнат да изградите и внедрите разпределени системи, които са организирани като обединения на услуги. А услуга може да бъде всичко, което се намира в мрежата и е готов да изпълняват полезна функция. Хардуерни устройства, софтуер, комуникационни канали - дори самите човешки потребители - могат да бъдат услуги. Дисково устройство с активиран Jini например може да предложи услуга за „съхранение“. Принтерът с поддръжка на Jini може да предложи услуга за "печат". Тогава федерация от услуги е набор от услуги, налични в момента в мрежата, които клиент (което означава програма, услуга или потребител) може да обедини, за да му помогне да постигне някаква цел.

За да изпълни задача, клиентът се обръща за помощ към услуги. Например клиентска програма може да качи снимки от услугата за съхранение на изображения в цифров фотоапарат, да изтегли снимките в постоянна услуга за съхранение, предлагана от дисково устройство, и да изпрати страница с миниатюрни версии на изображенията до услугата за печат цветен принтер. В този пример клиентската програма изгражда разпределена система, състояща се от себе си, услугата за съхранение на изображения, услугата за постоянно съхранение и услугата за цветен печат. Клиентът и услугите на тази разпределена система работят заедно, за да изпълнят задачата: да разтоварят и съхраняват изображения от цифров фотоапарат и да разпечатват страница с миниатюри.

Идеята зад думата федерациясе основава на изгледа на Jini за мрежата - няма централен контролен орган. Тъй като никоя услуга не отговаря, наборът от всички услуги, налични в мрежата, образуват федерация - група, съставена от равни връстници. Вместо централен орган, изпълняващата инфраструктура на Jini просто предоставя начин на клиентите и услугите да се намират помежду си (чрез справочна услуга, която съхранява директория с налични в момента услуги). След като службите се локализират, те са сами. Клиентът и включените в него услуги изпълняват задачата си независимо от инфраструктурата за изпълнение на Jini. Ако услугата за търсене на Jini се срине, всички разпределени системи, събрани чрез услугата за търсене преди срив, могат да продължат работата си.Jini дори включва мрежов протокол, който клиентите могат да използват за намиране на услуги при липса на услуга за търсене.

Как работи Джини

Jini дефинира среда за изпълнение, която се намира в мрежата и предоставя механизми, които ви позволяват да добавяте, премахвате, намирате и достъпвате услуги. Изпълнителната инфраструктура се намира в мрежата на три места: в услуги за търсене, които се намират в мрежата; в доставчиците на услуги (като устройства с активиран Jini); и при клиенти. Услугите за търсене са централният организиращ механизъм за базираните на Jini системи. Когато новите услуги станат достъпни в мрежата, те се регистрират с услуга за търсене. Когато клиентите искат да намерят услуга, която да подпомогне дадена задача, те се консултират с услуга за търсене.

Изпълнителната инфраструктура използва един протокол на мрежово ниво, наречен откриване , и два протокола на ниво обект, наречени присъединяване и търсене. Discovery позволява на клиентите и услугите да намират услуги за търсене. Присъединяването позволява на услугата да се регистрира в услуга за търсене. Търсене позволява на клиента да поиска услуга за търсене на услуги, които могат да помогнат на клиента да постигне целите си.

Процесът на откриване

Discovery работи по следния начин: Представете си, че имате Jini-активирано дисково устройство, което предлага постоянна услуга за съхранение. Веднага след като свържете устройството към мрежата, то излъчва съобщение за присъствие, като пуска многоадресен пакет на добре познат порт. В съобщението за присъствие са включени IP адрес и номер на порт, където дисковото устройство може да се свърже от услуга за търсене.

Услугите за търсене наблюдават добре познатия порт за пакети за съобщения за присъствие. Когато услугата за търсене получи съобщение за присъствие, тя се отваря и проверява пакета. Пакетът съдържа информация, която позволява на услугата за търсене да определи дали трябва да се свърже с подателя на пакета. Ако е така, той се свързва директно с подателя, като осъществява TCP връзка с IP адреса и номера на порта, извлечени от пакета. Използвайки RMI, услугата за търсене изпраща обект, наречен регистратор на услуги,през мрежата до създателя на пакета. Целта на обекта на регистратора на услуги е да улесни по-нататъшната комуникация с услугата за търсене. Чрез извикване на методи за този обект, подателят на пакета за съобщения може да извърши присъединяване и търсене в услугата за търсене. В случая с дисковото устройство, услугата за търсене ще направи TCP връзка с дисковото устройство и ще му изпрати обект на регистратор на услуги, чрез който дисковото устройство след това ще регистрира своята постоянна услуга за съхранение чрез процеса на присъединяване.

Процесът на присъединяване

След като доставчикът на услуги има обект на регистратор на услуги, крайният продукт на откриването, той е готов да направи присъединяване - да стане част от федерацията на услугите, които са регистрирани в услугата за търсене. За да извърши обединение, доставчикът на услуги извиква register()метода на обекта на регистратора на услуги, предавайки като параметър обект, наречен елемент на услуга, пакет обекти, които описват услугата. В register()метода изпраща копие от елемента на услугата до справочната служба, където се съхранява елементът на услуги. След като това приключи, доставчикът на услуги завърши процеса на присъединяване: неговата услуга се регистрира в услугата за търсене.

Елементът на услугата е контейнер за няколко обекта, включително обект, наречен обект на услуга, който клиентите могат да използват за взаимодействие с услугата. Елементът на услугата може също да включва произволен брой атрибути, които могат да бъдат всеки обект. Някои потенциални атрибути са икони, класове, които предоставят GUI за услугата, и обекти, които дават повече информация за услугата.

Обектите на услугата обикновено реализират един или повече интерфейси, чрез които клиентите взаимодействат с услугата. Например, услугата за търсене е услуга на Jini, а нейният обект на услугата е регистраторът на услугата. В register()метода ползвана от доставчици на услуги по време присъединят е обявен в ServiceRegistrarинтерфейса, които всички обслужване регистратор обекти изпълнение. Клиентите и доставчиците на услуги говорят с услугата за търсене чрез обекта на регистратора на услуги, като извикват методи, декларирани в ServiceRegistrarинтерфейса. По същия начин дисковото устройство би предоставило обект на услуга, който е реализирал известен интерфейс за услуга за съхранение. Клиентите ще търсят и взаимодействат с дисковото устройство чрез този интерфейс на услугата за съхранение.

Процесът на търсене

След като услугата се регистрира в услуга за търсене чрез процеса на присъединяване, тази услуга е достъпна за използване от клиенти, които заявяват тази услуга за търсене. За да изгради разпределена система от услуги, които ще работят заедно за изпълнение на някаква задача, клиентът трябва да намери и да привлече помощта на отделните услуги. За да намерят услуга, клиентите заявяват услуги за търсене чрез процес, наречен lookup.

За да извърши търсене, клиент извиква lookup()метода на обект на регистратор на услуги. (Клиент, подобно на доставчик на услуги, получава регистратор на услуги чрез процеса на откриване, както е описано по-рано в тази статия.) Клиентът предава като аргумент lookup()на шаблон за услуга, обект, който служи като критерии за търсене на заявката. Шаблонът за услуга може да включва препратка към масив от Classобекти. Тези Classобекти показват на услугата за търсене типа Java (или типовете) на обекта на услугата, желан от клиента. Шаблонът за услуга може също да включва идентификатор на услуга, който уникално идентифицира услуга и атрибути, които трябва да съвпадат точно с атрибутите, качени от доставчика на услугата в елемента на услугата. Шаблонът за услуга може също да съдържа заместващи символи за всяко от тези полета. Например заместващ знак в полето за идентификация на услугата ще съответства на всеки идентификатор на услугата. В lookup()метода изпраща шаблона за обслужване на справочната услуга, която изпълнява заявката и изпраща обратно нула до много обекти съвпадение на услуги. Клиентът получава препратка към съответстващите обекти на услуги като върната стойност на lookup()метода.

В общия случай клиентът търси услуга по тип Java, обикновено интерфейс. Например, ако клиентът трябва да използва принтер, той ще състави шаблон за услуга, който включва Classобект за добре познат интерфейс към услугите на принтера. Всички услуги за принтери биха внедрили този добре познат интерфейс. Услугата за търсене ще върне обект на услуга (или обекти), които са внедрили този интерфейс. Атрибутите могат да бъдат включени в шаблона за услуга, за да се ограничи броят на съвпаденията за такова търсене въз основа на тип. Клиентът ще използва услугата за принтер, като се позовава на методите на обекта на услугата, декларирани в добре познатия интерфейс на услугата за принтер.

Разделяне на интерфейс и изпълнение

Архитектурата на Jini внася обектно-ориентирано програмиране в мрежата, като позволява на мрежовите услуги да се възползват от една от основите на обектно-ориентираното програмиране: разделянето на интерфейса и внедряването. Например обект на услуга може да предостави на клиентите достъп до услугата по много начини. Обектът всъщност може да представлява цялата услуга, която се изтегля на клиента по време на търсене и след това се изпълнява локално. Алтернативно, обектът на услугата може да служи само като прокси за отдалечен сървър. Когато клиентът извика методи за обекта на услугата, той изпраща заявките през мрежата към сървъра, който прави реалната работа. Локалният сервизен обект и отдалечен сървър също могат да свършат част от работата.

Една важна последица от архитектурата на Jini е, че мрежовият протокол, използван за комуникация между обект на прокси услуга и отдалечен сървър, не трябва да бъде известен на клиента. Както е показано на фигурата по-долу, мрежовият протокол е част от изпълнението на услугата. Този протокол е частен въпрос, който се решава от разработчика на услугата. Клиентът може да комуникира с услугата чрез този частен протокол, защото услугата инжектира част от собствения си код (обекта на услугата) в адресното пространство на клиента. Инжектираният сервизен обект може да комуникира с услугата чрез RMI, CORBA, DCOM, някакъв домашно приготвен протокол, изграден върху сокети и потоци, или нещо друго. Клиентът просто няма нужда да се грижи за мрежовите протоколи,защото може да говори с добре познатия интерфейс, който обектът на услугата изпълнява. Обектът на услугата се грижи за всяка необходима комуникация в мрежата.

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

Заключение

Както видяхме в тази уводна колона, Jini се опитва да повиши нивото на абстракция за програмиране на разпределени системи, от ниво на мрежовия протокол до нивото на обектния интерфейс. При възникващото разпространение на вградени устройства, свързани към мрежи, много части от разпределена система могат да идват от различни доставчици. Jini прави ненужно доставчиците на устройства да се споразумеят за протоколи на мрежово ниво, които позволяват на техните устройства да си взаимодействат. Вместо това, доставчиците трябва да се споразумеят за Java интерфейси, чрез които техните устройства могат да взаимодействат. Процесите на откриване, присъединяване и търсене, осигурени от инфраструктурата за изпълнение на Jini, ще позволят на устройствата да се локализират помежду си в мрежата. След като се локализират, устройствата ще могат да комуникират помежду си чрез Java интерфейси.

Следващият месец

Въпреки че тази колона ще се фокусира главно върху това как да решавате специфични проблеми с програмирането с помощта на Jini, като например добавяне на GUI към услуга или превръщане на услугата в административна, следващия месец ще обсъдя реалните проблеми и перспективи на Jini.

Обсъждане на Джини

За да обсъдите материала, представен в тази статия, посетете: //www.artima.com/jini/jf/intro/index.html

Бил Венърс пише софтуер професионално от 14 години. Базиран в Силициевата долина, той предоставя софтуерни консултации и услуги за обучение и поддържа уеб сайт за разработчици на Java и Jini, artima.com. Автор е на книгата „Inside the Java Virtual Machine“, издадена от McGraw-Hill.

Научете повече за тази тема

  • Посетете Jini Community за информация относно процеса, чрез който ще бъдат дефинирани добре познатите интерфейси

    //www.jini.org

  • Страница за изтегляне на текущата версия на Jini (в Java Developer Connection)

    //developer.java.sun.com/developer/products/jini

  • Страница за изтегляне за JDK 1.2 FCS Release, на която се изпълнява текущата версия на Jini

    //java.sun.com/products/jdk/1.2/

  • Онлайн урок за Jini

    //pandonia.canberra.edu.au/java/jini/tutorial/Jini.xml

  • Онлайн бележки за лекции за курс за RMI и Jini

    //www.eli.sdsu.edu/courses/spring99/cs696/notes/index.html

  • "Мрежовата революция", Клайд Хигаки и Бил Венърс (Sun's Jini Technology Homepage, 1999). Авторите Клайд Хигаки и Бил Венърс предлагат редица сценарии, за да опишат как Джини може да се използва в реалния свят

    //java.sun.com/features/1999/01/jini_scenario.html

  • Връзки към ресурси на Jini

    //www.artima.com/jini/resources/index.html

  • Основната страница на Jini в Sun

    //java.sun.com/products/jini/

  • Общността на Jini, централният сайт за взаимодействие между подписалите лиценза за източник на Jini Sun Community

    //www.jini.org

  • Страница за изтегляне за всички спецификации на Jini

    //java.sun.com/products/jini/specs/

  • Архиви на пощенския списък на JINI-USERS. За да се абонирате за пощенския списък на JINI-USERS, изпратете имейл до [email protected]. Въведете в тялото на съобщениетоsubscribe jini-users

    //archives.java.sun.com/archives/jini-users.html

  • Често задавани въпроси за Jini за пощенския списък на JINI-USERS

    //www.artima.com/jini/faq.html

Тази история „Jini: Нова технология за мрежов свят“ първоначално е публикувана от JavaWorld.