Can I access legacy COM components from my application?

Yes, but with restrictions.

You can generally freely access legacy COM components from within your application. However, if your component is SingleThreaded, a restriction is that it cannot be accessed from within the service code. This is because the service-side library has a multi-threaded architecture and this will conflict with your component's SingleThreaded attribute. The obvious symptom that you will notice is that any calls into this type of component will be blocked and never return; that is, your service will appear to hang.

You can, however, use components marked as STA (single-threaded apartment) or MTA (multi-threaded apartment/free-threaded) from your service code without any issues.