The important goals of .NET during its development was to promote interoperability with existing technologies. .NET interoperability comes in three types:Interoperability of .NET code with COM components (called as COM interop) Interoperability of COM components with .NET (called .NET interop) Interoperability of .NET code with Win32 DLLs (called P/Invoke) .NET runtime allows us to use legacy COM code from .NET components. We can call it backward compatibility. In the same way, .NET runtime also provides us forward compatibility, means accessing .NET components from COM components.