Asp.net mvc 3 向现有ASP.NETMVC3站点添加Web服务

Asp.net mvc 3 向现有ASP.NETMVC3站点添加Web服务,asp.net-mvc-3,wcf,xamarin,.net-4.5,asp.net-web-api,Asp.net Mvc 3,Wcf,Xamarin,.net 4.5,Asp.net Web Api,情景 使用实体框架和SQL Server后端的现有ASP.NET MVC 3站点 添加使用Xamarin编写的iOS和Android本机客户端应用程序 我的工作是创建一个PCL,新的客户端应用程序将使用它与后端进行交互(这几乎是CRUD操作) 我有什么选择 我读过:Xamarin的介绍。我的选择似乎是: 不添加新服务,只需为ASP站点的特定请求使用或添加控制器,并使用.NET的HTTPRequest、WebClient或类似RestSharp的lib使用HTTP 添加ASP.NETWeb服

情景

  • 使用实体框架和SQL Server后端的现有ASP.NET MVC 3站点
  • 添加使用Xamarin编写的iOS和Android本机客户端应用程序
  • 我的工作是创建一个PCL,新的客户端应用程序将使用它与后端进行交互(这几乎是CRUD操作)
我有什么选择

我读过:Xamarin的介绍。我的选择似乎是:

  • 不添加新服务,只需为ASP站点的特定请求使用或添加控制器,并使用.NET的HTTPRequest、WebClient或类似RestSharp的lib使用HTTP
  • 添加ASP.NETWeb服务,创建客户端将调用的代理
  • 创建一个独立的服务来处理请求(与ASP站点的主机-IIS相反),例如WCF
我倾向于前两种,因为它们不需要单独的服务,但是我想知道身份验证-我猜必须使用基本身份验证(显然是通过TLS)并手动管理会话来对客户端进行身份验证

更新一 我听说自从.NET4.0以来,WCF现在比ASP.NETWeb服务更受欢迎

更新二 只需将服务添加到web项目中,我就可以将WCF与IIS中的ASP.NET MVC站点并排托管。仍然不确定他们是否可以共享身份验证

更新三
我现在看到,承载HTTP API的新方法是使用ASP.NET Web API—这只是一个ASP应用程序。:)

我建议使用Asp.NET WebApi。为什么?

  • 你有像移动应用这样的外部客户端,特别是那些 在Microsoft堆栈之外
  • 您需要的操作主要是CRUD,它允许您创建一个好的RESTful API
  • HTTP协议和JSON格式将为您提供最高程度的互操作性(我知道您使用的是Xamarin,但有一种风险,framemork可能在某个时候无法提供您想要的内容,如果您需要放弃它,您在web服务方面不会有任何问题

谢谢,是否可以将Web Api项目与MVC项目分开,但在同一台服务器上运行它们,并且只让Web Api处理某些请求?回答我自己的问题,我可以使用sud域来处理Api;)是的,可以。从Visual Studio 2014和最新版本的MVC和WebApi开始,您还可以将它们全部放在同一个项目中。@LiviuM。这在很长一段时间内都是可能的。我相信从WebAPI的第1版开始。然而,当时需要对MVC路由进行一些工作。我相信目前建议的方法是让MVC和WebAPI在OWin启动方法中以不同的路径启动(实际上是相同的事情)。