1 / 20

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

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

dolf
Télécharger la présentation

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

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Выпускная квалификационная работа Разработка моста между средами выполнения .NET и Objective-C. Выполнил: Гришуль Е.С. Группа 6120 Научный руководитель: Павловская Т.А.

  2. Постановка задачи Objective-C .NET Mac OS X Windows Мост Mac OS Linux Unix …

  3. Выбор ОС • ядро UNIX • Платформы • x86/PPC • iPhone • Большая аудитория • Быстро растущий рынок ПО • Большое количество Open Source программ и средств разработки

  4. Аудитория • Дизайнеры • Художники • Режиссеры • Верстальщики • Музыканты • Писатели • Пользователи iPhone и др.

  5. Objective-C

  6. Недостатки Objective-C • Отсутствие стандарта • GCC - единственный компилятор Objective-C кода • Непродуманные метаданные • Их недостаточно! • Недостающие метаданные можно узнать только из исходных кодов либо с помощью методов обратного проектирования • Некачественный API • Нет “нормальной” возможности создавать протоколы, свойства • Отсутствие возможности выгрузки кода(!) • Отсутствует раскрутка стека при исключениях • Отстутствие детальной документации • Отсутствие кроссплатформенной библиотеки • Проблемы, аналогичные “Dll Hell” • Что ведет к бинарной несовместимости между версиями • Отсутствие верификации кода • Плохое зрительное восприятие кода

  7. Интеграция ?

  8. С чем связать Objective-C? • Как написать быстрее? • Как написать надежнее? • Как отлаживать? • Как предотвращать потенциальные ошибки? • Как оградить других?

  9. Аналоги • Cocoa# • Крайне плохая архитектура и реализация • Не поддерживается много лет • Ручная работа по созданию оберток • Реализованных оберток очень мало • Очень большое потребление памяти • Очень сильно нагружает сборщик мусора • Любое исключение приводит к падению • Крайне медленные вызовы • Monobjc • Ручная работа по созданию оберток • Большое потребление памяти • Сильно нагружает сборщик мусора • Любое исключение приводит к падению • Mobjc • Ручная работа по созданию оберток • Реализованных оберток очень мало • Нагружает сборщик мусора • Не поддерживает списки аргументов переменной длины • Медленные вызовы

  10. Классы-обертки • Полноценные .NET объекты • Типы-значения • Не нагружают GC • Прозрачный маршалинг • Примитивных значений • Оберточных значений • Быстрые managed-unmanaged переходы • Совместимые сигнатуры • Аналогичная иерархия • Интеграция с механизмом подсчета ссылок • Преобразование исключений • Обработка списка параметров переменной длины .NET class class Proxy Proxy Proxy Objective-C class class class

  11. Экспортирование • Обратный вызов • Прозрачный маршалинг • Быстрые и надежные переходы • Автоматический отлов и преобразование исключений • Совмещение с схемуправления памятью • Отсутствие фиксирования .NET объектов .NET Objective-C X86/PPC asm proxy Transition proxy class

  12. Генерирование оберток • Написание руками • Mac OS 10.4 Tiger ~20000 методов • Mac OS 10.5 Leopard ~23000 методов • Рутинная однообразная работа • Человеческий фактор • Автоматическая кодогенерация • Недостаток метаинформации • Быстрый и эффективный рефакторинг • Выше поддерживаемость исходников

  13. Архитектура моста Скрыто от пользователя Для пользователя Генератор оберток Ядро Анализатор среды выполнения Анализатор заголовков Прослойка совместимости с Mac OS X 10.4 Необработанные Обертки Обертки Weaver

  14. Используемые средства • Генератор оберток использует: • NRefactory – лексер и парсерC# • NObjectiveAST – лексер и парсерObjective-C • Cecil – работа с CIL и метаданными • Ядро использует: • Mach-O среда • NUnit– модульное тестирование • Весь проект использует: • NAnt - система сборки

  15. Результаты Замеров производительности

  16. Результаты Замеров производительности

  17. Сравнение объемов исходного кода

  18. Смета затрат

  19. Расчет заработной платы

  20. Резюме • Превосходство над аналогами • По производительности • По потреблению памяти • По безопасности • По функциональности • По простоте поддержания исходников • По спектру поддерживаемых платформ • По использованным технологиям • Легкость расширения • Автоматическая генерация оберток • Продуманная архитектура • Привлекательность для пользователя моста • Высокая гибкость и быстродействие • Мощная система трассировки • LGPL лицензия • Упрощение портирования имеющихся .NET приложенийс Windows на Mac OS

More Related