向服务器发送数据(消息)的最佳(广泛接受)方式是什么?

时间:2011-10-25 12:00:34

标签: c# messaging

我有一个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 个答案:

答案 0 :(得分:3)

这一切都在很大程度上取决于您的应用程序的需求 一般来说:不,发明自己的协议并不是一个好主意。

有很多方法可以将消息从客户端发送到服务器 我建议你在WCF上做一些阅读,或者如果你使用.NET 2.0而不是.NET Remoting 此外,您可能需要考虑发送HTTP消息,因为有很多框架可以做到这一点。

答案 1 :(得分:1)

一种方法是使用XML-RPC。我用了this for .NET。我按照说明进行了修改,并让客户端/服务器在30分钟内工作,另外10个按照我的喜好进行修改。本质上,你通常会调用函数,并通过库的魔法阻止服务器执行代码,它将返回结果。 RPC =远程过程调用。

如果您使用asp.net使用标有IIS的说明,即使您使用fastcgi或apache在linux上也是如此。我忽略了那个错误,因为它被标记为IIS。有一个.NET Remoting选项(如果服务器不是asp.net,而是另一个应用程序)可用。

一个不太好的选择是学习webclient并将json字符串发布到服务器。然后以json的形式阅读响应。 XML-RPC是非常标准和建议的。

答案 2 :(得分:0)

尝试使用HttpUtility.HtmlEncode方法

代替UrlEncode()