Санкт-Петербургский Государственный Университет Математико-механический факультет





НазваниеСанкт-Петербургский Государственный Университет Математико-механический факультет
страница5/13
Дата публикации16.08.2013
Размер0.61 Mb.
ТипДипломная работа
100-bal.ru > Информатика > Дипломная работа
1   2   3   4   5   6   7   8   9   ...   13

Abstract Syntax Notation One


Состоит из двух разных частей: первая определяет стандарт записи сообщений, вторая - стандарт кодирования и декодирования.

Ниже приводится пример протокола (лист.2), описанного с помощью этого стандарта.Work DEFINITIONS ::= BEGIN

Human ::= SEQUENCE {

name IA5String,

age INTEGER

}

Person ::= SEQUENCE {

hasWork BOOLEAN

}

END

Листинг 2. Пример сообщений в ASN.1

Из данного примера видно, что дизайн языка не является правильным, поскольку сильно отличается от описания структур и классов в популярных современных языках программирования, таких как C#, Java, C++, Objective C, Java. Также он является избыточным.

В данном стандарте содержится несколько видов кодирования.

  • Формат CER , DER - кодирования очень близкие к Hessian. Являются избыточными, хранят в себе описание типов. Отличаются друг от друга правилами хранения длины: CER хранит завершающий октет, DER хранит длину.

  • Формат BER – отличается от CER и DER тем, что может поддерживать внутри себя несколько типов кодирования. (хранение длины может быть разным)

  • Формат XER – кодирование с помощью XML, нужно для возможности чтения сообщений людьми, неоптимальное.

  • Формат PER (Packed Encoding Rule) – для этого кодирования важно знать структуру передаваемых сообщений. Является компактным. Поддерживает два режима: с выравниванием по байтам и без. Умеет кодировать информацию в битовые массивы.

В данной технологии описаны только стандарты. Стандарт же отображения на конкретный язык программирования не стандартизирован. Стандарт является сложным и для его использования требуется приобретение ASN.1 компилятора. Если же есть отображение в несколько языков, то требуется несколько компиляторов. Таким образом, эта технология является слишком сложной для собственной реализации, покупка же не целесообразна.

Etch


Является независимым от платформы и языка, свободнорасширяемым решением. В данный момент существуют отображения в языки Java, C, C#, Go, JavaScript, Python. Позволяет определять сервисы, сообщения, создавать простые и быстрые приложения.

Для описания сервисов был создан специальный язык. Пример сервиса из такого языка приведен в листинге (лист.3).

module org.apache.etch.examples.helloworld
service HelloWorld {

struct User (

int id,

string name

)
exception UserUnknownException (

string mes

)
@Direction(Server)

string sayHello(User toWhom) throws UserUnknownException
}

Листинг 3. Пример сервиса в Etch
Из примера видно, что синтаксис языка очень похоже на синтаксис языка Java. Кроме того, разработчики проводят тестирование производительности и сравнение именно на Java. В данный момент поддержка языка Objective C не реализована и её нет в планах на ближайшее будущее, что является проблемой при разработке приложений под платформу iOS.

Разработчики добились ускорения почти в 2 раза по сравнению с RMI и более чем в 5 раз по сравнению с Corba. Для тестирования был выбран сервис складывающий два числа.

Таким образом, данное решение является хорошим, поскольку обеспечивает должную простоту при нужных возможностях, но пока что является неполным и незавершенным. В данный момент реализованными протоколами являются бинарный и xml. Однако, как и некоторые упомянутые выше форматы, бинарный формат etch является избыточным, потому что хранит в себе теги, определяющие тип содержимого, что можно избежать, если заранее знать структуру. Имена структур передаются не строкой, а 32битным хешем от строки, поэтому достигается большая компактность, но отсутствует возможность переименования.

Thrift


Предлагает решение для таких языков, как C++, C#, Java, Python, Php, Ruby, Erlang, Perl, Haskell, Objective C, JavaScript, SmallTalk, OCaml, AS3.

В данном решении присутствует ряд возможностей, которые не поддержаны: наследование, циклические структуры, null как результат вызова, то есть если пользователь хочет вернуть null метода, то он должен сделать обёртку, некий маркер, который будет означать пустой результат.

Поддержано три основных метода кодирования: JSON, binary и compact. Однако компактный метод кодирования в данный момент реализован лишь для нескольких платформ и не имеет стандарта, на сайте разработчиков можно предложить свою версию алгоритма, который сможет уменьшить размер сообщений.

В примере (лист.4) приведен пример описания структуры.

struct Work {

1: i32 num1 = 0,

2: i32 num2,

3: Operation op,

4: optional string comment,

}

Листинг 4. Пример структуры в Thrift

