Udostępnij za pomocą


Omówienie współdziałania

Interoperacyjność umożliwia zachowanie i wykorzystanie istniejących zasobów w kodzie niezarządzanym. Kod uruchamiany pod kontrolą środowiska uruchomieniowego języka wspólnego (CLR) jest kodem zarządzanym, a kod uruchamiany poza środowiskiem CLR jest niezarządzany. Składniki COM, COM+, C++, składniki ActiveX i interfejs API systemu Microsoft Windows to przykłady kodu niezarządzanego.

Platforma .NET umożliwia współdziałanie z kodem niezarządzanym za pośrednictwem usług wywoływania platformy, przestrzeni nazw System.Runtime.InteropServices, współdziałania z C++ oraz współdziałania z COM (międzyoperacyjność z COM).

Wywołanie platformy

Platform invoke to usługa, która umożliwia kodowi zarządzanemu wywoływanie funkcji niezarządzanych zaimplementowanych w dynamicznych bibliotekach dołączanych (DLL), takich jak interfejs API Windows firmy Microsoft. Lokalizuje i wywołuje wyeksportowaną funkcję, przesyłając jej argumenty (liczby całkowite, ciągi znaków, tablice, struktury itd.) przez granicę współdziałania w razie potrzeby.

Aby uzyskać więcej informacji, zobacz Korzystanie z niezarządzanych funkcji DLL i Jak używać wywołania platformy do odtwarzania pliku WAV.

Uwaga / Notatka

Środowisko uruchomieniowe języka wspólnego (CLR) zarządza dostępem do zasobów systemowych. Wywoływanie niezarządzanego kodu spoza środowiska CLR pomija ten mechanizm zabezpieczeń i w związku z tym stanowi zagrożenie bezpieczeństwa. Na przykład niezarządzany kod może wywoływać zasoby bezpośrednio w kodzie niezarządzającym, pomijając mechanizmy zabezpieczeń środowiska CLR. Aby uzyskać więcej informacji, zobacz Zabezpieczenia na platformie .NET.

Interop C++

Można użyć międzyoperacyjności języka C++, znanej również jako It Just Works (IJW), aby opakować natywną klasę C++. Interoperacyjność C++ umożliwia dostęp do kodu napisanego w języku C# lub innym języku .NET. Napiszesz kod języka C++, aby opakować natywną bibliotekę DLL lub składnik COM. W przeciwieństwie do innych języków platformy .NET język Visual C++ obsługuje współdziałanie, które umożliwia zarządzanie i niezarządzany kod w tej samej aplikacji, a nawet w tym samym pliku. Następnie skompilujesz kod C++, używając przełącznika kompilatora /clr w celu utworzenia zarządzanego zestawu. Na koniec dodasz odwołanie do zestawu w projekcie języka C# i użyjesz opakowanych obiektów tak samo jak w przypadku innych klas zarządzanych.

Uwidacznianie składników COM w języku C#

Można używać składnika COM w projekcie C#. Ogólne kroki są następujące:

  1. Znajdź składnik COM do użycia i zarejestruj go. Użyj regsvr32.exe, aby zarejestrować lub wyrejestrować bibliotekę DLL COM.
  2. Dodaj do projektu odwołanie do składnika COM lub biblioteki typów. Po dodaniu odwołania program Visual Studio używa Tlbimp.exe (Importer biblioteki typów), który przyjmuje bibliotekę typów jako dane wejściowe, aby stworzyć zestaw międzyoperacyjny .NET. Zestaw, nazwany również otoką wywoływaną przez środowisko uruchomieniowe (RCW), zawiera klasy zarządzane i interfejsy, które opakowują klasy COM i interfejsy, które znajdują się w bibliotece typów. Program Visual Studio dodaje do projektu odwołanie do wygenerowanego zestawu.
  3. Utwórz wystąpienie klasy zdefiniowanej w RCW. Utworzenie wystąpienia tej klasy powoduje utworzenie wystąpienia obiektu COM.
  4. Użyj obiektu tak samo, jak w przypadku innych obiektów zarządzanych. Gdy obiekt jest odzyskiwany przez kolektor śmieci, wystąpienie obiektu COM jest również zwalniane z pamięci.

Aby uzyskać więcej informacji, zobacz Uwidacznianie składników COM w programie .NET Framework.

Udostępnianie C# do COM

Klienci COM mogą korzystać z typów języka C#, które zostały prawidłowo udostępnione. Podstawowe kroki uwidaczniania typów języka C# są następujące:

  1. Dodaj atrybuty międzyoperacyjności w projekcie języka C#. Możesz uwidocznić zestaw COM, modyfikując właściwości projektu języka C#. Aby uzyskać więcej informacji, zobacz Okno dialogowe Informacje o zestawie.
  2. Wygeneruj bibliotekę typów MODELU COM i zarejestruj ją pod kątem użycia modelu COM. Możesz zmodyfikować właściwości projektu C#, aby automatycznie zarejestrować bibliotekę C# do interakcji z COM. Program Visual Studio używa Regasm.exe (narzędzia rejestracji zestawów), używając opcji wiersza polecenia /tlb, która przyjmuje zarządzany zestaw jako dane wejściowe, aby wygenerować bibliotekę typów. Ta biblioteka typów opisuje typy public w zestawie i dodaje wpisy do rejestru, aby klienci COM mogli tworzyć klasy zarządzane.

Aby uzyskać więcej informacji, zobacz Udostępnianie składników programu .NET Framework do modelu COM i Przykładowa Klasa COM.

Zobacz także