.NET Core 和 Xamarin 中的 RPC
RPC in .NET Core and Xamarin
我正处于使用 C# 为移动设备构建在线集换式纸牌游戏的早期阶段。游戏客户端本身是用 Xamarin 构建的,并且将(最终)在 iOS 和 Android 上 运行。游戏服务器是一个 .NET Core 控制台应用程序,运行在 Linux 服务器上运行。
但是,我无法决定如何管理客户端和服务器之间的通信。在网络方面,我是一个完全的初学者;这个项目的主要目的是了解一些如何做。
我的计划是使用某种形式的 RPC 在两者之间进行通信,这样客户端就可以简单地调用服务器上的方法并获得有用的响应 - 类似于:
CardCollection cards = Service.GetCards(playername);
其中 GetCards(playername) 是服务器上使用服务合同提供的一种方法。我的初衷是为此目的使用 WCF 和 NetTcpBinding,因为它完全符合我的需要。但是,事实证明这在 .NET Core 中不可用。因此,我决定改用 gRPC,它也能完全满足我的需要——除了事实证明 that 不适用于 Xamarin.
所以,我的问题是 - 是否有一个预先存在的库,我可以使用它来管理我的客户端和在 .Net Core 和 Xamarin 中工作的服务器之间的通信,或者我是否需要创建一些东西我自己的?如果我需要自己写一些东西,是否有关于如何在 .NET 中最好地做到这一点的有用 documentation/guidance?我找到了构建基本 TCP 服务器的教程,但仅此而已。我不知道如何扩展它以满足我的需要。
到目前为止我找到的几乎所有信息都是关于创建 RESTful Web 服务的,这与我需要的有点不同。我实际上并不需要 REST API 的许多功能,而且我更愿意直接通过 TCP 而不是 HTTP 进行通信,以确保最佳性能 - 尽管如果有必要,我可能会被说服。服务器还需要能够同时处理许多请求。
好吧,我找不到任何关于如何从头开始在 .NET Core 服务器和 Xamarin 客户端之间实现 RPC 的文档,也找不到关于任何其他实现方式的信息。
然而,经过大量搜索,我遇到了 Thrift,它(显然)同时支持 Xamarin 和 .NET Core,并且几乎完全符合我想要做事的方式。我在让它工作时遇到了一些困难,但我认为这属于它自己的问题。
我正处于使用 C# 为移动设备构建在线集换式纸牌游戏的早期阶段。游戏客户端本身是用 Xamarin 构建的,并且将(最终)在 iOS 和 Android 上 运行。游戏服务器是一个 .NET Core 控制台应用程序,运行在 Linux 服务器上运行。
但是,我无法决定如何管理客户端和服务器之间的通信。在网络方面,我是一个完全的初学者;这个项目的主要目的是了解一些如何做。
我的计划是使用某种形式的 RPC 在两者之间进行通信,这样客户端就可以简单地调用服务器上的方法并获得有用的响应 - 类似于:
CardCollection cards = Service.GetCards(playername);
其中 GetCards(playername) 是服务器上使用服务合同提供的一种方法。我的初衷是为此目的使用 WCF 和 NetTcpBinding,因为它完全符合我的需要。但是,事实证明这在 .NET Core 中不可用。因此,我决定改用 gRPC,它也能完全满足我的需要——除了事实证明 that 不适用于 Xamarin.
所以,我的问题是 - 是否有一个预先存在的库,我可以使用它来管理我的客户端和在 .Net Core 和 Xamarin 中工作的服务器之间的通信,或者我是否需要创建一些东西我自己的?如果我需要自己写一些东西,是否有关于如何在 .NET 中最好地做到这一点的有用 documentation/guidance?我找到了构建基本 TCP 服务器的教程,但仅此而已。我不知道如何扩展它以满足我的需要。
到目前为止我找到的几乎所有信息都是关于创建 RESTful Web 服务的,这与我需要的有点不同。我实际上并不需要 REST API 的许多功能,而且我更愿意直接通过 TCP 而不是 HTTP 进行通信,以确保最佳性能 - 尽管如果有必要,我可能会被说服。服务器还需要能够同时处理许多请求。
好吧,我找不到任何关于如何从头开始在 .NET Core 服务器和 Xamarin 客户端之间实现 RPC 的文档,也找不到关于任何其他实现方式的信息。
然而,经过大量搜索,我遇到了 Thrift,它(显然)同时支持 Xamarin 和 .NET Core,并且几乎完全符合我想要做事的方式。我在让它工作时遇到了一些困难,但我认为这属于它自己的问题。