Black.Beard.Web.Server 1.0.29

dotnet add package Black.Beard.Web.Server --version 1.0.29
NuGet\Install-Package Black.Beard.Web.Server -Version 1.0.29
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="Black.Beard.Web.Server" Version="1.0.29" />
For projects that support PackageReference, copy this XML node into the project file to reference the package.
paket add Black.Beard.Web.Server --version 1.0.29
#r "nuget: Black.Beard.Web.Server, 1.0.29"
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
// Install Black.Beard.Web.Server as a Cake Addin
#addin nuget:?package=Black.Beard.Web.Server&version=1.0.29

// Install Black.Beard.Web.Server as a Cake Tool
#tool nuget:?package=Black.Beard.Web.Server&version=1.0.29

Net.Server

Provide a service base for just concentrate on services

Build status

Installation

$ install-package Black.Beard.Web.Server

Usage


    /// <summary>
    /// Startup class par parameter
    /// </summary>
    public class Startup : StartupBase
    {

        /// <summary>
        /// Initializes a new instance of the <see cref="Startup"/> class.
        /// </summary>
        /// <param name="configuration">The configuration.</param>
        public Startup(IConfiguration configuration) 
            : base(configuration)
        {
      
        }

        public override void ConfigureServices(IServiceCollection services)
        {
            // Yours configuration           
            base.ConfigureServices(services);
        }
    
        /// <summary>
        /// Configures the specified application.
        /// </summary>
        /// <param name="app">The application.</param>
        /// <param name="env">The env.</param>
        /// <param name="loggerFactory">The logger factory.</param>
        public override void ConfigureApplication(IApplicationBuilder app, IWebHostEnvironment env, ILoggerFactory loggerFactory)
        {

            base.ConfigureApplication(app, env, loggerFactory);
                        
            app
                .UseHttpsRedirection()
                .UseRouting()
                .UseListener()
                ;

        }

    }


    internal class Program
    {

        /// <summary>
        /// Main entry point of the application.
        /// </summary>
        /// <param name="args"></param>
        public static void Main(string[] args)
        {
            var service = GetService(args);
            service.Run();
        }

        public static ServiceRunnerBase GetService(string[] args)
        {              
            return new ServiceRunner<Startup>(args);
        }

    }

You can configure WebApplicationBuilder like that



    [ExposeClass(ConstantsCore.Initialization, ExposedType = typeof(IApplicationBuilderInitializer<WebApplicationBuilder>), LifeCycle = IocScopeEnum.Transiant)]
    public class ModuleInitializeWebApplicationBuilder : ApplicationInitializerBase<WebApplicationBuilder>
    {
               
        public override void Execute(WebApplicationBuilder builder)
        {

            var services = builder.Services;

            services.AddAuthorization(options =>
            {

                options.AddPolicy("Admin", policy =>
                {
                    policy.RequireRole("Admin");
                });

            });


        }

    }

You can configure service like that


    [ExposeClass(ConstantsCore.Initialization, ExposedType = typeof(IApplicationBuilderInitializer<WebApplication>), LifeCycle = IocScopeEnum.Transiant)]
    public class ModuleInitializeWebApplication : ApplicationInitializerBase<WebApplication>
    {
              
        public override void Execute(WebApplication builder)
        {
            
        }

    }

All json files existing in the root of the application and in the folder Configs are loaded, and you can append configuration fragment like that


    [ExposeClass(ConstantsCore.Initialization, ExposedType = typeof(IInjectBuilder<IConfigurationBuilder>))]
    public class ConfigurationBuilderBuilder : InjectBuilder<IConfigurationBuilder>
    {

        public override object Execute(IConfigurationBuilder service)
        {

            service.AddJsonFile("appsettings.json", optional: true, reloadOnChange: true)
                .AddJsonFile("Configs/appsettings.json", optional: true, reloadOnChange: true)
                ;

            return 0;
        }
    }

You can inject configuration like that. in the sqample ConnectionStringSettings is the name of the section in the configuration documents


    [ExposeClass(ConstantsCore.Configuration, ConfigurationKey = "ConnectionStringSettings", LifeCycle = IocScopeEnum.Transiant)]
    public partial class ConnectionSettings
    {

        public ConnectionSettings()
        {
            this.ConnectionStringSettings = new ConnectionStringSettings();
        }

        public ConnectionStringSettings ConnectionStringSettings { get; set; }

    }

    // You can ask the configuration like that
    var connectionSettings = builder.Services.GetService<Option<ConnectionSettings>>();

You can inject service like that


    [ExposeClass(ConstantsCore.Service, LifeCycle = IocScopeEnum.Transiant)]
    public partial class MyService : IService
    {
        public MyService()
        {
        }

        public void Execute()
        {
            Console.WriteLine("MyService");
        }
    }

    // You can ask the service like that
    var instance = builder.Services.GetService<MyService>();

You can using the injection like that


    TService uiService = builder.Services.GetService<TService>(); 
    var loader = new InjectionLoader<TService>(UIConstants.LeftMenu, builder.Services)
        .LoadModules(c =>
        {

        })
    .Execute(uiService);

WebAssembly

    Install-Package Black.Beard.WebAssembly

In the program.cs you can use the following code



    WebApplicationBuilder builder = WebApplication.CreateBuilder(args).Initialize(ConstantsCore.Initialization,
    x =>
    {
        
    });


    WebApplication app = builder.Build().Initialize(ConstantsCore.Initialization, 
    x =>
    {
        
    });


    app.Run();



    [ExposeClass(ConstantsCore.Initialization, ExposedType = typeof(IApplicationBuilderInitializer<WebApplicationBuilder>), LifeCycle = IocScopeEnum.Transiant)]
    public class WebApplicationBuilderInitializer : ApplicationInitializerBase<WebApplicationBuilder>
    {

        public override void Execute(WebApplicationBuilder builder)
        {
            

        }

    }

    [ExposeClass(ConstantsCore.Initialization, ExposedType = typeof(IApplicationBuilderInitializer<WebApplication>), LifeCycle = IocScopeEnum.Transiant)]
    public class WebApplicationBuilderInitializer : ApplicationInitializerBase<WebApplication>
    {

        public override void Execute(WebApplication app)
        {
            

        }

    }

Product Compatible and additional computed target framework versions.
.NET net8.0 is compatible.  net8.0-android was computed.  net8.0-browser was computed.  net8.0-ios was computed.  net8.0-maccatalyst was computed.  net8.0-macos was computed.  net8.0-tvos was computed.  net8.0-windows was computed. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.

NuGet packages

This package is not used by any NuGet packages.

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last updated
1.0.29 53 4/24/2024
1.0.28 76 4/24/2024
1.0.27 76 4/24/2024
1.0.26 80 4/24/2024
1.0.25 77 4/22/2024
1.0.24 74 4/18/2024
1.0.23 80 4/15/2024
1.0.22 86 4/14/2024
1.0.21 75 4/13/2024
1.0.20 72 4/12/2024
1.0.19 78 4/8/2024
1.0.18 75 4/7/2024
1.0.17 103 3/30/2024
1.0.16 88 3/28/2024
1.0.15 98 3/27/2024
1.0.14 99 3/27/2024
1.0.13 74 3/27/2024
1.0.12 76 3/26/2024
1.0.11 84 3/26/2024
1.0.10 85 3/24/2024
1.0.9 78 3/24/2024
1.0.8 80 3/24/2024
1.0.7 86 3/24/2024