单独项目中 MVC 解决方案中的 Web API

2023-12-20

我正在创建一个新的 MVC4 项目,研究使我相信现在通过 Web API 框架而不是控制器操作可以更好地实现从 javascript 到服务器端的通信。我对此的理解正确吗?

我假设我可以在 Web API 和 MVC 控制器之间共享我的所有属性等,所以从表面上看,这对我来说似乎并不是一个巨大的变化。

当我设置应用程序时,我喜欢将组件拆分为项目。我的计划是有一个 MVC 项目和一个 Web API 项目。但我遇到了问题。例如,我最终得到了 2 个应用程序,单独的路由设置等等。

所以我的问题是,在 MVC 应用程序中,Web API 框架应该位于同一个项目中,还是应该将 Web API 分成自己的项目并解决这些问题?


不幸的是你错了 -我假设我可以在 web api 和 mvc 控制器之间共享我的所有属性等,所以从表面上看,这对我来说似乎并不是一个巨大的变化。

Web API 和 MVC 使用的许多概念虽然乍一看很相似,但实际上并不兼容。例如,Web API 属性是System.Web.Http.Filters.Filter和 MVC 属性是System.Web.Mvc.Filter- 并且它们不可互换。

这同样适用于许多其他概念 - 模型绑定(完全不同的机制)、路由(Web API 使用 HTTPRoutes 而不是路由,即使它们都在相同的底层 RouteTable 上运行)、依赖解析器(不兼容)等等 - 尽管在表面上看,实际中却有很大不同。而且,Web API没有区域的概念。

最终,如果您想要实现的只是采用一种“新的、时尚的”方式来提供 JSON 内容,那么在走这条路之前请三思。我当然不会建议重构任何现有代码,除非您真正考虑采用 HTTP 并以 RESTful 方式构建应用程序。

这完全取决于您正在构建的内容。如果您正在开始一个新项目,并且您需要的只是提供一些 JSON 来促进您的 Web 应用程序 - 只要您愿意接受一些可能重复的代码(如我上面提到的东西),Web API 可以轻松托管在与 ASP.NET MVC 相同的项目。

如果您要为您的在线服务构建适当的 API(可能由外部客户或各种设备使用,例如为您的移动应用程序提供支持),我只会将 Web API 分离到一个单独的项目中。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

单独项目中 MVC 解决方案中的 Web API 的相关文章

  • 更改图像颜色与透明背景

    我需要使用 c System Drawings 将透明背景上带有绿色圆圈的图像加载到位图图像中 这是最简单的部分 但是 我需要在将其添加到更大的图像之前更改圆圈的颜色 而不影响周围的透明度 就我而言 我需要将圆圈颜色更改为黄色并将其添加为太
  • C 中的 '\0' 和 printf()

    在 C 入门课程中 我了解到在存储字符串时存储空字符 0在它的最后 但是如果我想打印一个字符串怎么办 printf hello 虽然我发现它并没有结束 0通过以下声明 printf d printf hello Output 5 但这似乎不
  • 析构函数与成员函数竞赛

    当我在析构函数内时 其他线程是否可能开始执行对象的成员函数 遇到这种情况该如何处理呢 C 没有内在的保护来防止在删除对象后使用它 忘记竞争条件 另一个线程可以在完全删除你的对象后使用你的对象 Either 确保只有一个位置 代码拥有该对象
  • UI 线程正在阻塞调用 COM 对象的后台线程

    我正在开发一个通过第三方 COM 库与外部设备通信的应用程序 我试图让与设备的所有通信都通过后台线程 以防止通信问题搞砸我的应用程序 并消除在 UI 线程中进行通信所引入的一些其他复杂性 问题是 每当发生导致主 UI 线程阻塞的情况 即调用
  • 用 OpenCL C 编写快速线性系统求解器

    我正在编写一个 OpenCL 内核 它将涉及求解线性系统 目前我的内核太慢了 提高线性系统部分的性能似乎是一个不错的起点 我还应该注意 我并没有尝试使我的线性求解器并行 我正在研究的问题在宏观层面上已经是令人尴尬的并行 以下是我编写的 C
  • 为什么我收到编译错误“使用已删除的函数 'std::unique_ptr ...”

    我收到一条巨大的编译错误消息 c mingw include c 6 1 0 bits predefined ops h 123 18 error use of deleted function std unique ptr lt Tp D
  • MVC4 - ContextDependentView - 是什么意思?

    我刚刚开始使用 MVC4 我看到的第一个操作方法有一些新内容 我查了一下互联网 找不到任何关于此的信息 public ActionResult LogOn return ContextDependentView 有谁知道 ContextDe
  • Web浏览器控件:如何捕获文档事件?

    我正在使用 WPF 的 WebBrowser 控件加载一个简单的网页 在这个页面上我有一个锚点或一个按钮 我想在我的应用程序后面的代码中 即在 C 中 捕获该按钮的单击事件 WebBrowser 控件是否有办法捕获加载页面元素上的单击事件
  • _MM_TRANSPOSE4_PS 在 GCC 中导致编译器错误?

    我第一次在 GCC 而不是 MSVC 中编译我的数学库 并经历了所有的小错误 我遇到了一个根本没有意义的错误 Line 284 error lvalue required as left operand of assignment 284号
  • 是否自初始化 'A a = a;'允许吗?

    此代码在运行时在复制构造函数中失败 但编译器 MSVS2008 没有发出警告 您能解释一下 最好引用标准 这段代码是否非法或什么 我理解 A a a 永远不应该写在第一位 但我正在寻找理论背景 class A public A p new
  • 如何在 C 语言中获取输入中的空格

    我想从控制台获取字符数组 它还包含空格 我在 C 中知道的唯一方法是 scanf 但是一旦遇到空格 它就会停止接受输入 我该做什么 这就是我正在做的事情 char address 100 scanf s address 尝试使用 fgets
  • “DeploymentItem”属性是什么意思?

    假设我们有一个简短的程序 namespace ConsoleTryIt static class Program static void Main string args var sum Add 1 2 private static int
  • 当分配返回 0 时,具有空异常规范的运算符 new 调用构造函数

    我有以下声明 void operator new size t s PersistentMemory m throw return m gt allocatePersistentMemory s 我正在测试启动时的内存耗尽 这会导致m gt
  • 我的代码哪里有泄漏?

    下面是我的代码 它打开一个 XML 文件 old xml 过滤无效字符并写入另一个 XML 文件 abc xml 最后 我将再次加载 XML abc xml 当执行以下行时 出现异常 表示 xml 文件被另一个进程使用 xDoc Load
  • Rx 在不同的线程上生产和消费

    我试图通过此处的示例代码来简化我的问题 我有一个生产者线程不断地输入数据 并且我尝试在批次之间添加时间延迟来对其进行批处理 以便 UI 有时间渲染它 但结果并不如预期 生产者和消费者似乎在同一个线程上 我不希望批处理缓冲区在正在生成的线程上
  • 为什么我无法通过 lambda 捕获“this”指针?

    考虑以下代码 class A public void foo auto functor this A a this auto functor a The compiler won t accept this instead of a a g
  • SMTP 客户端在 C# 应用程序中显示错误“未采取请求的操作”

    我正在尝试使用 hotmail 帐户设置电子邮件发送应用程序 代码如下所示 MailMessage mail new MailMessage from to mail Subject Proba email mail Attachments
  • 推断“x => { throw .. }”的 Lambda 与重载方法中的 Func 匹配吗?

    我不明白为什么 C 最终在以下 LINQPad 代码中执行不正确的扩展方法 void Main Actual Sync Action Expected Sync Action Run x gt x Dump Actual Async Tas
  • 从其对象获取结构体字段的名称和类型

    例如 我有一个类似这样的结构 struct Test int i float f char ch 10 我有一个该结构的对象 例如 Test obj 现在 我想以编程方式获取字段名称和类型obj 是否可以 顺便说一句 这是 C 你正在要求C
  • 在 MVC4 中使函数异步时 HttpContext.Current null

    我目前正在 VS2010 SP1 中开发 MVC4 我做了其中一个功能 控制器类异步 作为其中的一部分 我制作了控制器类 派生自 AsyncController 并添加了以下两个方法 参见代码部分 1 和 2 下 一种以 Async 结尾的

