Most applications connect to an Ethereum Node through RPC, using a library like Web3.js and Nethereum. That introduces a need to deploy a full node side-by-side with the application, be it on the server or the user's machine, and communicate through sockets through loop-back adaptor.
This practice seems surprising to me - obvious alternative is to package a client as part of my server application, and have them run in-process. Do Ethernet clients have an API to be used as a library and is considered appropriate and "good design"? I mean either running them as part of back-end or in full-fat desktop client.