|
|
Маршалинг данных между управляемым и неуправляемым кодом
|
|
Страница 1 из 10 Посмотрим правде в глаза: нет в мире совершенства. Мало кто при разработке использует только управляемый код. А между тем, тяжким грузом лежат устаревшие неуправляемые приложения, с которыми приходится мириться. Есть ли способ интегрировать проекты, в которых задействован как управляемый, так и неуправляемый код? Какой вид принимает этот способ: вызов неуправляемого кода из управляемого приложения или вызов управляемого кода из неуправляемого приложения?
К счастью, взаимодействие в платформе Microsoft® .NET позволяет открыть канал между управляемым и неуправляемым кодом, и немаловажную роль в этом подключении играет маршалинг: он обеспечивает обмен данными между управляемым и неуправляемым кодом (см. рис. 1). Выполнение маршалинга данных между управляемым и неуправляемым кодом средой CLR определяется многими факторами, в частности атрибутами [MarshalAs], [StructLayout], [InAttribute], [OutAttribute], равно как и от некоторыми ключевыми словами языка, например out и ref в C#. Рис. 1 Заполнение разрыва между машинным и управляемым кодом Поскольку этих факторов весьма много, правильный маршалинг данных может оказаться сложной задачей, требующей знакомства со многими деталями как в неуправляемом, так и в управляемом коде. В этой статье мы коснемся основополагающих, но неясных вопросов, возникающих при повседневной работе с маршалингом. Мы оставим в стороне такие темы, как пользовательская настройка маршалинга, маршалинг сложных структур и т. п., однако, когда вы твердо освоите основы, вы сможете перейти и к более сложным процедурам.
|
|
-
.NET Framework,
Оптимизация сериализации в .NET
Приводятся код и методы, позволяющие разработчикам оптимизировать сериализацию данных....
-
.NET Framework,
Плавающая точка в .NET - часть 1: принципы и форматы
Данная статья представит основные принципы арифметических операций с плавающей точкой: числовые форматы, точности и достоверность, погрешности округления. Также в статью включено обсуждение типов плавающей запятой в .NET....
-
.NET Framework,
JIT-оптимизации
Компилятор .NET Just-In-Time Compiler (JIT) считается многими одним из основных преимуществ производительности CLR по сравнению с JVM и другими управляемыми средами, которые используют двоичный код, скомпилированный компилятором JIT. ...
-
.NET Framework,
Инъекции CLR: замена методов во время выполнения
Многие из нас, наверняка, были заинтересованы в том, как работает универсальный язык CLR. Одной из наиболее интересных вещей является динамический компилятор JIT (Just In Time Compiler). Мы рассмотрим то, как JIT компилирует MSIL и создадим утилиту, которая позволяет программным образом заменить любой метод (JIT) другим во время выполнения. Мы также создадим отладочную утилиту, которая прехватывает JIT-вызовы и выводит в консоль информацию о диагноcnbrt....
-
.NET Framework,
Оптимизация запуска приложений .NET
Ждать, пока приложение запустится, неприятно для многих пользователей, поэтому ускорение запуска приложений клиентов может значительно улучшить первое впечатление от вашей работы. И так как скорость запуска имеет значение, следует знать факторы, которые на нее влияют, чтобы избежать распространенных ошибок....
-
.NET Framework,
Создание компилятора языка для .NET Framework
Эксперты по компиляторам являются знаменитостями в компьютерном мире. Я видел, как Андерс Хейльсберг (Anders Hejlsberg) представлял презентацию на конференции разработчиков Professional Developers Conference и когда он сошел со сцены, его встретила целая орда мужчин и женщин, просящих поставить автограф на книгу, или сняться на фотографии вместе с ними. Люди, посвящающие свое время изучению и пониманию всех тонкостей лямбда-выражений, систем типов и языков сборки, кажутся своего рода носителями ...
-
.NET Framework,
IronPython как движок для макросов в .NET приложениях
Подозреваю, многие из вас задумывались — как можно в .NET приложение добавить поддержку макросов — чтобы можно было расширять возможности программы без ее перекомпиляции и предоставить сторонним разработчикам возможность легко и просто получить доступ к API вашего приложения? В статье рассмотрено, как в качестве основы для выполнения макросов использовать IronPython — реализацию языка Python на платформе .NET....
-
.NET Framework,
Xml сериализация в .Net Framework 2.0
Xml широко используется в .Net приложениях, и .Net framework предоставляет богатые возможности по работе с Xml. Среди них: поддержка Xml DOM (System.Xml.XmlDocument), последовательное чтение - запись Xml, поддержка xPath и xQuery, поддержка XSLT, богатые возможности DataSet по работе с Xml и, наконец, Xml сериализация. ...
|
|
|