C# 使用不带整个MVC框架的控制器
在设计系统时,我正在尝试使用MVC做一些事情,我想尝试一下,看看是否可以在MVC框架之外使用控制器的概念。当我说在外面时,我指的是在我自己的C#服务内,而不是在一个网站内 我启动了一个简单的控制台应用程序来测试这个理论,它非常简单,可以将概要文件更改为非客户端概要文件,添加到C# 使用不带整个MVC框架的控制器,c#,asp.net-mvc,windows-services,C#,Asp.net Mvc,Windows Services,在设计系统时,我正在尝试使用MVC做一些事情,我想尝试一下,看看是否可以在MVC框架之外使用控制器的概念。当我说在外面时,我指的是在我自己的C#服务内,而不是在一个网站内 我启动了一个简单的控制台应用程序来测试这个理论,它非常简单,可以将概要文件更改为非客户端概要文件,添加到System.Web.Mvc,创建一个控制器并让它返回一个JsonResult。设置起来很容易,这让我很高兴,因为如果我想让一个服务用JSON响应,这就完成了一半的工作 下一步是设置一个Http服务器类,如果我能利用框架的另
System.Web.Mvc
,创建一个控制器并让它返回一个JsonResult。设置起来很容易,这让我很高兴,因为如果我想让一个服务用JSON响应,这就完成了一半的工作
下一步是设置一个Http服务器类,如果我能利用框架的另一部分,将传入的请求映射到我的控制器,我将非常喜欢它。不幸的是,这是我迷路的地方,我不知道后面的代码是什么,以达到一个特定的控制器的功能和所有的参数到位
有没有人对如何实现这一点有想法,或者有什么资源可以利用
简而言之:我想在我自己的服务中利用控制器的使用,运行它自己的HTTP服务器。你不是想重新发明轮子吗 如果返回JSON是您的主要目的之一,那么WCF可以满足您的需求。有了WCF,您可以自由地在IIS中托管它。拥有自己的HTTP服务器可以实现第二个目的 您正在尝试实现某种路由,其中基于URL的不同操作将被调用。这是否与使用不同方法的WCF服务以及客户端使用不同的URL调用它们中的每一个类似
在非web应用程序中尝试控制器概念似乎是一种创新,但在您的情况下,它看起来像是过度工程化了。您不是在尝试重新发明轮子吗 如果返回JSON是您的主要目的之一,那么WCF可以满足您的需求。有了WCF,您可以自由地在IIS中托管它。拥有自己的HTTP服务器可以实现第二个目的 您正在尝试实现某种路由,其中基于URL的不同操作将被调用。这是否与使用不同方法的WCF服务以及客户端使用不同的URL调用它们中的每一个类似
在非web应用程序中尝试控制器概念似乎是一种创新,但在您的情况下,这看起来像是过度工程化了。您可以使用设计模式而不使用框架-我的意思是,您可以在任何您认为解决问题的地方应用模型-视图-控制器模式-如果您认为可以替换“视图”通过“服务”,你可以应用一些概念
然而,还有其他模式可能更适合服务,尽管如果我们专门讨论JSON服务,那么只使用ASP.NET MVC框架就可以了(而不是试图重新编写它)。您可以使用设计模式而不使用框架-我的意思是,无论您认为模型-视图-控制器模式解决了什么问题,您都可以应用它-如果您认为可以用“服务”替换“视图”,您可以应用一些概念
然而,还有其他模式可能更适合服务,尽管如果我们专门讨论JSON服务,那么只使用ASP.NET MVC框架就可以很好地工作(而不是尝试重新编写)。基本的MVC模式并不难复制。我会认真考虑编写你自己的,而不是试图把MVC类移植到你的应用程序中。
Simon基本的MVC模式并不难复制。我会认真考虑编写你自己的,而不是试图把MVC类移植到你的应用程序中。
Simon如果它对您有所帮助,整个ASP.NETMVC框架都是开源的,您可以从下载。您可以使用此处的库来查看框架在幕后的工作方式,并根据需要调整内容以供自己使用。如果它对您有所帮助,整个ASP.Net MVC框架都是开源的,您可以从以下位置下载所有内容。您可以使用此处的库来查看框架在幕后是如何工作的,并根据需要调整内容以供自己使用。不,我不希望重新发明轮子。MVC框架提供了一种很好的机制,用于接收传入的web请求,将其映射到控制器上的方法并响应它。我可以完全抛弃Mvc中的控制器,按照Sohnee建议的“概念”,但如果可以在Mvc ASP.NET应用程序之外使用现有类来实现这一点,我愿意使用它。正如你所看到的,我并没有试图在这里重新发明轮子。也就是说,我在谈论WCF:)不,我不想重新发明轮子。MVC框架提供了一种很好的机制,用于接收传入的web请求,将其映射到控制器上的方法并响应它。我可以完全抛弃Mvc中的控制器,按照Sohnee建议的“概念”,但如果可以在Mvc ASP.NET应用程序之外使用现有类来实现这一点,我愿意使用它。正如你所看到的,我并没有试图在这里重新发明轮子。也就是说,我在讨论WCF:)在深入研究其他选项之后,我同意。我根本不需要使用视图,只需要有一个纯控制器驱动的数据接口(JSON输入和输出)。我会将长期运行的任务委托给一个单独的服务(共享同一型号的DLL)。在深入研究其他选项后,我同意。我根本不需要使用视图,只需要有一个纯控制器驱动的数据接口(JSON输入和输出)。我将把长时间运行的任务委托给一个单独的服务(共享相同型号的DLL)。