2012-01-10 33 views
2

WinForms应用程序是否可以通过连线简单地调用Mvc应用程序以执行简单查询(进入控制器>服务>存储库)?我想知道它是否应该提供一个服务api控制器,与应用程序的其余部分分开,将Json吐出到WinForms应用程序,还是应该放到WCF/WebService路由中?WinForm应用程序与ASP.NET Mvc或WebService进行通信

它也需要能够进行身份验证,因此最终的解决方案是安全的。由于WinForms应用程序需要轮询终点,我不想在每个请求中发送用户名/密码。是否有一些关于端点会话的规定超时,然后需要从客户端重新登录?

回答

2

是的,您可以使用System.Net.HttpWebRequestSystem.Net.HttpWebResponse类创建一个HTTP客户端。请参阅here for an example

Web应用程序确实有一个会话超时,当会话中没有活动时开始计数。因此,如果您不想在每次请求中重新进行身份验证,则需要将HttpWebResponse中服务器发送给您的Cookie与下一个HttpWebRequest一起回送到服务器,以便服务器知道您的会话并让您保持联系登录。如果您删除了Cookie,则需要重新进行身份验证。如果您暂时不与服务器交互(通常约20分钟),您还需要重新进行身份验证。 (假设您的WinForms应用程序将而不是检查登录表单上的'记住我'复选框。)

+0

那么在这种情况下使用WCF/WebService矫枉过正?我是否也正确地假设我必须从WinForm应用程序发布相同的帐户/身份验证控制器,就像我在Mvc应用程序中首先进行身份验证一样? – jaffa 2012-01-10 15:56:55

+0

嗯,我不能说话权威,但我认为它会在任何地方从一个过度的和向上的位置。另外,我不确定你的身份验证控制器,也许你可以直接调用它,但我正在考虑更多地使用HttpWebRequest和HttpWebResponse来模拟使用MVC应用程序的人的确切行为,包括身份验证。这意味着进入“登录”页面,并通过POST请求提交“登录”表单。但是,如果直接与您的身份验证控制器通话会是一条捷径,那很好。 – 2012-01-10 19:09:08

相关问题