2012-05-07 111 views
6

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

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

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

感谢, 路德维希

回答

3

我已经成功地使用MVC控制器和行动,以服务于来自浏览器的两个HTML视图,以及外部的应用程序。它运作良好,但它需要一些工具:

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

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

为了记录,我认为WCF功能强大,但是我们的组织已经厌倦了可以转动所有旋钮并打开所有开关以使其正常工作并且易于从一次安装另一个。另一方面,MVC的工作原理......因为我们已经使用它来服务我们的HTML视图,所以只需添加一些额外的代码来处理服务调用也是一件真正的乐事。当然,只是个人偏好。

+0

谢谢,web api的东西似乎很有趣。但是,它仍然是测试版,并且可能对我来说已经在生产环境中使用过于危险。创建一个包含所有需要暴露在外的逻辑的特定控制器是否是一个好主意?该逻辑然后将使用底层控制器逻辑。 –

+0

它的测试速度会很快。开始开发针对测试版的解决方案似乎是合理的,当它进入RTM时调整,并获利:) – HackedByChinese