2015-12-28 186 views
1

我在写一个控制台应用程序,我想应用MVC模式。由于ASP.net MVC已经是一个成熟的框架,我不知道我是否可以将它用于我的控制台应用程序,而不是重新发明轮子。使用Microsoft.AspNet.Mvc控制台应用程序

例如,我可以从Microsoft.AspNet.Mvc.Controller继承来派生我自己的控制器类吗?

我已经在谷歌上做了一些研究,但找不到具体的问题。

回答

5

我正在写一个控制台应用程序,我想应用MVC模式。 由于ASP.net MVC已经是一个成熟的框架,我不知道我是否可以使用 它为我的控制台应用程序,而不是重新发明轮子。

不,你不愿意。 ASP.NET MVC是为Web和HTTP协议而设计的。

例如,我可以从Microsoft.AspNet.Mvc.Controller继承到 派生我自己的控制器类吗?

你可以继承,但是为它编写一个宿主环境来模拟这个HTTP世界是完全矫枉过正的。

+0

非常感谢@Darin。你能否详细说明为什么这是一个矫枉过正的问题?例如如果我从AspNet.Mvc类派生出什么东西会发生什么? – james

+2

什么都不会发生。您将无法使用它,因为您需要编写抽象类的实现:['HttpContextBase'](https://msdn.microsoft.com/en-us/library/system.web。 httpcontextbase(v = vs.110)的.aspx)。显然,为了做到这一点,您需要编写一个实现,以便像HttpRequestBase,HttpResponseBase,HttpSessionStateBase这样依赖的其他抽象类的实现,所以您很快就会意识到这不是您想要做的事情。 –

1

编写ASP.NET MVC控制台应用程序意味着您正在执行自主主机而不是将其托管在IIS等Web服务器中。这是可能的,但它是不平凡的。有几个选项:

  1. Create MVC 6 application和使用DNX到self-host
  2. 参加的情况下利用IIS 7 Hostable Web Core您的应用程序将只在Windows Vista上+
  3. 写有NancyFx或类似的框架

编辑: 显然我误解了这个问题:不,在使用http的web应用程序以外的情况下使用MVC框架没有意义。但我会留下这个答案,以防有人在搜索时打开这个问题,我认为这个问题是关于这个问题的。