Студопедия  
Главная страница | Контакты | Случайная страница

АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатика
ИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханика
ОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторика
СоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансы
ХимияЧерчениеЭкологияЭкономикаЭлектроника

Взаимодействие управляемого и неуправляемого кода в среде .NET на примере вызова функций Windows API.

Читайте также:
  1. I Справка по содержанию аргументов финансовых функций
  2. Microsoft Excel. Назначение и синтаксис функций ВПР, ИНДЕКС.
  3. Microsoft Excel. Назначение и синтаксис функций ДАТА, ВРЕМЯ, ТДАТА, СЕГОДНЯ.
  4. V2: Мочевой синдром (на примере острого гломерулонефрита, хронического гломерулонефрита, осторого пиелонефрита, хронического пиелонефрита)..
  5. V2: Отечный синдром (на примере хронической сердечной недостаточности).
  6. V2: Синдром болей в животе (на примере хронического гастрита, язвенной болезни, дискинезии желчевыводящих путей, хронического холецистита, хронического панкреатита).
  7. V2:Профилактика девиантного поведения в молодежной среде. Социально-педагогическая работа с неформальными молодежными группами и объединениями
  8. VII. Разделите следующие явления на общие и частичные нарушения функций мозга
  9. Windows 1.0
  10. Windows Millennium Edition

У.NET Framework масса преимуществ перед другими платформами разработки.

Однако лишь немногие компании решатся перепроектировать и заново реализовать свой код. Поэтому Microsoft встроила в CLR механизм, допускающий наличие в приложении управляемой и неуправляемой частей. CLR поддерживает три сценария взаимодействия.

• Управляемый код может вызывать неуправляемую функцию из DLL

Это обеспечивается механизмом P/Invoke (от Platform Invoke). Как-никак многие типы, определенные в FCL, сами вызывают функции, экспортируемые библиотеками Kernel32.dll, User32.dll и др. Во многих языках реализован механизм, упрощающий вызов неуправляемых функций, содержащихся в DLL, из управляемого кода. Так, С#- или Visual Basic-приложение может вызвать функцию CreateSemaphore, экспортируемую Kernel32.dll.

• Управляемый код может использовать существующий СОМ-компонент (сервер)

Многие компании работают с многочисленными неуправляемыми СОМ-компонентами. Используя библиотеку типов компонента, можно создать управляемую сборку, описывающую СОМ-компонент. Управляемый код может обращаться к типу в такой управляемой сборке, как к любому управляемому типу. Framework SDK. Если у вас нет библиотеки типов или нужен больший контроль над тем, что сгенерировала утилита Tlblmp.exe, вы можете вручную создать тип (в исходном коде), который CLR будет использовать для корректного взаимодействия. Например, можно задействовать СОМ-компоненты DirectX в С#- или Visual Basic-программах.

• Неуправляемый код может использовать управляемый тип (сервер)

Масса существующего неуправляемого кода требует наличия СОМ-компонентов для своей нормальной работы. Гораздо проще реализовать их, используя управляемый код: тогда не нужно иметь дело с подсчетом ссылок и интерфейсами. Например, можно создать элемент управления ActiveX или расширение оболочки на С# или Visual Basic.

В дополнение к этим трем сценариям компилятор Microsoft Visual C++ (версия 13) поддерживает новый ключ командной строки /clr, указывающий компилятору, что нужно генерировать IL-код, а не собственные команды х8б. Вы можете перекомпилировать имеющийся С++-код с этим новым ключом. Новый код потребует для своего выполнения CLR, и теперь вы сможете его изменить, добавляя возможности, предлагаемые CLR.

Ключ /clr не позволит скомпилировать в IL методы, содержащие встроенные ассемблерные команды (с ключевым словом asm), принимающие переменное число аргументов, вызывающие setjmp или содержащие встроенные процедуры (такие как enable, disable,.ReturnAddress и _AddressOfReturnAddress). Полный список конструкций, которые компилятор C++ не сможет скомпилировать в IL. Когда компилятор не может скомпилировать метод в IL, он компилирует его в х8б, так что приложение по-прежнему работает. Хотя создаваемый IL-код является управляемым, о данных этого сказать нельзя, т. е. для объектов данных не выделяется память в управляемой куче и они не утилизируются сборщиком мусора. По сути, для типов, являющихся данными, не создаются метаданные, и имена методов таких типов искажаются.

 




Дата добавления: 2015-01-30; просмотров: 40 | Поможем написать вашу работу | Нарушение авторских прав

1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | <== 24 ==> | 25 |


lektsii.net - Лекции.Нет - 2014-2024 год. (0.006 сек.) Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав