ASP.NET Web API:客户端设计实践

4
对于那些关注相对较新的ASP.NET Web API的人来说,他们知道这是一个构建设计良好、外向型HTTP服务的良好框架,可以使用标准的XML或JSON内容类型跨越许多不同的客户端。
最近,我正在设计一个大型API,用于Web和移动客户端。我注意到,在由Microsoft的NuGet为Web API提供的ASP.NET Web API模板中,他们采取了一种非常简洁的方法来处理视图,并稍微美化了主页。
这在某种程度上让我回想起了以前的事情。主要是因为我认为Web API正是为此而设计的,仅仅是一个Web API,没有其他作用。
在其他人的看法中,开发与您的API交互的Web客户端是:
  • 在Web API项目内部?

    还是

  • 在Web API项目之外,将Web客户端分离,就像你会分离移动或桌面客户端一样?

第二个选择在维护性和代码清晰度方面似乎更合理,但在设计ASP.NET Web API时可能会有其他有益的视角。你怎么看?

请查看 https://github.com/alisabzevari/LiteApi。它可以帮助您了解如何正确设计API。 - alisabzevari
1个回答

2

很高兴看到您在使用Web API!

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

关于客户端,我强烈建议将客户端库分离到单独的项目中以实现可维护性。共享客户端和Web API之间的公共数据类型是可以的。在这种情况下,常见的模式是将模型移动到单独的dll中,并使客户端和Web API引用该库中的类型。

以下是您希望客户端和Web API分开的一些原因(还有许多其他原因):

  • 如果您要分发库,则希望分发客户端代码而不是Web API代码
  • 您希望在客户端和服务器之间创建干净的协议,并避免客户端依赖于服务器实现或反之亦然。

Youssef, 您能提供一下您所提到的设计模式的示例吗?是否可以在单独的项目中构建默认的客户端界面(视图或表示层)并分发为视图DLL?这样所有用户都可以使用而不必构建定制视图吗? - user266909

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接