Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
ASP.NET MVC、Spring.NET、NHibernate初始设置/示例/教程_.net_Asp.net Mvc_Nhibernate_Spring.net - Fatal编程技术网

ASP.NET MVC、Spring.NET、NHibernate初始设置/示例/教程

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:我稍后

您是否一直在进行涉及Spring.NET和NHibernate的ASP.NETMVC开发?我想看到一个这样的设置信息丰富的例子,所以我可以建立自己的项目在此基础上

我在谷歌上搜索了一下,发现了一些不错的东西,比如S#arp架构,一篇关于常规ASP.NET(WebForms)与框架集成的文章,等等。尽管如此,我还是错过了一个关于ASP.NETMVC的好教程&主题

注:我知道Spring和Hibernate是如何工作的,我只需要将它们插入MVC应用程序。现在不想使用S#arp架构


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,所以您只需要更改组件注册。