我想用.NET编写一个客户服务器应用程序,该应用程序会以下以下操作:

  • 服务器正在运行Linux
  • 在服务器上有SQL数据库(MySQL)包含文档URL

我们想要的: - 服务器端会定期爬网,并为其创建全文索引 - 客户端可以使用GUI在此索引中执行查询

客户应用程序使用C#编写.NET。除了在文档中进行搜索外,它将能够做很多其他事情,这些事情在这里没有描述,并且可以很好地完成客户端。

我们也想将C#用于服务器端,但是我们在这方面没有经验。这样的事情通常如何完成?


现在根据一些答案澄清问题:

我最不清楚的是通常如何处理客户服务器通信。客户端和服务器通常使用插座,关心诸如IP地址,端口或NAT遍历之类的详细信息吗?还是有一些通用的框架和模式,这些框架和模式会使这种透明,并使客户服务器消息传递或过程变得容易?有什么例子还是好的起点?是否有一些常见的技术如何处理单个服务器同时服务器需要单个服务器?

有帮助吗?

解决方案

要在Linux上使用C#,您需要使用 单核细胞增多症. 。这是CLR规范的开源实现。

接下来,您需要决定如何在服务器和客户端之间进行通信,从仅打开TCP/IP套接字的最低级别,然后上下发送位置,到.NET远程,到WCF,再到服务器上的WebS服务。我不知道WCF在单声道上的完整实现方式,我也认为您可能会在Mono和MS .NET之间进行二进制远程问题。

我建议RPC样式网络服务提供一个非常好的解决方案。 WebServices还具有从其他平台上销售客户以轻松连接的优势。

编辑回应澄清问题。如果您想在服务器和客户端上使用C#,我建议在服务器上使用Mono/ASP.NET/Web服务。

我做过的一个假设是,您可以执行客户端拉模型,其中每条消息都是由客户端启动的。使用另一种方法可以允许服务器将事件推向客户端。鉴于客户端具有定期启动服务器的能力,因此我认为这不太重要,但是它可能取决于您正在开发的应用程序类型。

单声道允许在Linux盒上执行C#(编译为IL)。 MONO ASP.NET允许您使用标准ASP.NET并集成到Apache中 http://www.mono-project.com/asp.net 最后,Web服务使您可以在客户和服务器之间以强烈的键入方式进行强有力的沟通。

使用这种方法否定了您在澄清中提出的大多数问题,并使他们成为别人的问题。
插座/SSL - 由客户端上的标准.NET运行时和服务器上的Apache负责。
ipaddress/ports/nat遍历 - 全部照顾。 DNS查找将获得服务器IP。打开的插座将允许服务器通过任何防火墙和NAT设置进行响应。
多个客户 - Apache构建是为了与ASP.NET同时处理多个客户端处理,因此您不应在那里遇到任何问题。

其他提示

正如许多人已经提到的那样,您提到的许多事情将导致您痛苦。我不会参与其中,相反,我会回答您有关沟通的最初问题。

当前这种通信的流行选择是Web服务。这些允许您使用HTTP协议进行远程调用,并在XML中编码请求和响应。尽管这种方法具有其批评家,但我发现起床和运行非常简单,并且几乎适用于所有应用程序。

.NET Framework为您的客户端肯定可以调用Web服务。简要介绍了Mono网站,表明它还对Web服务有所支持,因此在C#中编写服务器并在单声道下运行的服务器应该很好。谷歌搜索“ C#Web服务教程”显示了许多网站,这些网站有有关如何开始的信息,这是从这些结果中随机选择:

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类是 tcpclienttcplistener

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top