In my opinion, xRM Linq library component seems to be the best third party component to access CRM. The API allows easy authentication with OnPremise and Online. The component also allows custom entities to be added to its library; for example, you can create a custom entity called join. These custom entities support many to many, one to many, and many to one properties. The flexibility of the custom entity allows developers to create a portal that can service the customers more efficiently; no matter what customer requires.