ASP.NET MVC、Spring.NET、NHibernate初始设置/示例/教程
您是否一直在进行涉及Spring.NET和NHibernate的ASP.NETMVC开发?我想看到一个这样的设置信息丰富的例子,所以我可以建立自己的项目在此基础上 我在谷歌上搜索了一下,发现了一些不错的东西,比如S#arp架构,一篇关于常规ASP.NET(WebForms)与框架集成的文章,等等。尽管如此,我还是错过了一个关于ASP.NETMVC的好教程&主题 注:我知道Spring和Hibernate是如何工作的,我只需要将它们插入MVC应用程序。现在不想使用S#arp架构ASP.NET MVC、Spring.NET、NHibernate初始设置/示例/教程,.net,asp.net-mvc,nhibernate,spring.net,.net,Asp.net Mvc,Nhibernate,Spring.net,您是否一直在进行涉及Spring.NET和NHibernate的ASP.NETMVC开发?我想看到一个这样的设置信息丰富的例子,所以我可以建立自己的项目在此基础上 我在谷歌上搜索了一下,发现了一些不错的东西,比如S#arp架构,一篇关于常规ASP.NET(WebForms)与框架集成的文章,等等。尽管如此,我还是错过了一个关于ASP.NETMVC的好教程&主题 注:我知道Spring和Hibernate是如何工作的,我只需要将它们插入MVC应用程序。现在不想使用S#arp架构 p.p.S:我稍后
p.p.S:我稍后会更新链接,包括以下链接:我终于设法为我的ASP.NET MVC应用程序提供了Spring.NET工具。刚刚编写了一个定制的控制器工厂(非常简单),然后,给定一个全局Spring上下文(我手动创建),我就可以拉出我的控制器,做我以前做过的任何事情 一些有用的链接,但不是全部: 从那时起,与NHibernate的集成必须非常简单:) 附言:问题是:a)MVCContrib现在似乎拒绝使用IoC容器,因为我听说了一些关于ASP MVCContrib中IoC/DI的弃用。我想,这就是为什么我无法让他们的
SpringControllerFactory
正常工作(与Spring的WebSupportModule
一样)
b) 有一些文章考虑了所需的集成,但它们似乎都是。。从某种意义上讲是原始的(可能是因为许多人只是提供了不起作用的解决方案:)对于nhibernate,请看一下Stephen Bohlen的网络广播和
就我个人而言,我没有使用过Sprint.net,但我发现这对于获得总体概述很有用。弗雷德里克·诺曼也在网上发表了一篇文章 NHibernate配置与Spring.Net webforms应用程序没有什么不同。将
OpenSessionInView
模块添加到web.config
中,并在spring配置中定义名为SessionFactory
的会话工厂
Net和MVC的集成是通过在应用程序启动时注册一个自定义的IControllerFactory
来完成的,这将应用一个自定义的ControllerActionInvoker
。控制器工厂创建或配置控制器,操作调用程序配置任何ActionFilter
public class MvcApplication: System.Web.HttpApplication
{
public static void RegisterRoutes( RouteCollection routes )
{
//
}
protected void Application_Start()
{
RegisterRoutes( RouteTable.Routes );
lock (this) {
ControllerBuilder.Current.SetControllerFactory( new SpringControllerFactory() );
}
}
}
public class SpringControllerFactory: DefaultControllerFactory
{
public SpringControllerFactory()
{
SpringContext = WebApplicationContext.Current;
}
protected override IController GetControllerInstance( Type controllerType )
{
IController controller = null;
if (SpringContext.ContainsObject( controllerType.Name )) {
controller = (IController) SpringContext.GetObject( controllerType.Name );
}
if (controller == null) {
controller = base.GetControllerInstance( controllerType );
SpringContext.ConfigureObject( controller, controllerType.FullName );
}
var standardController = controller as Controller;
if (standardController != null) {
standardController.ActionInvoker = new SpringActionInvoker();
}
return controller;
}
private IApplicationContext SpringContext
{ get; set; }
}
public class SpringActionInvoker: ControllerActionInvoker
{
public SpringActionInvoker()
{
SpringContext = WebApplicationContext.Current;
}
protected override FilterInfo GetFilters( ControllerContext controllerContext, ActionDescriptor actionDescriptor )
{
var filterInfo = base.GetFilters( controllerContext, actionDescriptor );
foreach (IActionFilter filter in filterInfo.ActionFilters.Where( f => f != null )) {
SpringContext.ConfigureObject( filter, filter.GetType().FullName );
}
foreach (IAuthorizationFilter filter in filterInfo.AuthorizationFilters.Where( f => f != null )) {
SpringContext.ConfigureObject( filter, filter.GetType().FullName );
}
foreach (IExceptionFilter filter in filterInfo.ExceptionFilters.Where( f => f != null )) {
SpringContext.ConfigureObject( filter, filter.GetType().FullName );
}
foreach (IResultFilter filter in filterInfo.ResultFilters.Where( f => f != null )) {
SpringContext.ConfigureObject( filter, filter.GetType().FullName );
}
return filterInfo;
}
private IApplicationContext SpringContext
{ get; set; }
}
Mvc Contrib有一个类似的SpringControllerFactory,尽管它没有配置动作过滤器。它在应用程序启动中配置:
protected void Application_Start()
{
RegisterRoutes( RouteTable.Routes );
lock (this) {
ControllerBuilder.Current.SetControllerFactory( new SpringControllerFactory() );
SpringControllerFactory.Configure( WebApplicationContext.Current );
}
}
我也很难找到NHibernate、Spring.NET和ASP.NET的MVC示例。我找到了Spring.NET/NHibernate Northwind示例(使用WebForms模式),但找不到一种简单的方法将NHibernate DAO与我的模型一起使用
最后,我发现它非常有用。顺便说一句,我想知道默认情况下使用其他DI的S#arp体系结构是否可以更改为使用Spring.NET:)为什么不可以,IoC容器不是S#arp的主要部分。它在许多地方使用ServiceLocator,所以您只需要更改组件注册。