What replaces WCF in .Net Core?

后端 未结 9 535
逝去的感伤
逝去的感伤 2020-11-30 19:27

I am used to creating a .Net Framework console application and exposing a Add(int x, int y) function via a WCF service from scratch with Class Library (.Net Fra

9条回答
  •  清歌不尽
    2020-11-30 19:35

    You can also self-host ASP.NET Core Web API.

    
    
    
      
        Exe
        netcoreapp3.1
      
    
      
        
        
        
      
    
    
    
    // Program.cs
    using System.IO;
    using Microsoft.AspNetCore.Hosting;
    using Microsoft.Extensions.Configuration;
    using Microsoft.Extensions.Hosting;
    
    namespace SelfHosted
    {
        class Program
        {
            static void Main(string[] args)
            {
                CreateHostBuilder(args).Build().Run();
            }
    
            public static IHostBuilder CreateHostBuilder(string[] args)
            {
                // see: https://docs.microsoft.com/en-us/aspnet/core/fundamentals/host/generic-host?view=aspnetcore-3.1
                return Host.CreateDefaultBuilder(args)
                    .ConfigureHostConfiguration(configHost =>
                    {
                        configHost.SetBasePath(Directory.GetCurrentDirectory());
                        configHost.AddJsonFile("appsettings.json", optional: true);
                        configHost.AddEnvironmentVariables(prefix: "SelfHosted_");
                        configHost.AddCommandLine(args);
                    })
                    .ConfigureWebHostDefaults(webBuilder =>
                    {
                        webBuilder.CaptureStartupErrors(true);
                        webBuilder.UseStartup();
                    });
            }
        }
    }
    
    // Startup.cs
    using System;
    using Microsoft.AspNetCore.Builder;
    using Microsoft.AspNetCore.Hosting;
    using Microsoft.Extensions.Configuration;
    using Microsoft.Extensions.DependencyInjection;
    using Microsoft.Extensions.Hosting;
    
    namespace SelfHosted
    {
        public class Startup
        {
            public Startup(IConfiguration configuration, IWebHostEnvironment env)
            {
                Configuration = configuration;
            }
    
            public IConfiguration Configuration { get; }
    
            public void ConfigureServices(IServiceCollection services)
            {
                // see: https://github.com/aspnet/AspNetCore.Docs/tree/master/aspnetcore/web-api/index/samples/3.x
                services.AddControllers();
            }
    
            public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
            {
                if (env.IsDevelopment())
                {
                    app.UseDeveloperExceptionPage();
                }
                else
                {
                    app.UseExceptionHandler("/Error");
                    app.UseHsts();
                }
    
                app.UseHttpsRedirection();
                app.UseStaticFiles();
    
                app.UseRouting();
    
                app.UseAuthorization();
    
                app.UseEndpoints(endpoints =>
                {
                    endpoints.MapControllers();
                });
            }
        }
    }
    
    // Controllers\TestController.cs
    using System.Net.Mime;
    using Microsoft.AspNetCore.Mvc;
    
    namespace SelfHosted.Controllers
    {
        [ApiController]
        [Produces(MediaTypeNames.Application.Json)]
        [Route("[controller]")]
        public class HelloController : SelfHostedControllerBase
        {
            [HttpGet]
            public ActionResult HelloWorld() => "Hello World!";
    
            [HttpGet("{name}")]
            public ActionResult HelloName(string name) => $"Hello {name}!";
        }
    }
    

提交回复
热议问题