Example #1
0
        public static void PreAppStart()
        {
            if (HostingEnvironment.InClientBuildManager)
            {
                // If we're in the VS app domain then do nothing
                return;
            }

            var kernel = new StandardKernel();

            kernel.Bind<JabbrContext>()
                .To<JabbrContext>();

            kernel.Bind<IJabbrRepository>()
                .To<PersistedRepository>();

            kernel.Bind<IChatService>()
                  .To<ChatService>();

            kernel.Bind<Chat>()
                  .ToMethod(context =>
                  {
                      // We're doing this manually since we want the chat repository to be shared
                      // between the chat service and the chat hub itself
                      var settings = context.Kernel.Get<IApplicationSettings>();
                      var resourceProcessor = context.Kernel.Get<IResourceProcessor>();
                      var repository = context.Kernel.Get<IJabbrRepository>();
                      var cache = context.Kernel.Get<ICache>();
                      var crypto = context.Kernel.Get<ICryptoService>();

                      var service = new ChatService(cache, repository, crypto);

                      return new Chat(settings,
                                      resourceProcessor,
                                      service,
                                      repository,
                                      cache);
                  });

            kernel.Bind<ICryptoService>()
                .To<CryptoService>()
                .InSingletonScope();

            kernel.Bind<IResourceProcessor>()
                .To<ResourceProcessor>()
                .InSingletonScope();

            kernel.Bind<IApplicationSettings>()
                  .To<ApplicationSettings>()
                  .InSingletonScope();

            kernel.Bind<IVirtualPathUtility>()
                  .To<VirtualPathUtilityWrapper>();

            kernel.Bind<IJavaScriptMinifier>()
                  .To<AjaxMinMinifier>()
                  .InSingletonScope();

            kernel.Bind<ICache>()
                  .To<AspNetCache>()
                  .InSingletonScope();

            var serializer = new JsonNetSerializer(new JsonSerializerSettings
            {
                DateFormatHandling = DateFormatHandling.MicrosoftDateFormat
            });

            kernel.Bind<IJsonSerializer>()
                  .ToConstant(serializer);

            Kernel = kernel;

            var resolver = new NinjectDependencyResolver(kernel);

            var host = new Host(resolver);
            host.Configuration.KeepAlive = TimeSpan.FromSeconds(30);

            RouteTable.Routes.MapHubs(resolver);

            // Perform the required migrations
            DoMigrations();

            // Start the sweeper
            var repositoryFactory = new Func<IJabbrRepository>(() => kernel.Get<IJabbrRepository>());
            _timer = new Timer(_ => Sweep(repositoryFactory, resolver), null, _sweepInterval, _sweepInterval);

            SetupErrorHandling();

            ClearConnectedClients(repositoryFactory());
            SetupRoutes(kernel);
            SetupWebApi(kernel);
        }
Example #2
0
        public static void PreAppStart()
        {
            if (HostingEnvironment.InClientBuildManager)
            {
                // If we're in the VS app domain then do nothing
                return;
            }

            var kernel = new StandardKernel();

            kernel.Bind <JabbrContext>()
            .To <JabbrContext>();

            kernel.Bind <IJabbrRepository>()
            .To <PersistedRepository>();

            kernel.Bind <IChatService>()
            .To <ChatService>();

            kernel.Bind <Chat>()
            .ToMethod(context =>
            {
                // We're doing this manually since we want the chat repository to be shared
                // between the chat service and the chat hub itself
                var settings          = context.Kernel.Get <IApplicationSettings>();
                var resourceProcessor = context.Kernel.Get <IResourceProcessor>();
                var repository        = context.Kernel.Get <IJabbrRepository>();
                var cache             = context.Kernel.Get <ICache>();
                var crypto            = context.Kernel.Get <ICryptoService>();

                var service = new ChatService(cache, repository, crypto);

                return(new Chat(settings,
                                resourceProcessor,
                                service,
                                repository,
                                cache));
            });

            kernel.Bind <ICryptoService>()
            .To <CryptoService>()
            .InSingletonScope();

            kernel.Bind <IResourceProcessor>()
            .To <ResourceProcessor>()
            .InSingletonScope();

            kernel.Bind <IApplicationSettings>()
            .To <ApplicationSettings>()
            .InSingletonScope();

            kernel.Bind <IVirtualPathUtility>()
            .To <VirtualPathUtilityWrapper>();

            kernel.Bind <IJavaScriptMinifier>()
            .To <AjaxMinMinifier>()
            .InSingletonScope();

            kernel.Bind <ICache>()
            .To <AspNetCache>()
            .InSingletonScope();

            var serializer = new JsonNetSerializer(new JsonSerializerSettings
            {
                DateFormatHandling = DateFormatHandling.MicrosoftDateFormat
            });

            kernel.Bind <IJsonSerializer>()
            .ToConstant(serializer);


            Kernel = kernel;

            var resolver = new NinjectDependencyResolver(kernel);

            var host = new Host(resolver);

            host.Configuration.KeepAlive = TimeSpan.FromSeconds(30);

            RouteTable.Routes.MapHubs(resolver);

            // Perform the required migrations
            DoMigrations();

            // Start the sweeper
            var repositoryFactory = new Func <IJabbrRepository>(() => kernel.Get <IJabbrRepository>());

            _timer = new Timer(_ => Sweep(repositoryFactory, resolver), null, _sweepInterval, _sweepInterval);

            SetupErrorHandling();

            ClearConnectedClients(repositoryFactory());
            SetupRoutes(kernel);
            SetupWebApi(kernel);
        }