Как создаются приложения на стороне сервера, как проводится связь с клиентом - сервером?

StackOverflow https://stackoverflow.com/questions/2138634

Вопрос

Я хотел бы, чтобы в .NET было написано приложение клиента-сервер, которое было бы следующим образом:

  • сервер работает Linux
  • На сервере есть база данных SQL (MySQL), содержащая URL -адреса документа

Что мы хотим: - Серверная сторона регулярно заползла все URL -адреса и создает для них полный текстовый индекс - сторона клиента сможет выполнить запрос в этот индекс, используя графический интерфейс

Клиентское приложение записано в .net с использованием c#. Помимо поиска в документах, он сможет сделать много других вещей, которые здесь не описаны и которые выполняются на стороне клиента.

Мы хотели бы использовать C# для сервера, но у нас нет опыта в этой области. Как обычно это делается?


Уточняющий вопрос сейчас на основе некоторых ответов:

Что мне больше всего неясно, так это то, как обычно обрабатывается общение с клиентом. Клиент и сервер обычно используют сокеты, заботятся о таких деталях, как IP -адреса, порты или обход NAT? Или есть некоторые общие рамки и паттерны, которые сделают это прозрачным, и облегчало бы обмен сообщениями клиента или процедуру вызовы? Есть примеры или хорошие отправные точки для этого? Есть ли некоторые общие методы, как обрабатывать тот факт, что один сервер требуется для сервера нескольких клиентов одновременно?

Это было полезно?

Решение

Чтобы использовать C# на Linux, вам нужно будет использовать Мононуклеоз. Анкет Это реализация спецификации CLR с открытым исходным кодом.

Затем вам нужно решить, как общаться между сервером и клиентом, от самого низкого уровня простого открытия сокета TCP/IP и отправки битов вверх и вниз, до удаленного .NET, до WCF, до разоблачения веб -сервисов на сервере. Я не знаю, насколько выполняется реализация WCF на MONO, также я думаю, что у вас могут возникнуть проблемы с бинарным пультом между Mono и MS .NET.

Я бы предложил RPC Style Webservices предложить очень хорошее решение. Веб -сервисы также имеют преимущество в том, что клиенты Aloing с других платформ легко подключаются.

РЕДАКТИРОВАТЬВ ответ на разъяснение вопроса. Я бы предложил использовать Mono/ASP.NET/Webservices на сервере, если вы хотите использовать C# на сервере и клиенте.

Одно из предположений, которое я сделал, заключается в том, что вы можете сделать модель потяжения клиента, где каждое сообщение инициируется клиентом. Использование другого подхода может позволить серверу выдвигать события к клиенту. Учитывая, что клиент имеет возможность регулярно поставить сервер, я не считаю это большим рисованием, но это может быть зависит от типа приложения, которое вы разрабатываете.

Mono разрешить выполнение C# (скомпилирован в IL) на ящике Linux. Mono asp.net позволяет использовать стандартный asp.net и интегрировать в Apache см. http://www.mono-project.com/asp.net И, наконец, веб -сервисы позволяют вам надежно общаться в сильно напечатанной манере между вашим клиентом и вашим сервером.

Использование этого подхода отрицает большинство проблем, поднятых в вашем разъяснении, и делает их чужой проблемой.
Главы/SSL - ОБРАЩЕНИЕ СТАНДАРТА СТАНДАРТА .NET выполнения на клиенте и APACHE на сервере.
IPaddress/Ports/Nat Traversal - Все позаботятся о. DNS смотрите вверх, получит серверы IP. Open Socket позволит серверу реагировать на любую настройку брандмауэра и NAT.
Несколько клиентов - Apache создан для обработки нескольких клиентов в то же время, что и ASP.NET, поэтому вы не должны сталкиваться с какими -либо проблемами.

Другие советы

Как многие уже упоминали, есть несколько вещей, которые вы упомянули, которые причинят вам боль. Я не собираюсь вдаваться в них, вместо этого я отвечу на ваш первоначальный вопрос о общении.

Текущий популярный выбор в таком виде общения - это веб -сервисы. Они позволяют вам делать удаленные вызовы с помощью протокола HTTP и кодировать запросы и ответы в XML. В то время как в этом методе есть свои критики, мне было невероятно простым вставать и работать, и отлично работает почти для всех приложений.

Framework .NET имеет встроенную поддержку веб -сервисов, которые определенно могут быть вызваны вашим клиентом. Краткий взгляд на веб -сайт Mono показывает, что он также поддерживает веб -сервисы, поэтому написание вашего сервера в C# и запуск его под Mono должно быть в порядке. GOOGLING для «Учебного пособия по веб -сервису C# показывает много сайтов, на которых есть информация о том, как начать, вот случайный выбор из этих результатов:

http://www.codeguru.com/csharp/csharp/cs_webservices/tutorials/article.php/c5477

посмотри на Кузнечик: «С Grasshopper вы можете использовать свою любимую среду разработки от Microsoft® для развертывания приложений на платформах с поддержкой Java, таких как Linux»

Или посмотреть здесь

Ideea - преобразовать ваше приложение в Java, а затем запустить его на Tomcat или JBoss.

Другой подход: используйте модуль mod_aspdotnet для Apache, как описано здесь.

Этот Основное приложение для чата клиента/сервера в C# Похоже, своего рода пример, который может быть отправной точкой для меня. Соответствующие классы .NET Tcpclient а также Tcplistener

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top