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

问题描述:

我有一个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 
     } 
    } 
} 

现在,我送琴弦是这样的:

"[email protected]@@@SOMEDATA1<><>SOMEDATA2<><>SOMEDATA3 

这会导致一些问题,让我觉得。这是大型应用程序发送/接收数据的方式吗?因为它看起来很愚蠢。如果不是,那么有人可以提供一个关于大型应用程序发送消息的例子吗?

另外:我发送消息的方式让我做出重大嵌套如果

例如:

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

我怎样才能解决这个问题?

+1

发送自我描述数据。 XML。肥皂和其他互操作协议的一角。考虑WCF。 –

+0

你是什么意思自我描述数据?你可以发布exmaple吗? –

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

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

+2

如果互操作性也是您的要求之一,WCF Rest服务是您的朋友 –

+0

如果模型连接到从服务器获取数据的WCF客户端,那么使用mvc模式?或者WCF客户端应该作为模型本身? –

+0

该模型既不是客户端,也不是任何连接到它的东西。该模型只是您的业务对象的定义。你应该创建可以传递Model对象的客户端和服务器。 – Svarog

尝试使用HttpUtility.HtmlEncode方法

而是以UrlEncode()

+1

它将如何帮助我解决我的问题,我不是在谈论编码,它不关心我如何编码,重要的是我不确定我需要以这种方式发送数据 –

+0

对不起,可能是我不正确地理解你的问题。 – Serghei

一种方法是使用XML-RPC。我用this for .NET。我按照无修改的说明进行操作,并在30分钟内使客户机/服务器工作,另有10台服务器根据我的喜好对其进行修改。本质上你可以通常调用函数,并通过库的魔力来阻止服务器执行代码,并返回结果。 RPC =远程过程调用。

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

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

+0

也许我错了,但我不认为它是一件好事,从客户端调用服务器上的fucntions没有任何flitering ...谢谢无论如何,我会看看thorugh它。 –

+0

@BlueGene:对于任何需要用户登录/认证的用户,通常都具有认证功能(或用于长api键的参数)。 OAuth是一种流行的方法。遥控器调用我迄今为止从来没有要求认证,但明智的加密,你可以扔在https后面的URL,你不必担心嗅/中间人攻击。但是,如果你使用.NET和一个自签名的证书.NET将会抱怨,你需要关闭一些东西。为此查找ServicePointManager.ServerCertificateValidationCallback并为其分配一个始终返回true的函数。 – 2011-10-26 11:02:52