Asp.net web api ASP.NET Web API:客户端的设计实践

Asp.net web api ASP.NET Web API:客户端的设计实践,asp.net-web-api,client,Asp.net Web Api,Client,对于那些使用全新的ASP.NET Web API的人来说,他们知道这是一个很好的框架,用于构建设计良好、面向外部的HTTP服务,这些服务可以使用标准XML或JSON内容类型跨多个不同的客户端 我最近一直在设计一个大型API,用于web和移动客户端。我注意到,在通过Microsoft的NuGetWeb API包提供的ASP.NET Web API模板中,他们采用了一种非常简单的方法来查看带有稍微漂亮主页的视图 这在某种程度上让我回过神来。主要是因为我假设WebAPI就是为这个设计的,一个WebAP

对于那些使用全新的
ASP.NET Web API
的人来说,他们知道这是一个很好的框架,用于构建设计良好、面向外部的HTTP服务,这些服务可以使用标准XML或JSON内容类型跨多个不同的客户端

我最近一直在设计一个大型API,用于web和移动客户端。我注意到,在通过Microsoft的
NuGet
Web API包提供的ASP.NET Web API模板中,他们采用了一种非常简单的方法来查看带有稍微漂亮主页的视图

这在某种程度上让我回过神来。主要是因为我假设WebAPI就是为这个设计的,一个WebAPI,而不是别的

在其他人看来,开发web客户端(与API接口)是标准的吗

  • 在WebAPI项目内部

  • 在Web API项目之外,将Web客户端与移动或桌面客户端分离


在可维护性和代码清洁度方面,第二种选择对我来说似乎是合乎逻辑的,但在ASP.NET Web API中进行设计时,可能还有其他一些方面是有益的。您觉得怎么样?

很高兴看到您使用Web API

关于第一个问题,您是对的,将Web API与视图分离在概念上是有意义的。我建议在MVC新建项目对话框中使用“Empty”项目类型,然后添加API控制器。或者自己将NuGet包添加到一个空的web项目中。这些包不应该向您的项目添加任何视图

关于客户机,为了便于维护,我强烈建议将客户机库分离到单独的项目中。不过,在客户机和Web API之间共享公共数据类型也不错。在这种情况下,将模型移动到单独的dll中,并让客户端和Web API引用该库中的类型是一种常见的模式

您希望客户机和Web API分开的几个原因(还有更多原因):

  • 如果分发库,则希望分发客户端代码,而不是Web API代码
  • 您希望在客户机和服务器之间创建一个干净的契约,避免客户机依赖于服务器实现,反之亦然

Youssef,你能提供你提到的设计模式的样本吗?是否可以在单独的项目中构建默认的客户端接口(视图或表示层)并作为视图DLL分发?让所有用户都可以使用,而无需构建自定义视图?请看。它帮助您了解如何正确设计API。