Для использования c # в Linux вам нужно будет использовать Mono . Это реализация спецификации CLR с открытым исходным кодом.
Затем вам нужно решить, как установить связь между сервером и клиентом, начиная с самого низкого уровня: просто открыть сокет TCP / IP и отправлять биты вверх и вниз, до .Net remoting, до WCF, чтобы показать веб-сервисы на сервере. , Я не знаю, как завершена реализация WCF на моно, также я думаю, что у вас может быть проблема с бинарным удаленным взаимодействием между моно и MS .Net.
Я бы посоветовал веб-сервисам в стиле RPC предложить очень хорошее решение. У WebServices также есть преимущество, позволяющее клиентам с других платформ легко подключаться.
EDIT
В ответ на уточнение вопроса.
Я бы предложил использовать mono / ASP.NET / WebServices на сервере, если вы хотите использовать c # как на сервере, так и на клиенте.
Одно из предположений, которое я сделал, заключается в том, что вы можете создать модель извлечения клиента, когда каждое сообщение инициируется клиентом. Использование другого подхода может позволить серверу передавать события клиенту. Учитывая, что у клиента есть возможность регулярно опрашивать сервер, я не считаю это большим недостатком, но это может зависеть от типа разрабатываемого вами приложения.
Mono позволяет запускать c # (скомпилированный в IL) на Linux-боксе. Mono ASP.NET позволяет вам использовать стандартный ASP.NET и интегрироваться в Apache, см. http://www.mono -project.com / ASP.NET , и, наконец, WebServices позволяет вам надежно общаться между собой строго типизированным способом. клиент и ваш сервер.
Использование этого подхода сводит на нет большинство вопросов, поднятых в вашем разъяснении, и делает их проблемой кого-то другого.
Сокеты / SSL - это стандартная среда выполнения .Net на клиенте и Apache на сервере.
IP-адрес / порты / прохождение NAT - Все позаботилось. DNS look up получит IP сервера. Открытый сокет позволит серверу отвечать через любой брандмауэр и настройку NAT.
Несколько клиентов - Apache создан для обработки нескольких клиентов одновременно с ASP.NET, поэтому у вас не должно возникнуть никаких проблем.