Разработка моста между средами выполнения .NET и Objective-C.

Post on 29-Jan-2016

56 views 0 download

description

Выпускная квалификационная работа. Разработка моста между средами выполнения .NET и Objective-C. Выполнил: Гришуль Е.С. Группа 6120 Научный руководитель: Павловская Т.А. Постановка задачи. Objective-C. .NET. Mac OS X. Windows. Мост. Mac OS. Linux. Unix. …. Выбор ОС. ядро UNIX - PowerPoint PPT Presentation

Transcript of Разработка моста между средами выполнения .NET и Objective-C.

РАЗРАБОТКА МОСТА МЕЖДУ СРЕДАМИ

ВЫПОЛНЕНИЯ .NET И OBJECTIVE-C.

Выпускная квалификационная работа

Выполнил: Гришуль Е.С.Группа 6120

Научный руководитель: Павловская Т.А.

ПОСТАНОВКА ЗАДАЧИ

.NET Objective-C

Mac OS X

Windows

Linux

Unix

Mac OS

Мост

ВЫБОР ОС•ядро UNIX•Платформы

• x86/PPC • iPhone

•Большая аудитория•Быстро растущий рынок ПО•Большое количество Open Source программ и средств разработки

АУДИТОРИЯ

Дизайнеры Художники Режиссеры Верстальщики Музыканты Писатели

Пользователи iPhone и др.

OBJECTIVE-C

Приложение может быть написано на..

Python

Сервисы ОС доступны с помощью…

C/C++

НЕДОСТАТКИ OBJECTIVE-C Отсутствие стандарта

GCC - единственный компилятор Objective-C кода

Непродуманные метаданные Их недостаточно! Недостающие метаданные можно узнать только из исходных кодов либо с

помощью методов обратного проектирования

Некачественный API Нет “нормальной” возможности создавать протоколы, свойства Отсутствие возможности выгрузки кода(!) Отсутствует раскрутка стека при исключениях Отстутствие детальной документации

Отсутствие кроссплатформенной библиотеки Проблемы, аналогичные “Dll Hell”

Что ведет к бинарной несовместимости между версиями

Отсутствие верификации кода Плохое зрительное восприятие кода

ИНТЕГРАЦИЯ

?

С ЧЕМ СВЯЗАТЬ OBJECTIVE-C?

•Как написать быстрее?•Как написать надежнее?•Как отлаживать?•Как предотвращать потенциальные ошибки?•Как оградить других?

АНАЛОГИ Cocoa#

Крайне плохая архитектура и реализация Не поддерживается много лет Ручная работа по созданию оберток Реализованных оберток очень мало Очень большое потребление памяти Очень сильно нагружает сборщик мусора Любое исключение приводит к падению Крайне медленные вызовы

Monobjc Ручная работа по созданию оберток Большое потребление памяти Сильно нагружает сборщик мусора Любое исключение приводит к падению

Mobjc Ручная работа по созданию оберток Реализованных оберток очень мало Нагружает сборщик мусора Не поддерживает списки аргументов переменной длины Медленные вызовы

КЛАССЫ-ОБЕРТКИ

.NET

Objective-C

Proxy Proxy Proxy

class

class

class

classclass

•Полноценные .NET объекты• Типы-значения• Не нагружают GC

•Прозрачный маршалинг• Примитивных значений• Оберточных значений

•Быстрые managed-unmanaged переходы•Совместимые сигнатуры•Аналогичная иерархия•Интеграция с механизмом подсчета ссылок•Преобразование исключений•Обработка списка параметров переменной длины

.NET

Objective-C

X86/PPC asm

Transition proxy

ЭКСПОРТИРОВАНИЕ Обратный вызов Прозрачный маршалинг Быстрые и надежные переходы Автоматический отлов и преобразование исключений Совмещение с схем управления памятью Отсутствие фиксирования .NET объектов

classproxy

ГЕНЕРИРОВАНИЕ ОБЕРТОК

Написание рукамиMac OS 10.4 Tiger ~20000 методовMac OS 10.5 Leopard ~23000 методовРутинная однообразная работаЧеловеческий фактор

Автоматическая кодогенерацияНедостаток метаинформацииБыстрый и эффективный рефакторингВыше поддерживаемость исходников

