簡體   English   中英

如何在 Xamarin.Forms 中處理 WCF Duplex?

[英]How to handle WCF Duplex in Xamarin.Forms?

一點背景:我正在構建一個簡單的回合制游戲。 有一個服務器托管 WCF 服務和使用Xamarin.Forms (帶有 PCL 庫)構建的客戶端。 所以我想用雙工通道構建非常簡單的“請求-響應”服務器 - 移動並等待響應(在事件中捕獲響應/回調)。 但是...問題是,我在那里看不到 netTcp 綁定或任何雙工/雙綁定。 只有BasicHttpBinding

我的代理 PCL 庫目標:

  • .NET 框架 4.5
  • ASP.NET 核心 1.0
  • 視窗 8
  • Windows Phone Silverlight 8
  • 安卓系統
  • Xamarin.iOS
  • Xamarin.iOS(經典)

我的問題是:如何創建基於事件的服務架構(與回調的 WCF 雙工通信) - 以便我可以在 Xamarin.Forms 中使用它?

在這一點上,人們可能想要反對這個問題(或已經做過),所以我展示了已經做過的事情:

我在這里找到了票證並且有很多抱怨(在那里和其他地方)Xamarin 對 wcf 雙工通信無所作為。 這看起來不太樂觀。 但也許你有一些很好的解決這個問題的方法?

至於現在,我是這樣做的:

public async Task<MyResponse> Start(int id)
{
    MyResponse response;
    // doing stuff...
    return await Task.Factory.StartNew(() => response);
}

所以,我異步調用一個服務,基本上等待它返回。 因為它是異步的,所以客戶端的屏幕不會被凍結。 我不確定這是最好的解決方案......

最好的解決方案是基於事件的架構(使用回調,因為您必須等待對手)。 但我不知道該怎么做? 甚至有可能嗎?

謝謝,

WCF開發已多次暫停和恢復。 鑒於 REST 服務(或基於它構建的框架,如服務堆棧)是現代方法而不是 WCF,我不相信您會看到這方面的工作。

您可以在此處閱讀沒有計划支持的項目列表: http : //www.mono-project.com/docs/web/wcf/#components-with-no-plan-to-support (整篇文章給出也有更多的歷史)

至於你的問題,有很多方法可以通過現代服務來處理回合制游戲。 一個簡單的例子可能是使用為此構建的框架。 Xamarin.Android有一個回合制多人游戲包,它們隨 Google Play 服務一起提供來執行此操作:

https://developers.google.com/games/services/common/concepts/turnbasedMultiplayer (您可以向下滾動到Client Implementations以支持的不僅僅是 Android)

還有諸如SignalR https://github.com/SignalR/SignalR 之類的東西,您可以在其中創建基於回合的機制。

最后,您還可以對 REST 服務執行相同操作。 然而,使用 REST 服務,您將無法真正捕獲會話狀態,但您可以在具有端點的意義上對基於回合的游戲進行建模,例如:

/game/<gameID>/turn/<turnID>

因此,您可以根據turnID對游戲以及玩家的回合狀態進行turnID 這實際上取決於您的回合制游戲的復雜性,但對於象棋/井字游戲/剪刀石頭布這樣的簡單事物,這絕對是可能的。

在等待回合的示例中,您可以獲取最新的回合並返回輪到哪個玩家或這些行上的內容。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM