protected void Application_Start() { //Database.SetInitializer<ApplicationDbContext>(new AppDbInitializer()); AreaRegistration.RegisterAllAreas(); FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters); RouteConfig.RegisterRoutes(RouteTable.Routes); BundleConfig.RegisterBundles(BundleTable.Bundles); NinjectModule orderModule = new OrderModule(); NinjectModule shoppingCartModule = new ShoppingCartModule(); NinjectModule productForOrderModule = new ProductForOrderModule(); NinjectModule phoneModule = new PhoneModule(); NinjectModule bookModule = new BookModule(); NinjectModule tvModule = new TvModule(); NinjectModule headphonesModule = new HeadphonesModule(); NinjectModule serviceModule = new ServiceModule("DefaultConnection"); var kernel = new StandardKernel(orderModule, shoppingCartModule, productForOrderModule, phoneModule, bookModule, tvModule, headphonesModule, serviceModule); DependencyResolver.SetResolver(new NinjectDependencyResolver(kernel)); }
static void Main(string[] args) { ILogger logger; VersionControlModule versionControlModule; //ServiceHostModule serviceHostModule; //IBotsService service; RESTServer server; IRouteManager routeManager; IDatabase database; IConnectionFactory connectionFactory; ICommandBuilder commandBuilder; IDatabaseCreator databaseCreator; IBotModule botModule; IOrderModule orderModule; IOrderManagerModule orderManagerModule; IProduceOrderModule produceOrderModule; IHarvestOrderModule harvestOrderModule; IBuildOrderModule buildOrderModule; IBotSchedulerModule botSchedulerModule; PIOServiceClient client; quitEvent = new AutoResetEvent(false); Console.CancelKeyPress += new ConsoleCancelEventHandler(Console_CancelKeyPress); //logger = new ConsoleLogger(new DefaultLogFormatter()); logger = new UnicastLogger(IPAddress.Loopback, Properties.Settings.Default.UnicastPort); //logger = new FileLogger(new DefaultLogFormatter(), "PIO.Bots.ServerHost.Log"); databaseCreator = new SqlDatabaseCreator(Properties.Settings.Default.Server, Properties.Settings.Default.DatabaseName); connectionFactory = new SqlConnectionFactory(Properties.Settings.Default.Server, Properties.Settings.Default.DatabaseName); commandBuilder = new SqlCommandBuilder(); database = new Database(connectionFactory, commandBuilder); versionControlModule = new VersionControlModule(logger, databaseCreator, new BotsVersionControl(database)); if (!versionControlModule.InitializeDatabase(Properties.Settings.Default.DropDatabase)) { Console.ReadLine(); return; } client = new PIOServiceClient(new BasicHttpBinding(), new EndpointAddress($@"http://127.0.0.1:8733/PIO/Service/")); client.Open(); botModule = new BotModule(logger, database); orderModule = new OrderModule(logger, database); produceOrderModule = new ProduceOrderModule(logger, database); harvestOrderModule = new HarvestOrderModule(logger, database); buildOrderModule = new BuildOrderModule(logger, database); orderManagerModule = new OrderManagerModule(logger, client, orderModule, produceOrderModule, harvestOrderModule, buildOrderModule, 10); botSchedulerModule = new BotSchedulerModule(logger, client, botModule, orderManagerModule, 5); botSchedulerModule.Start(); routeManager = new RouteManager(new RouteParser(), new ResponseSerializer()); routeManager.AddRouteHandler(new BotRouteHandler(botModule)); routeManager.AddRouteHandler(new ProduceOrderRouteHandler(produceOrderModule)); routeManager.AddRouteHandler(new HarvestOrderRouteHandler(harvestOrderModule)); routeManager.AddRouteHandler(new BuildOrderRouteHandler(buildOrderModule)); server = new RESTServer(logger, routeManager, "http://127.0.0.1:8734/"); server.Start(); WaitHandle.WaitAny(new WaitHandle[] { quitEvent }, -1); server.Stop(); //serviceHostModule.Stop(); botSchedulerModule.Stop(); client.Close(); logger.Dispose(); Console.CancelKeyPress -= new ConsoleCancelEventHandler(Console_CancelKeyPress); }