|Lib||Reusable component||Statically link i.e. links at linking time.|
|Dll||Explicit linking||For each and every client there should be separate copy of dll.|
|COM||1. Location transparency
2. out of proc (Host is hosting the component and client is communicating with host)||Useful only when on the same machine and it doesn’t work on distributed environment.|
|DCOM||Works well on distributed environment using Microsoft Transaction Server(MTS)|| Not reliable (If server is down and request comes to the server then the request is not handled anywhere.|
3. Object pooling
4. JIT invocation
5. Can be created using .net and C++.
||1. If programmer tries to create COM+ component using C++ then it requires writing a lot of code.
2. Communication can be done using TCP and supported protocol is binary only.
|Remoting||Supports TCP/binary, http/xml and IPC using named pipe||Only clients created in .net can use remoting|
|Web Service||1. Platform independent
2. Only host on IIS
3. Security can be provided using web service enhancements||Supports only http protocol and xml data format.|
|WCF||Unified model of creation of distributed environments|