使用 ASP.NET MVC 操作方法

Posted

技术标签:

【中文标题】使用 ASP.NET MVC 操作方法【英文标题】:Consuming ASP.NET MVC action methods 【发布时间】:2012-05-15 18:46:28 【问题描述】:

当前情况:一个 ASP.NET MVC 网站,其中包含许多控制器和操作方法,以及允许添加配方的视图。

现在,我必须创建一个 WPF 应用程序,它充当 UI 以添加食谱(与网站相同)。

我的问题是:我可以使用 ASP.NET MVC 站点来公开 WPF 应用程序使用的服务操作(以及如何做到这一点)?或者我应该更好地为此创建专用的 WCF 服务,并让 WPF 和 ASP.NET MVC 站点使用这些服务?

谢谢, 路德维希

【问题讨论】:

【参考方案1】:

我已经成功地使用 MVC 控制器和动作来为来自浏览器的 html 视图以及外部应用程序提供服务。它运作良好,但就目前而言,您需要一些工具:

    我有一个动作过滤器,它以客户端请求的格式返回由动作产生的模型(通过检查 Accepts 标头,查找 application/json 或 text/xml)。因此,我可以将生成的模型序列化为 JSON 或 XML(我更喜欢 JSON)。 您需要在您的客户端应用程序中找到或创建一个简单的 API 来为您的操作创建 WebRequest,然后处理结果。我创建了一个可以 POST 或 GET 的简单 API,然后将任何生成的 JSON 反序列化为一个对象(使用 JSON.NET)。有 REST 客户端 API 可供您使用。

但是,如果您采用 WCF-REST 路线,则可以避免使用这些额外的工具。更好的是,我会研究 ASP.NET MVC 4 的 WebApi 功能(这是我将迁移到的功能)。

郑重声明,我认为 WCF 功能强大,但我们的组织已经厌倦了转动所有旋钮并按下所有开关以使其正常工作以及从一次安装到其他。另一方面,MVC 可以正常工作……而且由于我们已经使用它来为我们的 HTML 视图提供服务,因此只需添加一些额外的代码就可以让它处理服务调用,这真是一种乐趣。当然,这只是个人喜好。

【讨论】:

谢谢,web api 的东西看起来很有趣。但是,它仍然是测试版,对于已经在生产环境中使用的我来说可能太危险了。创建一个包含所有需要暴露在外部的逻辑的特定控制器是个好主意吗?然后该逻辑将使用底层控制器逻辑。 它将很快退出测试版。开始开发针对测试版的解决方案,在进入 RTM 时进行调整并获利似乎是合理的 :)

以上是关于使用 ASP.NET MVC 操作方法的主要内容,如果未能解决你的问题,请参考以下文章

MVC Contrib 是不是兑现了提高 ASP.NET MVC 生产力的承诺

表单身份验证、ASP.NET MVC 和 WCF RESTful 服务

处理 OAuth 2.0 身份验证 - 在 ASP.NET MVC 应用程序中获取令牌重定向令牌响应

ASP.NET MVC中jQuery与angularjs混合应用传参并绑定数据

在 WPF、Silverlight 和 ASP.NET 之间共享一个公共 DAL

使用 ASP.NET MVC 操作方法