Насколько мне известно, не существует волшебного способа назвать метод полностью прозрачным, независимо от того, на какой машине его запускать, включая .NET Remoting.
Однако WCF широко использует прокси-серверы, которые либо генерируются автоматически из документов WSDL, либо напрямую ссылаются на типы / интерфейсы из общей библиотеки DLL.
Таким образом, вы можете создать совместно используемую dll, содержащую некоторые методы, добавить некоторые сантехнические функции WCF (т. Е. Создать интерфейс службы из методов / типов, которые вы хотите представить), а затем решить, использовать ли их непосредственно / локально в вашем проекте, или получить доступ к ним через прокси. Это позволяет довольно легко вызывать методы удаленно. Однако обратите внимание, что вы не можете создавать полноценные классы, которые предоставляют состояние и функциональность удаленно, память, содержащая реальные объекты, не используется совместно, это, в конце концов, всего лишь «трюк».
В зависимости от настроек вы можете:
- Использовать Именованные каналы для внутримашинной связи (самый быстрый)
- Используйте TCP для связи в интрасети (также довольно быстро)
- Использовать HTTP / HTTPS для интернет-связи (самый медленный)
Несмотря на то, что легко вызывать удаленные методы, включая отправку / возврат сложных структур данных, WCF внутренне создает полный стек связи, возможно, состоящий из большого количества логики, включая, например, безопасность, транзакции и надежность. Это означает, что удаленная связь обходится дорого, что приводит к нагрузке на процессор и сеть.
Праймер для WCF можно найти здесь .
Если вам нужна более высокая производительность, чем это возможно с помощью встроенных опций связи, вы можете рассмотреть возможность использования чего-то вроде Буферы протокола Google , чтобы уменьшить объем передаваемых данных и снизить нагрузку на процессор .
Для C # есть две реализации известных мне буферных протоколов: Protobuf CSharp от Jon Skeet и Protobuf-net от Marc Gravell.
Последнее замечание, чтобы было ясно; нет, WCF не не позволяет полностью абстрагироваться от расположения типов / методов.