Как реализовать сигнализатор CLIENT в c# System.Web.Http.ApiController - PullRequest
1 голос
/ 13 января 2020

У нас есть приложение, работающее с различными службами (c#,. NET Core) LOCAL на Windows P C.

Теперь мне нужен какой-то механизм для информирования всех заинтересованных служб, если данные изменились в одном сервисе (какой-то шаблон наблюдателя для микросервисов или какой-то механизм MQTT (pub / sub) c# и. NET Основные микросервисы, локально работающие на windows p c).

Сначала я хочу использовать сокеты, но в документации Windows говорится, что вместо этого используйте Signalr.

Итак, вот что у меня есть:

public class Startup
{
    public Startup()
    {
        // empty
    }

    public void ConfigureServices(IServiceCollection services)
    {
        // Add services.

        //Test bidirectional communication (pub / sub Pattern over SignalR groups)
        services.AddSignalR();

        // Add the localization services to the services container.
        services.AddLocalization(options => options.ResourcesPath = "Properties");

        services.AddMvc()
    }

    // This method gets called by the runtime. Use this method to configure the HTTP request pipeline.
    public void Configure(IApplicationBuilder app, IHostingEnvironment env)
    {

        app.UseStaticFiles();

        // Use sessions
        // The order of middleware is important. 
        // An InvalidOperationException exception will occur when UseSession is invoked after UseMvc.
        app.UseSession();

        //Test bidirectional communication (pub / sub Pattern over SignalR groups)
        //The SignalR Hubs API enables you to call methods on connected clients from the server.
        //In the server code, you define methods that are called by client. In the client code, you define methods that are called from the server.
        app.UseSignalR(routes =>
        {
            routes.MapHub<SignalRHub>("/SignalRHub");
        });

        app.UseMvc(
            routes =>
            {
                routes.MapRoute(
                    name: "default",
                    template: "{controller=Home}/{action=Index}/{id?}");
            });
    }
}

Для. NET Служба CORE Но мне сейчас нужен клиент для c# System.Web.Http.ApiController и я не могу найти пример.

Кажется, некоторые смущены нашей "красивой" архитектурой ;-) Я надеюсь, что следующая картина делает это более понятным: Architecture overview

Таким образом, если приложение 1 изменяет данные в микросервисе 2, то приложение 2 должно быть проинформировано. И снова, все это работает локально на Windows P C, облака не задействованы.

1 Ответ

2 голосов
/ 13 января 2020

Возможно, что-то упущено в вашем описании. SignalR хорошо, если есть клиенты, чтобы сообщить соответствующую информацию. Однако в вашем сценарии может показаться, что клиенты сами являются API, и для меня это мало что значит. Возможно, в середине отсутствует фрагмент, который выполняет ту работу, о которой вы говорите.

В любом случае вы можете найти соответствующую техническую информацию о SignalR, начиная с официального сайта. https://docs.microsoft.com/en-us/aspnet/core/signalr/dotnet-client?view=aspnetcore-3.1&tabs=visual-studio

...