Future Pattern을 이용하여, 웹 Application 시작 시에 미리 준비해야 할 작업이 있다면, 그 작업을 비동기적으로 실행시켜줍니다. 이렇게 하면, 실제 데이터를 필요로 할 때, 미리 준비된 데이터를 사용할 수 있으므로, 성능상에 유리하게 됩니다.
Application_Start, Session_Start, Session_End, Application_End 시점에 비동기적으로 실행할 메소드를 재정의하면, 각 시점마다, 비동기적으로 실행해줍니다.
Наследование: AsyncHttpApplicationBase, IContainerAccessor
Пример #1
0
        public void Can_WindsorLazyHttpApplication_Request_Handle(int requestCount)
        {
            var app = new WindsorAsyncHttpApplication();

            app.Should().Not.Be.Null();

            app.Application_Start(app, EventArgs.Empty);
            app.Init();

            for (var i = 0; i < requestCount; i++)
            {
                // app.OnBeginRequest(this, EventArgs.Empty);

                app.Container.Should("app.Container").Not.Be.Null();
                IoC.IsInitialized.Should("IoC.IsInitialized").Be.True();

                Thread.Sleep(1);

                if (IsDebugEnabled)
                {
                    log.Debug("요청 사항 처리 중...");
                }

                Thread.Sleep(1);

                // app.OnEndRequest(this, EventArgs.Empty);
            }
            app.Dispose();

            app = new WindsorAsyncHttpApplication();
            app.Should().Not.Be.Null();

            app.Init();

            for (var i = 0; i < requestCount; i++)
            {
                // app.OnBeginRequest(this, EventArgs.Empty);

                app.Container.Should("app.Container").Not.Be.Null();
                IoC.IsInitialized.Should("IoC.IsInitialized").Be.True();

                Thread.Sleep(1);

                if (IsDebugEnabled)
                {
                    log.Debug("요청 사항 처리 중...");
                }

                Thread.Sleep(1);

                // app.OnEndRequest(this, EventArgs.Empty);
            }
            app.Dispose();
        }
        public void Can_WindsorLazyHttpApplication_Request_Handle(int requestCount) {
            var app = new WindsorAsyncHttpApplication();
            app.Should().Not.Be.Null();

            app.Application_Start(app, EventArgs.Empty);
            app.Init();

            for(var i = 0; i < requestCount; i++) {
                // app.OnBeginRequest(this, EventArgs.Empty);

                app.Container.Should("app.Container").Not.Be.Null();
                IoC.IsInitialized.Should("IoC.IsInitialized").Be.True();

                Thread.Sleep(1);

                if(IsDebugEnabled)
                    log.Debug("요청 사항 처리 중...");

                Thread.Sleep(1);

                // app.OnEndRequest(this, EventArgs.Empty);
            }
            app.Dispose();

            app = new WindsorAsyncHttpApplication();
            app.Should().Not.Be.Null();

            app.Init();

            for(var i = 0; i < requestCount; i++) {
                // app.OnBeginRequest(this, EventArgs.Empty);

                app.Container.Should("app.Container").Not.Be.Null();
                IoC.IsInitialized.Should("IoC.IsInitialized").Be.True();

                Thread.Sleep(1);

                if(IsDebugEnabled)
                    log.Debug("요청 사항 처리 중...");

                Thread.Sleep(1);

                // app.OnEndRequest(this, EventArgs.Empty);
            }
            app.Dispose();
        }