从ASP.NET MVC和移动设备中食用ASP.NET Web API



在大量徒劳地搜索此主题之后,我需要在这里提出问题。

我计划创建一个在线多人卡游戏。最初,游戏只会通过Android手机(作为客户)进行。但是后来,我也想让iPhone用户可以访问它,并使IT基于Web浏览器。

所有这三种类型的客户端(Android,iPhone和Web浏览器)应能够连接到同一服务器(实现游戏引擎的位置),因此使用相同的逻辑和游戏规则 - 他们的客户端外观是有什么不同。

我已经在ASP.NET中进行了编程,这就是我打算在这里用作服务器端基础架构的方法。具体来说,我看了ASP.NET Web API,看起来很棒:我的三种客户端将需要从Web API获取游戏数据并呈现它。

这是我的问题:对我来说,iPhone和Android如何从Web API中获取和使用JSON-Formatting游戏数据。但是我不清楚网站版本如何(我认为将是ASP.NET MVC)会消耗网络API?从MVC向Web API提出HTTP请求是明智的吗?如果是,它不会使它慢?

本质上,我想编写一次游戏逻辑,将其通过Web API暴露于许多消费它的客户。我想到的这个架构在这里图3中精美地描绘了 - 不能在此处发布图像。

so 其他在那里的图中,代表我的iPhone和Android用户。

也欢迎其他方向上的任何指针。:)谢谢

您的API控制器应该非常薄,您可以通过提取业务逻辑来实现,例如:

public class GameController : ApiController
{
    GameLogic _gameLogic; // inject through constructor
    public PlayCardResult PlayCard(Card card)
    {
        return _gameLogic.PlayCard(card);       
    }   
}

然后从MVC前端,您可以基本复制控制器,在GameLogic上执行相同的方法:

public class GameController : Controller
{
    GameLogic _gameLogic;
    [HttpPost]
    public ActionResult PlayCard(Card card)
    {
        var model = _gameLogic.PlayCard(card);
        return View(model);
    }   
}

另外,您可以让MVC控制器调用Web API,例如使用RestSharp:

public class GameController : Controller
{
    WebAPIClient _webAPIClient;
    [HttpPost]
    public void PlayCard(Card card)
    {
        var model = _webAPIClient.PlayCard(card);
        return View(model);         
    }   
}

或者您可以让MVC变得很愚蠢,然后让浏览器与WebAPI进行通信,例如使用jQuery。

最新更新