• .net framework 4.5 +steeltoe+ springcloud(一) 实现服务注册功能


    首先得先了解并熟悉一下springcloud,并手动去搭建一个服务中心,也可参照eurake官方示例
    如果是.net core的话,实现注册也是没有问题的,网上教程很多,可自行度娘。
    最难的就是基于Framework的项目怎么实现注册,跟core的实现方式区别还是蛮大的,研究过程中也有不少坑。
    下面就分享一下我踩完坑之后初步总结的实现步骤:
    1.用VS2017或者其他创建NF4.5+的webAPI项目(webAPI的结构基本是保持MVC一致的,所以MVC项目基本也能按这个步骤来的)
    2.在项目根目录内新建文件appsettings.json(这个文件主要是配置服务中心eurke地址等信息的):
    {
      "spring": {
        "application": {
          "name": "demoService"
        }
      },
      "eureka": {
        "client": {
          "serviceUrl": "http://localhost:8761/eureka/",//服务中心地址
          "shouldFetchRegistry": false,
          "shouldRegisterWithEureka": true,//是否允许注册到服务中心
     
     
          "validate_certificates": false
        },
        "instance": {
          "port": 3001
       
        }
      },
      "Logging": {
        "IncludeScopes": false,
        "LogLevel": {
          "Default": "Debug",
          "Pivotal": "Debug",
          "Steeltoe": "Debug"
        }
      }
    }
     
    3.在项目文件夹App_Start下创建ApplicationConfig.cs:
     
     
    public static class ApplicationConfig
        {
    ​
            public static IConfigurationRoot Configuration { get; set; }
    ​
            public static void RegisterConfig(string environment)
            {
     
                // Set up configuration sources.
                var builder = new ConfigurationBuilder()
                    .SetBasePath(GetContentRoot())
                    .AddJsonFile("appsettings.json", optional: false, reloadOnChange: false)
                    .AddJsonFile($"appsettings.{environment}.json", optional: true)
                    .AddCloudFoundry()
                    .AddEnvironmentVariables();
    ​
                Configuration = builder.Build();
            }
    ​
            public static string GetContentRoot()
            {
                var basePath = (string)AppDomain.CurrentDomain.GetData("APP_CONTEXT_BASE_DIRECTORY") ??
                   AppDomain.CurrentDomain.BaseDirectory;
                return Path.GetFullPath(basePath);
            }
        }
     
    注意这里需要添加的引用:
    using Microsoft.Extensions.Configuration;
    using Steeltoe.Extensions.Configuration.CloudFoundry;
    这两个是需要在引用点右键选择NuGet程序包里添加的。
     
    4.修改Global.asax文件,在Application_Start()内加入代码:
    GlobalConfiguration.Configure(WebApiConfig.Register);
    ​
     var config = GlobalConfiguration.Configuration;
    ​
    // Build application configuration
     ApplicationConfig.RegisterConfig("development");
    ​
     var builder = new ContainerBuilder();
    ​
    // Add Microsoft Options to container
      builder.RegisterOptions();
    ​
    // Add Microsoft Logging to container
      builder.RegisterLogging(ApplicationConfig.Configuration);
    ​
    // Add Console logger to container
      builder.RegisterConsoleLogging();
    ​
    // Register your Web API controllers.
      builder.RegisterApiControllers(Assembly.GetExecutingAssembly());
    ​
    // Register IDiscoveryClient, etc.
      builder.RegisterDiscoveryClient(ApplicationConfig.Configuration);
    ​
    // Initialize and Register FortuneContext
      builder.RegisterInstance(SampleData.InitializeFortunes()).SingleInstance();
    ​
    // Register FortuneRepository
      builder.RegisterType<FortuneRepository>().As<IFortuneRepository>().SingleInstance();
    ​
      var container = builder.Build();
      config.DependencyResolver = new AutofacWebApiDependencyResolver(container);
    ​
    // Get a logger from container
      var logger = container.Resolve <ILogger<WebApiApplication>>();
    ​
      logger.LogInformation("Finished container build, starting background services");
    ​
    // Start the Discovery client background thread
      container.StartDiscoveryClient();
    ​
      logger.LogInformation("Finished starting background services");
    添加引用:
    using Autofac;
    using Autofac.Integration.WebApi;
    using Microsoft.Extensions.Logging;
    using Microsoft.Extensions.Logging.Console;
    using Pivotal.Discovery.Client;
    using Steeltoe.Common.Discovery;
    using Steeltoe.Common.Logging.Autofac;
    using Steeltoe.Common.Options.Autofac;
    using System;
    using System.Diagnostics;
    using System.Reflection;
    using System.Web.Http;
     
     
     
  • 相关阅读:
    在Windows Mobile 中利用 WebRequest 下载文件并获得响应头的信息信息
    Windows Mobile使用红外线传输文件
    在Windows mobile中学习串口编程
    关于字符编码、对象传递、文件传递、字符串传递、 TcpClient、TcpListener的又一个应用
    在vs2010中可以很方便的打包桌面程序和同一解决方案中一个项目引用另外一个项目的问题
    浅析C#的事件处理和自定义事件
    Silverlight学习教程
    类型“Microsoft.WindowsMobile.IApplicationLauncher”在未被引用的程序集中定义
    (关于Widows Mobile版本)关于字符编码、对象传递、文件传递、字符串传递、 TcpClient、TcpListener、 StreamWriter、StreamReader、 NetworkStream
    ASP.NET MVC 学习
  • 原文地址:https://www.cnblogs.com/troytian/p/8575444.html
Copyright © 2020-2023  润新知