Нет ничего особенного в использовании FTP, который бы требовал COM (и, конечно, для написания графического интерфейса на C # тоже не требуется COM).
Если бы я делал это:
- WPF GUI (будущее на случай, когда WinForms исчезнет ... и дает вам возможность работать с WinRT, который также поддерживает XAML).
- Nuget в библиотеке FTP, например: https://www.nuget.org/packages/Ftp.dll/
Убедитесь, что вы отделяете свой графический интерфейс от внутренних коммуникаций через соответствующие интерфейсы / шаблоны, чтобы вы могли легко и просто заменить свое приложение на будущее.
Edit:
Итак, что вы на самом деле ищете: как я могу получить интерфейс GUI, который общается с сервером различными способами?
Итак, есть много ответов на это, и в основном это сводится к следующему: не делайте этого, «выберите линию и придерживайтесь ее», или «Используйте WCF».
WCF (Windows Communication Framework https://docs.microsoft.com/en-us/dotnet/framework/wcf/whats-wcf) - это серверная технология на стороне сервера, которая поддерживает несколько протоколов связи одновременно, но, как правило, позволяет взаимодействовать между клиентом и сервером. Изначально SOAP был популярным выбором, но он также поддерживает Remoting (на что вы ссылались), вы можете отправлять вложения через DIME, который затем похож на FTP, или вы можете свернуть свои собственные и делать все, что захотите (например, с помощью Capn Proto ( https://capnproto.org/) для отправки двоичных сообщений).
С другой стороны, если вы можете избежать попыток сделать все, вы можете вместо этого заглянуть в REST, который поддерживается Web API (https://msdn.microsoft.com/en-us/library/dn448365(v=vs.118).aspx). Это позволит вам отправлять легкие данные туда и обратно, и, как правило, в наши дни «так, как это делается».
Удачи!