Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

Описание подхода




Общие сведения

Основы RPC (Remote Procedure Call)

Передача данных по протоколу HTTP в режиме реального времени

Программирование SSL

Существует определенный порядок выполнения подключения библиотеки SSL, реализующей работу с сертификатами, к сокетам и посылки сертификатов. При программировании веб-серверов с использованием HTTPS сложность обычно скрыта, т.к. реализуется стандартным набором действий. Но эти действия также можно реализовать самостоятельно на языках C#, C++, используя такие библиотеки, как OpenSSL.

 

Контейнеры для паролей и ключей определяются в стандарте x.509. Для них существуют стандартные классы в.NET, Java, C++.

 


Данная тема рассмотрена в презентации, которая находится в приложении к данному конспекту («From Push Technology to the Real-Time Web.pdf»)

Основная задача – обеспечить вызов из прикладных программ подпрограмм в библиотеках, которые работают на других узлах/компьютерах, прозрачно для вызывающих программ.

Это попытка перенести взаимодействие между программой и библиотекой в сетевую среду, где программа работает на одном узле, а библиотека – на другом.

Любая подпрограмма имеет интерфейс, который составляет интерфейс библиотеки. Этот интерфейс подразумевает собой набор определений процедур с описанием наборов типов данных, которые используются и составляют часть библиотеки.

Идея разработчиков RPC: на основе интерфейса библиотеки автоматически генерируются две подпрограммы-программы, называемые «Stub» и «Skeleton».

«Stub» – это «заменитель библиотеки» для прикладной программы, который обладает в точности таким же интерфейсом, как интерфейс библиотеки (с таким же набором процедур и типов данных). Однако вместо реализации процедур, эти процедуры обращаются к библиотеке «RPC runtime», для того чтобы по протоколу TCP/IP установить соединение с сервером –> выполнить передачу по сети входных параметров -> дождаться получения результатов –> получить результаты –> изъять из входного потока ->передать программе. Это происходит с учетом того, кто библиотека как будто бы «физически» находится на компьютере рядом с прикладной программой, в том же самом адресном пространстве программы.

Передача данных из адресного пространства прикладной программы в адресное пространство на другом узле библиотеки выполняется с помощью так называемой «сериализации» и «десериализации» – записи в поток входных параметров, получения из потока выходных параметров и восстановления их в нужном виде/формате.

Кроме программы «Stub», «заменителя библиотеки», автоматически генерируется программа «Skeleton», то есть скелет в самой библиотеке. Внутри себя она использует средства, необходимые для получения входящих запросов через «RPC runtime», прослушивания входящих запросов, приема информации о запросах, чтения имени вызываемой подпрограммы, входных параметров, а также вызова подпрограммы через интерфейс библиотеки. Получив от библиотеки результаты, данные «сериализуются», записываются в выходной поток и возвращаются клиенту.

«Stub» и «Skeleton» генерируются автоматически по описанию интерфейса библиотеки. Поэтому задача программиста – «прикрутить» программу к «переходнику» («Stub»), а «Skeleton» связать с исходной библиотекой.

Изначально технология RPC создавалась для языка C. Со временем она стала поддерживаться в C++, «перекочевала» в другие языки. Однако, например, в C++ существовали заголовочные файлы и информация, расположенная в них, была недостаточной для того, чтобы построить по ней заголовки (невозможно однозначно определить, какие параметры являются входными, а какие – выходными).

 

char * str – это ссылка на буфер, в который данные надо вернуть, или это ссылка на буфер входных данных? Если параметр является входным, то данные идут от программы к библиотеке (от клиента к серверу), а если выходным – от сервера к клиенту. Если параметр и входной, и выходной, он должен передаваться от клиента к серверу и обратно.

 

Для решения описанной выше проблемы был придуман специальный язык, называемый IDL (Interface Definition Language, язык описания интерфейсов).

IDL является C-подобным языком и предназначен исключительно для описания интерфейсов. Указание метаинформации около параметров (например, [in] – входной параметр, [out] – выходной параметр) позволяло проанализировать семантику данных, чего не хватало в C/C++, и помогало сформировать необходимые заготовки. В современных языках, таких как C# и Java, такая необходимость отсутствует, т.к. в этих языках по интерфейсу можно определить, какие параметры являются входными, а какие – выходными.




Поделиться с друзьями:


Дата добавления: 2014-11-16; Просмотров: 376; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.008 сек.