C#多个应用程序需要通信时的最佳方法

时间:2012-03-04 21:38:01

标签: c# wcf web-services rest webserver

当不同的应用程序需要通信时,最好的方法是什么?后端软件应该是C#4.0。

案例如下。

这是一个正在玩的游戏,让我们以足球为例。现在我们的软件会跟踪足球场上发生的一切。分数,处罚,记分牌广告,计时器等。

问题在于,不只是一个人坐在收集统计数据或跟踪计时器或在记分牌上显示广告,这很多。因此,我们根据您的角色开发了多个具有不同功能的应用。这些应用程序混合使用不同语言的移动应用程序,网络应用程序以及Windows应用程序。

现在我们想要一个充当“服务器”或“数据库”(应该是C#4.0)的应用程序,并让所有其他应用程序连接到此应用程序。有哪些不同类型的技术? “服务器/数据库”应用程序可能是启动并扫描IP地址的Web服务器?使用WCF?

什么是最简单的,不仅仅是创建服务器,还有不同类型的应用程序使用?

更新

我可能没有表达得足够清楚。 “服务器”也将充当过滤,检查和返回数据的中间层。需要双向通信。或多或少,我希望服务器能够将更新推送到设备。

一个例子是游戏时钟。负责人最有可能使用移动应用程序,我希望服务器不断将数据推送到应用程序,关于游戏时钟的当前值。 (不知道在与Java通信时是否可以实现这一点)

3 个答案:

答案 0 :(得分:3)

如果可以接受与服务器的无状态通信,那么Web服务就是可行的方式 - 而WCF是实现此目的的简单方法。

您需要考虑是否需要双向通信,服务器是否会在某些情况下启动通信等。

如果您确实需要花费一些时间来考虑SOAP与REST,那么在大多数情况下,与SOAP相比,使用REST仍然存在一定的开发开销。

修改 根据您的时间表,确实值得检查.net MVC 4(或WCF Web API REST)和SignalR(用于实时移动通信)。对于.net的东西看起来真的很有用。

答案 1 :(得分:2)

在我看来, WCF 是要走的路。

如果使用WCF开发它,那么您将应用程序代码与通信基础结构分离。

设计你的界面(不是UI),然后在一个类中实现它,当需要与它进行通信时,决定如何通过传输介质(Endpoint / Binding)公开它并完成你的工作而不改变任何东西在您的应用程序逻辑中。

基本上,您拥有单个WCF合同,并且可以从中构建多个WCF端点进行通信。

例子: 如果您的客户端应用程序与WCF服务位于同一网络上,则可以将WCF端点添加到现有WCF服务( NetTCPBinding / NetNamedPipeBinding)以获得网络性能,

如果您的客户使用网络进行通信,简单,只需向您的WCF服务添加新的 webHttpBinding ,现在您就可以通过Javascript与您的WCF服务进行通信。

如果您的客户端是Web服务器,简单,只需添加 Basic / WS / WSDual / * HttpBinding *,并获得通信和一些很好的功能,如双通道通信

这里的要点是你没有改变你的代码,它仍然存在功能。您只需将通信端点暴露给它,以便新类型的客户端可以连接到它,或者满足新的应用程序/功能要求。

此外,如果您在WCF中进行开发,那么您将获得某种未来证据,例如当WCF公开新类型的“开箱即用”绑定时,您就可以与新类型的客户端(如Web)进行对话套接字。见即将发布的web api)

答案 2 :(得分:1)

假设我理解正确,这可以在一台计算机上完成(并且您已经完成了计算机间的通信) - 也许Memory-Mapped Files是合适的。