Редуктор заднего моста автосамосвала САТ 785С ...Изменение содержания железа в масле определялось по
Разработка моста между средами выполнения .NET и Objective-C.
description
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