.NET Core 和 Xamarin 中的 RPC

Posted

技术标签:

【中文标题】.NET Core 和 Xamarin 中的 RPC【英文标题】:RPC in .NET Core and Xamarin 【发布时间】:2018-04-13 21:16:17 【问题描述】:

我正处于使用 C# 为移动设备构建在线收藏纸牌游戏的早期阶段。游戏客户端本身是使用 Xamarin 构建的,并且(最终)将在 iosandroid 上运行。游戏服务器是一个 .NET Core 控制台应用,在 Linux 服务器上运行。

但是,我无法决定如何管理客户端和服务器之间的通信。在网络方面,我是一个完整的初学者;这个项目的主要目的是学习一点如何去做。

我的计划是使用某种形式的 RPC 在两者之间进行通信,因此客户端可以简单地调用服务器上的一个方法并获得有用的响应 - 类似于:

CardCollection cards = Service.GetCards(playername);

GetCards(playername) 是服务器上使用服务合同提供的方法。我的初衷是为此目的使用 WCF 和 NetTcpBinding,因为它完全符合我的需求。但是,事实证明这在 .NET Core 中不可用。因此,我决定使用 gRPC,它也几乎完全满足了我的需要 - 只是事实证明 不适用于 Xamarin。

所以,我的问题是 - 是否有一个预先存在的库,我可以使用它来管理在 .Net Core 和 Xamarin 中工作的客户端和服务器之间的通信,或者我是否需要创建自己的东西?如果我需要自己写一些东西,是否有任何有用的文档/指导来说明如何在 .NET 中最好地做到这一点?我找到了构建基本 TCP 服务器的教程,但仅此而已。我不知道如何根据我的需要扩展它。

到目前为止,我发现的几乎所有信息都是关于创建 RESTful Web 服务的,这与我所需要的有点不同。我实际上并不需要 REST API 的许多功能,而且我更愿意直接通过 TCP 而不是 HTTP 进行通信,以确保最大性能 - 尽管如果有必要我可能会被说服。服务器还需要能够同时处理多个请求。

【问题讨论】:

I would prefer to communicate directly over TCP rather than HTTP 许多公司使用防火墙并阻止除 80,443 以外的传出端口,... 等等。to ensure maximum performance 你确定你可以利用这个最小的差异吗? BTW:你认为纸牌游戏需要实时响应 这是一个“非常”广泛的问题(实际上您的帖子中有多个 ?s),有很多固执己见的答案。您应该真正将您的问题集中在一个特定问题上,并考虑将其移至gamedev.stackexchange.com @Eser - 如前所述,在网络方面,我是一个完整的初学者;我真的不知道我在做什么。我得到的印象是差异大到值得关注,而且直接在 TCP 中做事似乎并不比使用 HTTP 难,为什么不呢?但是你对端口提出了一个很好的观点,如果性能差异很小,那么我使用哪个并不重要。正如您所说,它不需要实时响应;只是为了一次处理潜在的大量连接。 @SushiHangover - 我的问题基本上归结为“我应该如何在 Xamarin/.NET Core 中实现 RPC,是否有合适的库(如 WCF 或 gRPC)来简化该过程?” - 任何额外的“有意见的答案”只是我试图根据我迄今为止所做的研究来缩小我认为我需要的范围。 @Bob2004 How should I go about implementing RPC in Xamarin/.NET Core, and is there a suitable library (like WCF or gRPC) to ease the process? :推荐/第三方库选择:这不是 *** 的用途。 【参考方案1】:

嗯,我找不到任何关于如何从头开始在 .NET Core 服务器和 Xamarin 客户端之间实现 RPC 的文档,或者任何其他方式的信息。

但是,经过大量搜索,我发现了Thrift,它(显然)支持 Xamarin 和 .NET Core,并且几乎完全符合我想要做的事情的方式。我在让它工作时遇到了一些困难,但我认为这属于它自己的问题。

【讨论】:

它现在有效还是仍有问题?我也有同样的要求。

以上是关于.NET Core 和 Xamarin 中的 RPC的主要内容,如果未能解决你的问题,请参考以下文章

一张图了解.Net Core和.NetFx和.Net Standard和Xamarin关系

Xamarin Mobile 使用的 ASP.Net Core Web API

从 Xamarin 对 Asp.NET CORE Web 应用程序进行身份验证

仅 xamarin 表单应用程序的 Asp.net Core 授权失败

Xamarin Android 使用 Asp.Net core web api 连接到 Azure Notification Hub [关闭]

linux内核参数优化-net