Скрыто от пользователя Для пользователя

АРХИТЕКТУРА МОСТА

Генератор оберток

Ядро

Weaver Обертки

Необработанные Обертки

Анализатор среды выполнения

Анализатор заголовков

Прослойка совместимости с Mac OS X 10.4

ИСПОЛЬЗУЕМЫЕ СРЕДСТВА Генератор оберток использует:

NRefactory – лексер и парсер C#NObjectiveAST – лексер и парсер Objective-CCecil – работа с CIL и метаданными

Ядро использует:Mach-O средаNUnit – модульное тестирование

Весь проект использует:NAnt - система сборки

РЕЗУЛЬТАТЫ ЗАМЕРОВ ПРОИЗВОДИТЕЛЬНОСТИ

Вы

зо

во

в м

ето

до

в

в с

ек

0 2000000 4000000 6000000 80000007440476

1729056

125747

52996

Cocoa#MobjcMonobjcNobjective

Со

зд

ани

е о

бъ

ект

ов

в с

ек

0 1000000 2000000 3000000 4000000 50000004870920

162561

68299

12265

Cocoa#MobjcMonobjcNobjective

По

тр

еб

ле

ни

е п

ам

яти

(K

iB)

0 5000 10000 15000 20000 25000 30000

428 149521380 28516Cocoa#MobjcMonobjcNObjective

РЕЗУЛЬТАТЫ ЗАМЕРОВ ПРОИЗВОДИТЕЛЬНОСТИ

Вы

зо

во

в м

ето

да

с

пе

ре

ме

нн

ым

чи

сл

ом

а

ргу

ме

нто

в в

се

к

0 5000 10000 15000 20000 25000 30000 35000

3341220612

2402Cocoa#MonobjcNobjective

За

щи

ще

ны

х в

ызо

во

в

в с

ек

1748284944

1

MobjcNobjective

Пр

ео

бр

азо

ва

ни

е

ис

клю

че

ни

й в

се

к

0 5000 10000 15000 20000 25000 30000 35000

331211375 Mobjc

Nobjective

СРАВНЕНИЕ ОБЪЕМОВ ИСХОДНОГО КОДА

Кол

ичество о

берток

(шт)

0 500 1000 1500 2000 2500

23001400

1635

Cocoa#MobjcMonobjcNobjective

Разм

ер и

сход

ны

х

файл

ов (

KiB

)

0 5000 1000015000200002500030000350004000045000

4025812818464205Cocoa#MobjcMonobjcNObjective

СМЕТА ЗАТРАТ№

п.п.

Статьи расходов Условные

обозначения

Затраты по

статьям (руб.)

1

1

Амортизационные отчисления Соб1062

2

2

Заработная плата Сос333333

3

3

Дополнительная заработная плата Сдоп33333,3

4

4

Отчисления в социальные

внебюджетные фонды

Ссф19199

5

5

Прочие затраты Сп382927

6

6

Накладные расходы Сн233333

Итого: 636262

РАСЧЕТ ЗАРАБОТНОЙ ПЛАТЫ

Состав работ Трудоемкость Суммарная основная заработная

плата

Знакомство с предметной областью 20 9 523 р.

Подготовка ТЗ 5 2 380 р.

Проектирование архитектуры

библиотеки

101 48 095 р.

Разработка библиотеки 350 166 666 р.

Разработка тестового приложения 15 7 142 р.

Рефакторинг 80 38 095 р.

Отладка 100 47 619 р.

Тестирование 14 6 666 р.

Подготовка экономической части 5 2 380 р.

Подготовка части по безопасности

жизнедеятельности

5 2 380 р.

Оформление пояснительной записки

и графического материала

5 2 380 р.

Консультации с руководителем 8 1664 р.

Итого: 700 333 333 р.

РЕЗЮМЕ Превосходство над аналогами

По производительности По потреблению памяти По безопасности По функциональности По простоте поддержания исходников По спектру поддерживаемых платформ По использованным технологиям

Легкость расширения Автоматическая генерация оберток Продуманная архитектура

Привлекательность для пользователя моста Высокая гибкость и быстродействие Мощная система трассировки LGPL лицензия Упрощение портирования имеющихся .NET приложений с

Windows на Mac OS