随机推荐

  • 错误找不到模块“umask”

    我刚刚安装节点 x64在我的 Windows 10 计算机上 我保留所有默认配置 我打开cmd并输入 npm v 然后我得到以下错误 module js 457 throw err Error Cannot find module umas
  • 无法从 Java 中的 JDateChooser 检索日期

    我在用JDateChooser from here http www toedter com en jcalendar api index html 但是我无法检索使用该方法设置的格式的日期setDateFormatString在控制台中显
  • 无论如何,要防止快速单击时 Chrome 中的元素蓝色突出显示?

    大多数时候我并不担心它 但我有一个图像轮播 如果我快速单击下一个和上一个 div 它们将在 Chrome 中突出显示 我尝试使用大纲 无但没有效果 有什么解决方案吗 对于 Android 上的 Chrome 您可以使用 webkit tap
  • 如何使用 Mapview 设置布局

    我已经创建了我在其中使用 MapView 的应用程序 现在我想在我的 MapView 中使用后退按钮 我已经开发了布局 但在地图视图上看不到按钮 当我从模拟器中按下后退按钮时 地图视图将关闭并显示后退按钮 任何朋友都可以帮我如何在 MapV
  • 在 PrestaShop 中更新 theme.yml

    所以我试图修改 PrestaShop 主题中 theme yml 的布局 我注释掉以下内容 hooks modules to hook displayFooter ps linklist ps customeraccountlinks ps
  • 有没有办法以编程方式更新框架(Swift)

    是否可以像在界面生成器中那样以编程方式更新框架 我的一些对象由于动画而错位 我猜无论如何我都想修复它 但它让我想起了前面提到的问题 编辑 我已经做了一些谷歌搜索以及在 stackoverflow 上查找 但没有找到我要找的东西 我想将一些按
  • 全局默认超时是多少

    Python 3 4 尝试查找 urllib request urlopen 中的默认超时是多少 它的签名是 urllib request urlopen url data None 超时 cafile None capath None c
  • Django 1.5b1:执行 django-admin.py 导致“没有名为设置的模块”错误

    我最近安装了 Django 1 5b1 我的系统配置 OSX 10 8 Python 2 7 1 虚拟环境 1 7 2 当我打电话时django admin py命令我收到以下错误 devel ninja Django 1 5b1 djan
  • IntelliJ Structural Search 用于查找实现 A 但未实现 B 的类

    我正在尝试使用 IntelliJ 10 5 的 结构搜索 功能来查找实现接口的类 A但不实现另一个接口 B 首先搜索实现的类A 然后将搜索范围限制为 以前的搜索结果 很容易将其减少为仅搜索未实现的类B 这在概念上非常简单 不幸的是 我还没有
  • 从 SoundCloud 的 Waveform.js 库获得更好的质量

    目前我正在使用 Waveform js http waveformjs org http waveformjs org 从 SoundCloud 轨道生成波形 不幸的是生成的canvas图像质量非常低 尤其是在视网膜上 我想创建与 Soun
  • 如何在 Selenium webdriver 中录制视频 [关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我有每天晚上运行的自动化脚本 大约 350 个脚本或测试用例 我想录制每个测试用例 Python 脚本
  • 访问短信收件箱

    如何从应用程序 在 Symbian s60 上 访问 SMS 收件箱 我们可以用j2me吗 C 或 Python 怎么样 从 j2me 中的收件箱读取消息是不可能如果您想阅读短信 那么您可以使用特定端口发送消息并 你的 j2me 应用程序应
  • lerna add :找不到可以添加 的包

    已将 lerna 添加到我的项目中 我已通过成功运行此命令将包添加到我的服务器 lerna add types express dev 但是当我想添加另一个时 lerna add graphql class validator type g
  • 具有多个目标可执行文件的 Swift 包管理器?

    有谁知道 Swift 包管理器是否支持从一个包中生成多个可执行文件 我有一个 C 程序需要迁移到 Swift 目前它被打包为具有多个目标的 makefile 我有点困惑如何将其映射到 Swift 包 或者它是 包 Yes project p
  • Domino Designer:从嵌入视图访问选定的行

    我再次有一个关于 Domino Designer 的问题 有些时事通讯应分配给多个联系人 因此 我构建了一个包含组合框的表单来选择新闻通讯 下面有一个嵌入视图 其中包含所有可用的联系人 Combobox ComboBox Newslette
  • 无法导入名称 TEMPLATE_CONTEXT_PROCESSORS

    我尝试使用 virtualenv 但一切都出了问题 我停用 停用 所有 virtualenv 当我尝试启动时 python manage py runserver 我收到此错误消息 Traceback most recent call la
  • “JSON”和“jQuery”在 Internet Explorer 7 和 8 中仍未定义

    我把这三个流行的脚本包含在我的 tags 当我检查 IE7 和 8 中的错误时 我得到以下信息 JSON 未定义 IE7 jQue
  • 如何从 Windows 8 WInJS 应用程序中启动 IE10 中的 URL?

    这可能是一个愚蠢的问题 但我一直无法找到答案 我想从我的 Windows 8 javascript 应用程序中使用 IE10 启动特定 URL 即我的应用程序将暂停 而 IE10 将启动 我如何用 JavaScript 做到这一点 谢谢 提
  • 将数组存储为字段值或将数组值存储为记录是一个好主意吗?

    在我的应用程序中 我有 文章 类似于帖子 推文 文章 它们标有描述性预定义标签 即 困难 简单 红色 蓝色 业务 等 这些可用标签存储在一个表中 称为 标签 其中包含所有可用标签 每篇文章都可以标记多个标签 并可通过自定义管理界面进行编辑
  • 单独项目中 MVC 解决方案中的 Web API

    我正在创建一个新的 MVC4 项目 研究使我相信现在通过 Web API 框架而不是控制器操作可以更好地实现从 javascript 到服务器端的通信 我对此的理解正确吗 我假设我可以在 Web API 和 MVC 控制器之间共享我的所有属