Model view controller MVC-将通信代码放在何处

Model view controller MVC-将通信代码放在何处,model-view-controller,networking,Model View Controller,Networking,我想尝试写一个多人游戏(这里是业余爱好者!),现在在设计时我决定使用MVC模式。 现在我的问题是:我应该把我的网络代码放在哪里?在模型中还是在控制器中?(显然不是这种观点) 编辑: 对不起,我的问题已经一百次不清楚了。 游戏本身将是MVC,它将首先与服务器(查找玩家)通信,然后与该玩家通信(发送你的回合并获得其他回合)。那么我应该在哪里做呢?您可以将实际的游戏本身放在一个新项目中,并在MVC应用程序之间引用该项目,这样您的游戏就完全与web应用程序分离了。例如,如果您想将其移植到WPF,这可能会

我想尝试写一个多人游戏(这里是业余爱好者!),现在在设计时我决定使用MVC模式。
现在我的问题是:我应该把我的网络代码放在哪里?在模型中还是在控制器中?(显然不是这种观点)

编辑: 对不起,我的问题已经一百次不清楚了。

游戏本身将是MVC,它将首先与服务器(查找玩家)通信,然后与该玩家通信(发送你的回合并获得其他回合)。那么我应该在哪里做呢?

您可以将实际的游戏本身放在一个新项目中,并在MVC应用程序之间引用该项目,这样您的游戏就完全与web应用程序分离了。例如,如果您想将其移植到WPF,这可能会很有用。另一种选择是将游戏作为Web服务,MVC应用程序向其请求信息,并为其他语言提供可扩展性以插入

但是,如果您决定将所有内容作为一个整体保留在MVC中,那么我建议使用该模型

细分如下:

  • 控制器负责所有web请求,即GET和POST。它还可以填充模型并为该请求返回适当的视图

  • 该模型包含要执行的域对象和逻辑(即从存储库中提取信息并操作要传递给视图的数据)

  • 视图返回基于模型中存储的数据的标记

在某些实现中,附加逻辑(如检查条件和存储库调用)也发生在控制器级别,这是一种称为胖控制器瘦模型的技术

编辑:

您应该向控制器发送请求。也就是说,在游戏控制器中有一个连接到服务器的
HTTPPost
方法,然后发送玩家回合信息并获取新信息。例如:

[HttpPost]
public ActionResult SendPlayerTurnInformation(PlayerObject player) 
{
   // logic to connect to the Game Network
   // connection.UpdatePlayerTurn(player);

   //return success/fail
}

然后,您可以执行相同的操作来获取特定的玩家回合信息,然后更新模型以传递给包含新信息的视图。

MVC设计模式实际上是两个层的组合:表示层和模型层。表示层通常处理用户界面(更新它并对用户的交互做出反应)。模型层处理域业务逻辑和持久性

网络代码应该放在模型层中


确切地说,在模型层处理持久性的部分,因为从业务逻辑的角度来看,数据从哪里来没有区别。它可以来自SQL数据库、打开的网络插座或火星探测器。这些都只是数据源,通常被实现为模型层的一部分。

小注:如果您的控制器从模型层提取信息并将其传递给视图,那么您实际上是在实现MVP。在经典MVC和Model2 MVC设计模式中,视图是主动的,而在MVP和MVVM中,视图是被动的。@tereško-控制器不从模型中提取信息。根据我的描述,我将存储库称为数据库连接或游戏网络。我以胖控制器瘦模型为例,我个人不使用这种方法实现解决方案。是的,那么问题是什么?您不仅从SQL中获取数据。很明显,模型层和存储介质的交互是双向的。。。认为Darren Davies的编辑更有意义。仍然是+1。