If possible, probably the best thing to be using for this would be:
Windows Communication Foundation (WCF)
WCF seems to be (slowly but surely) replacing .NET remoting, and once you have a set of classes/functionality that is written to use WCF (which mostly involves decorating your classes/methods with attributes and usage of interfaces to define contracts - all standard OOP best practises anyway) you can expose that functionality over a number of different communication mechanisms, all of which can be controlled via simple config files.
Windows Communication Foundation (WCF) provides a unified framework for rapidly building service-oriented applications that makes it easy to build and consume secure, reliable, and transacted Web services.
WCF’s single programming model unifies the capabilities in ASMX, WSE, Remoting, COM+, and MSMQ; therefore developers need to learn only one programming model.
In addition, WCF services now offer more design flexibility by supporting architecture such as Representational State Transfer (REST), JavaScript Object Notation (JSON), and Plain Old XML (POX) encoding.
You can specify binary-based communication mechanisms for other .NET-based applications that may need to talk to your services, thereby keeping the amount of data flowing over the "wire" as minimal as possible, whilst at the same time, exposing those exact same services over SOAP using XML to enable maximum portability and cross-platform access.
A good starting point for WCF, and it's benefits, is:
Introduction to Building Windows Communication Foundation Services