---根据评论编辑---
此屏幕截图显示了您可以接近的可能结构。当然,您可以采用最适合您的应用的设计。
一个单独的类库项目也是如此ControllerLib
,它作为一个带入主项目Service Reference
(屏幕截图中没有显示,但应该在 SecondMVCApplication 项目的 References 文件夹中)。两个控制器文件(HomeController.cs
和LocationController.cs
是实现Controller类的控制器文件,和使用模板新建MVC4应用时的Controller文件一样)
因此,对于您关于是否存在 SVC 文件的问题。不。在 MVC 4 中,无论应用程序是一个项目还是多个项目的组合,都没有 SVC 文件之类的东西(除非我弄错了)。在 内部SecondMVCApplication
,有一个名为的文件RouteConfig.cs
,其中包含路由 URL,只要您添加服务引用并且存在控制器功能。代码将运行。此外,我展示的示例屏幕截图还包含一个WebApiConfig.cs
文件。如果需要,您可以使用该文件为移动设备执行 API。因此,常规RouteConfig.cs
处理网站请求和WebApiConfig.cs
处理 API 请求。
需要注意的是:如果您将模型项目用作单独的项目(我知道您会这样做,因为它是一个M -VC 项目...... DUH !!)。确保将连接字符串放在 web.config 主项目中(在本例中为SecondMVCApplication
)。我记得我被困在这个问题上 3 天(每次 8 小时)试图解决这个问题。希望你不要碰到它。
---结束编辑---
以下对您问题的回答主要基于我的知识,可能对所有用户都正确,也可能不正确。
这取决于你如何看待它。通常,Web-API 服务更适合创建后端服务以向不同平台(如移动、桌面应用程序等)提供数据有效负载。但是,MVC4 Internet 应用程序将具有前端方面,即最终用户看到的视图。
AFAIK,有两种方法可以做到这一点。如果将 API 作为服务参考使用。另一种是使用 HTTP 操作(我将在您关于 HTTP 客户端的问题中提到,并使用服务参考方法保留此答案)。
这取决于您的应用程序是如何完成的。就像我说的,如果它是一个网站,你的 MVC 模式不需要做任何事情,但是模型、视图和控制器都被设计为在不使用任何服务的情况下协同工作。
虽然,正如我在对问题的评论中提到的,如果它是一个大型应用程序,那么您需要将它们分解为不同的项目,以使应用程序模块化和灵活。所以你最终会创造出不同的Service Library
. 如果您继续Service Library
前进,那么您只需使用Add Reference
选项将您的 API/Projects/Whatever-you-call-it 引入项目。(为此,我通常将所有项目放在一个解决方案中,并让 Visual Studio 管理构建顺序,因为我懒得编写构建脚本)。
同样,在控制台应用程序中使用 Web 服务时也可以应用相同的逻辑。
- 我已经想出使用它的唯一方法是使用 HttpClient 还有其他方法吗?
使用 Web API 的一种方法是使用 HTTP。您是否知道如何编写 http 请求标头和处理 http 响应。如果是这样,这是我提到的第二种方式。您通过它的 URL 调用 Web 服务,然后获取数据并执行任何工作。如果您在控制台应用程序中使用 http 的答案是否定的,请查看这篇文章:使用 C# 控制台应用程序创建 HTTP 发布请求并接收响应
- 例如,如果 web-api 为 post 方法请求对象“Task”会发生什么情况,我如何才能填充对象“Task”并将其发布回 web-api?
我想我在您之前的回答中间接回答了这个问题(假设您要走 HTTP 之路)。如果没有,请发表评论,我会看看是否可以为您找到一些资源。
- webservice 将在内部使用 拥有 web-api 服务是否值得?
我在对该问题的评论中回答了这个问题。询问您是否需要澄清。
希望这一切都有帮助。