Проще говоря, Remoting имеет тесно связанные компоненты, а SOA имеет слабосвязанные компоненты.
В Remoting это просто расширение стиля разработки процедур вызова, обычно встречающегося в .Net или Java (или C ++ и т. Д.), Расширенное для учета удаленных вызовов процедур. Обе стороны (клиент и сервер), как правило, построены на одной и той же платформе, и вызовы не предназначены для взаимодействия с другими платформами.
В SOA сервисы создаются с намерением, чтобы вызывающие их клиенты не могли быть построены на одной платформе. Как правило, SOA-решение построено на идее, что вызов между клиентом и сервером рассматривается как сообщение, а само сообщение так же важно, как и операция.
Преимущество обработки вызова от клиента к серверу как сообщения заключается в том, что другие службы могут использоваться для взаимодействия с сообщением по мере его перенаправления с клиента на сервер, что значительно упрощает внедрение новых функций без необходимости перезаписи. либо клиент, либо сервер. Вы можете сделать это с помощью Remoting, но это не так просто, как SOA, потому что как на стороне клиента, так и на стороне сервера, вероятно, не были созданы с учетом этой расширяемости. При этом SOA добавляет сложности архитектуре. Сложность, которая не может не стоить дополнительных инвестиций. Хороший архитектор поможет вам определить плюсы и минусы каждого стиля разработки для вашего проекта, а также определить, когда использовать каждый стиль.