【问题标题】:Consuming ASP.NET MVC controller action in a WPF app在 WPF 应用程序中使用 ASP.NET MVC 控制器操作
【发布时间】:2013-10-14 14:08:55
【问题描述】:

我正在设计一个具有两个 UI 的 Web 应用程序 - 一个是传统网页(HTML 视图),一个是 WPF 应用程序。我知道,为了实现关注点分离,最好设计如下所示,MVC 应用程序和 WPF 应用程序使用的 Web API。

但是我时间紧迫,我想知道我是否可以只使用如下的传统 MVC 设计。此外,我可能还有更多非 CRUD 操作,如果我要使用 WebAPI,则必须以 RPC 样式实现,这会增加 webAPI 的复杂性(更多工作、更多时间)。

我唯一的问题是 - 可以在 WPF 应用程序中使用 MVC 操作吗?如果是,我是否需要使用this post 中提到的任何特殊 API 来执行此操作,或者新的 HttpClient 包就足够了吗?

【问题讨论】:

    标签: wpf asp.net-mvc asp.net-mvc-4 asp.net-web-api asp.net-web-api-routing


    【解决方案1】:

    是的,WPF 应用程序,就像任何其他能够发送 HTTP 请求和接收响应的应用程序一样,能够使用 ASP MVC 控制器操作。

    毕竟,ASP MVC 框架只是解析 URL,推断路由信息(区域、控制器、动作、参数等),最后在向您发送 HTTP 响应之前调用带有参数的关联动作。

    来自MSDN

    相比之下,与 ASP.NET MVC 应用程序的用户交互是 围绕控制器和操作方法组织。控制器 定义动作方法。控制器可以包含尽可能多的操作方法 如所须。动作方法通常具有一对一的映射 用户交互。用户交互的示例包括输入 URL 进入浏览器,单击链接并提交表单。每一个 这些用户交互会导致将请求发送到服务器。在 每种情况下,请求的 URL 都包含 MVC 的信息 框架用于调用操作方法。

    因此,即使是简单的 HttpClient 也足以与 ASP MVC 控制器操作进行交互。 但您也可以使用您选择的框架或库来帮助您构建 HTTP 请求和/或将 HTTP 响应转换为更适合您的应用程序的内容。

    这不是强制性的,但可以节省一些时间!

    话虽如此,请注意所有需要身份验证的场景,这可能会使事情变得更加困难:

    • 如果您需要表单身份验证,那么您可以检索您的身份验证 cookie 首先,然后将其包含在以后的 HTTP 请求中(请参阅 这个post了解更多信息)
    • 如果您需要 Windows 身份验证,则必须提供您的凭据(请参阅 asp.net 网站上的 page

    【讨论】:

    • 您能否解释一下您对身份验证方案的含义?
    • 我已经更新了我的答案,提供了有关身份验证案例的更多详细信息。
    • 第三方代理将处理什么身份验证 - 例如 Siteminder。
    • 据我所知,第三方身份验证通常适用于必须包含在 HTTP 请求标头中的令牌。 HttpClient API 使您能够添加标题字段。从未与 Siteminder 打过交道,我不知道它到底在期待什么?也许你会在这里找到一些提示:social.msdn.microsoft.com/Forums/en-US/….
    • 我们似乎正在转向另一个话题,也许创建一个关于它的新问题可能会很有趣。因此,您将增加获得更好和更详细答案的机会;)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-09-01
    • 1970-01-01
    • 2017-09-10
    • 1970-01-01
    • 1970-01-01
    • 2017-11-03
    相关资源
    最近更新 更多