Example #1
0
        static async Task Main(string[] args)
        {
            Console.Title = "Group";

            var configuration = GetConfiguration();

            var kernel = ConfigureKernel(configuration.GetConnectionString("DefaultConnection"));

            var endpointConfiguration = EndPointConfigurationFactory.Create();

            endpointConfiguration.UseContainer <NinjectBuilder>(customizations =>
            {
                customizations.ExistingKernel(kernel);
            });

            var endpointInstance = await Endpoint.Start(endpointConfiguration)
                                   .ConfigureAwait(false);

            kernel.Bind <IMessageSession>().ToConstant(endpointInstance);

            Console.WriteLine("Press Enter to exit.");
            Console.ReadLine();

            await endpointInstance.Stop()
            .ConfigureAwait(false);
        }
Example #2
0
        // This method gets called by the runtime. Use this method to add services to the container.
        public void ConfigureServices(IServiceCollection services)
        {
            services.Configure <CookiePolicyOptions>(options =>
            {
                // This lambda determines whether user consent for non-essential cookies is needed for a given request.
                options.CheckConsentNeeded    = context => true;
                options.MinimumSameSitePolicy = SameSiteMode.None;
            });

            services.AddDbContext <ApplicationDbContext>(options =>
                                                         options.UseSqlServer(
                                                             Configuration.GetConnectionString("DefaultConnection")));

            services.AddDbContext <BizchatDbContext>(options =>
                                                     options.UseSqlServer(
                                                         Configuration.GetConnectionString("DefaultConnection"),
                                                         b => b.MigrationsAssembly("Bizchat.Web")));

            services.AddDefaultIdentity <IdentityUser>(options =>
            {
                options.Password.RequireDigit           = false;
                options.Password.RequireNonAlphanumeric = false;
            })
            .AddEntityFrameworkStores <ApplicationDbContext>();

            services.AddTransient <IChatRoomsRepository, EfChatRoomsRepository>();
            services.AddTransient <IChatUsersRepository, EfChatUsersRepository>();
            services.AddTransient <IChatMessagesRepository, EfChatMessagesRepository>();
            services.AddTransient <IChatMessageReceivedByChatRoomEventsRepository, EfChatMessageReceivedByChatRoomEventsRepository>();
            services.AddTransient <IChatMessageSentEventsRepository, EfChatMessageSentEventsRepository>();

            services.AddTransient <IQueueMessagesService, NServiceBusQueueMessagesService>();
            services.AddTransient <SendMessageVerb>();

            // SignalR simply doesn't work!
            services.AddSignalR();

            services.AddSingleton(c =>
            {
                var name = "chatMessagesHub";
                var url  = $"{Configuration["RootUrl"]}/{name}";

                var connection = new HubConnectionBuilder()
                                 .WithUrl(url)
                                 .Build();


                connection.StartAsync().Wait();

                return(connection);
            });

            // NServiceBus settings
            var endpointConfiguration = EndPointConfigurationFactory.Create();

            endpointConfiguration.UseContainer <ServicesBuilder>(customizations =>
            {
                customizations.ExistingServices(services);
            });

            var endpoint = Endpoint.Start(endpointConfiguration).GetAwaiter().GetResult();

            services.AddSingleton <IMessageSession>(endpoint);

            services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_1);
        }