Каков наилучший (общепринятый) способ отправки данных (сообщений) на сервер - PullRequest
1 голос
/ 25 октября 2011

У меня есть приложение C # (которое является клиентом), и у меня есть сервер. Теперь сервер получает и отправляет все виды сообщений, которые являются строками для клиента, для этого я использую StreamWriter, теперь отправка сообщения на клиенте и на сервере выглядит примерно одинаково, я беру строку, кодирующую ее в UTF- 8, а затем отправить его

public void SendMessage(String p)
{
    if (p != "")
    {
        string StringMessage = HttpUtility.UrlEncode(p, System.Text.Encoding.UTF8);

        try
        {
            swSender.WriteLine(StringMessage);
            swSender.Flush();
        }
        catch (IOException e)
        {
            //do some stuff
        }
    }
}

Теперь строки, которые я посылаю, выглядят примерно так:

"SUBJECT@@@@SOMEDATA1<><>SOMEDATA2<><>SOMEDATA3

Это вызывает некоторые проблемы и заставляет меня думать. Так ли большие приложения отправляют / получают данные? Потому что это выглядит довольно глупо. Если нет, то может ли кто-нибудь привести пример того, как большие приложения отправляют сообщения?

Также: мой способ отправки сообщений делает меня большим вложенным, если

Например:

if(Subject="something")
    do something
else if(subject="something else")
    do something else

Как я могу это исправить?

Ответы [ 3 ]

3 голосов
/ 25 октября 2011

Все зависит от потребностей вашего приложения.Вообще говоря: нет, изобретать собственный протокол не очень хорошая идея.

Существует довольно много способов отправки сообщений от клиента к серверу.Я бы посоветовал вам немного почитать на WCF или, если вы в .NET 2.0, чем .NET Remoting.Кроме того, вы можете рассмотреть возможность отправки HTTP-сообщений, так как для этого существует множество фреймворков.

1 голос
/ 25 октября 2011

Одним из способов является использование XML-RPC.Я использовал это для .NET .Я следовал инструкциям без его модификации и заставил клиент / сервер работать в течение 30 минут и еще 10, чтобы изменить его по своему вкусу.По сути, вы вызываете функции нормально, и благодаря магии библиотеки сервер блокирует выполнение кода и возвращает результаты.RPC = удаленный вызов процедуры.

Если вы используете asp.net, используйте инструкции, помеченные IIS, даже если вы используете Linux с использованием fastcgi или apache.Я проигнорировал то, что было ошибкой, потому что это было маркировано IIS.Существует опция .NET Remoting (если сервер не asp.net, но другое приложение).

Не очень хороший вариант - изучать веб-клиента и публиковать строки json на сервере.Затем прочитайте ответ как JSON.XML-RPC довольно стандартен и рекомендуется.

0 голосов
/ 25 октября 2011

попробуйте использовать HttpUtility.HtmlEncode Метод

вместо UrlEncode ()

...