Из данного примера видно, что возможны опциональные поля. Также можно указывать номера полей, чтобы в дальнейшем при добавлении новых не происходило ошибок. Данный момент является очень тонким: сохранение номеров позволяет добиться версионирования, но заметно увеличивает размер передаваемых сообщений, так как при кодировании также нужно закодировать номер. Заметим, что при удалении поля устаревшие клиенты чаще всего будут выдавать ошибку, если им необходимо это поле. При добавлении же нового поля в конец структуры ошибок не будет, так как на устаревших клиентах процесс разбора сообщения может просто пропустить лишние поля. Поэтому в данной работе было решено не передавать дополнительную информацию, как это делает Thrift.

Как было описано во введении, в рамках данного проекта важна возможность интеграции с GWT. В данный момент уже существует возможность добиться интеграции двух этих технологий, однако, это сложная задача и предлагаемые решения не являются универсальными, также нет гарантии качества, поэтому при изменении одной из технологий может оказаться, что существующая интеграция больше не работает.

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

Однако его использование неудобно в рамках данного проекта, поскольку в нём нет циклических структур, существуют ограничения на возвращаемые значения, решение является не расширяемым.
1   2   3   4   5   6   7   8   9   ...   13

Похожие:

Санкт-Петербургский Государственный Университет Математико-механический факультет iconСанкт-Петербургский государственный университет Математико-механический факультет
Министерством образования и науки Российской Федерации. В 2012-2013 учебном году литературное образование в школе на базовом уровне...
Санкт-Петербургский Государственный Университет Математико-механический факультет iconСанкт-Петербургский государственный морской технический университет...
Рецензия на книгу: С. А. Остроумов "Биотический механизм самоочищения пресных и морских вод: элементы теории и приложения" (Москва,...
Санкт-Петербургский Государственный Университет Математико-механический факультет iconМатематико-механический факультет
Государственное образовательное учреждение высшего профессионального образования
Санкт-Петербургский Государственный Университет Математико-механический факультет icon«Санкт-Петербургский государственный университет» (СПбГУ) Исторический факультет утверждаю
Краснодарский государственный историко-археологический музей-заповедник им. Е. Д. Фелицына
Санкт-Петербургский Государственный Университет Математико-механический факультет iconОбзор современных систем управления бизнес-процессами
Агапова Татьяна, математико-механический факультет, 2 курс
Санкт-Петербургский Государственный Университет Математико-механический факультет iconПсихическое здоровье в Германии и России: Клиническая и исследовательская инициатива
Санкт-Петербургский научно-исследовательский Санкт-Петербургский государственный университет
Санкт-Петербургский Государственный Университет Математико-механический факультет iconМатематико-механический факультет asmpy ассемблер python compiled (*. pyc ) файлов
Государственное образовательное учреждение высшего профессионального образования
Санкт-Петербургский Государственный Университет Математико-механический факультет iconСанкт-петербургский Государственный университет Восточный факультет Филиппов Е. А. Аннотация
Метадическая разработка интегрированного урока с использованием возможностей интерактивной доски
Санкт-Петербургский Государственный Университет Математико-механический факультет iconПравительство Российской Федерации Санкт Петербургский государственный...
Муниципальное автономное образовательное учреждение «Средняя общеобразовательная школа №21»
Санкт-Петербургский Государственный Университет Математико-механический факультет iconСанкт-Петербургский центр научно-технической информации «Прогресс»,...
Особенности размещения государственного заказа в связи с изменениями в федеральном
Санкт-Петербургский Государственный Университет Математико-механический факультет icon«Санкт-Петербургский государственный университет» (СПбГУ) Исторический факультет утверждаю
Учебно-методический комплекс по дисциплине «Биохимия молока и мяса» составлен на основе
Санкт-Петербургский Государственный Университет Математико-механический факультет iconПрограмма по формированию навыков безопасного поведения на дорогах...
Санкт-Петербургский Государственный Политехнический Университет, Факультет Иностранных Языков
Санкт-Петербургский Государственный Университет Математико-механический факультет iconРоссийской Федерации Санкт Петербургский государственный университет Физический факультет
Цель изучения дисциплины: Обучение магистрантов аналитическим методам анализа структуры и эволюции нелинейных полей
Санкт-Петербургский Государственный Университет Математико-механический факультет iconОсновная образовательная программа (ооп) бакалавриата, реализуемая...
«Санкт-Петербургский государственный университет телекоммуникаций им проф. М. А. Бонч-Бруевича» (СПбгут) по направлению подготовки...
Санкт-Петербургский Государственный Университет Математико-механический факультет iconОсновная образовательная программа (ооп) бакалавриата, реализуемая...
«Санкт-Петербургский государственный университет телекоммуникаций им проф. М. А. Бонч-Бруевича» (СПбгут) по направлению подготовки...
Санкт-Петербургский Государственный Университет Математико-механический факультет iconСанкт-Петербургский государственный университет Факультет философии и политологии
Контрольная работа по дисциплине «Культура речи и деловое общение» является допуском студента заочной формы обучения к зачету


Школьные материалы


При копировании материала укажите ссылку © 2013
контакты
100-bal.ru
Поиск