区块链链游系统开发方案解析及(成熟代码)

2022-10-28 10:23:46 浏览数 (1)

DAPP的底层区块链开发平台,就像手机的iOS和Android系统一样,是各种DAPP的潜在生态环境。DApp是源自底层区块链平台生态的各种分布式应用程序,也是区块链世界中的基本服务提供商。Dapp在区块链中,就像应用程序在iOS和Android中一样。

dapps/0599a6100280df0d296653e89177b9011304d971fb98aba3edcc5b937c4183fb/

☆--块链。db//app数据库文件与主链中的数据分开存储

☆--配置。json//应用程序的节点配置文件目前主要用于配置受托方的密钥

☆-合同/合同目录

│L——域的实现代码。js//域名合同

☆--短小精悍。json//用于注册dapp的图元文件

☆-开端json//Genesis块

☆--初始化。js//应用程序初始化代码,可用于某些设置、事件注册等

☆-interface//查询接口的实现目录

│☆--域的实现。js//域名查询接口

│└──你好世界.js

☆--logs//日志目录

  1. 基于worker模板创建一个基础项目:dotnet new worker -n MassTransit.Demo
  2. 打开项目,添加NuGet包:MassTransit
  3. 定义订单创建事件消息契约:
代码语言:javascript复制
using System;

namespace MassTransit.Demo
{
    public record OrderCreatedEvent
    {
        public Guid OrderId { get; set; }
    }
}
  1. 修改Worker类,发送订单创建事件:
代码语言:javascript复制
namespace MassTransit.Demo;

public class Worker : BackgroundService
{
    readonly IBus _bus;//注册总线
    public Worker(IBus bus)
    {
        _bus = bus;
    }
    protected override async Task ExecuteAsync(CancellationToken stoppingToken)
    {
        while (!stoppingToken.IsCancellationRequested)
        {
            //模拟并发送订单创建事件
            await _bus.Publish(new OrderCreatedEvent(Guid.NewGuid()), stoppingToken);
            await Task.Delay(1000, stoppingToken);
        }
    }
}
  1. 仅需实现IConsumer<OrderCreatedEvent>泛型接口,即可实现消息的订阅:
代码语言:javascript复制
public class OrderCreatedEventConsumer: IConsumer<OrderCreatedEvent>
{
    private readonly ILogger<OrderCreatedEventConsumer> _logger;
    public OrderCreatedEventConsumer(ILogger<OrderCreatedEventConsumer> logger)
    {
        _logger = logger;
    }
    public Task Consume(ConsumeContext<OrderCreatedEvent> context)
    {
        _logger.LogInformation($"Received Order:{context.Message.OrderId}");
        return Task.CompletedTask;
    }
}
  1. 注册服务:
代码语言:javascript复制
using MassTransit;
using MassTransit.Demo;

IHost host = Host.CreateDefaultBuilder(args)
    .ConfigureServices(services =>
    {
        services.AddHostedService<Worker>();
        services.AddMassTransit(configurator =>
        {
            //注册消费者
            configurator.AddConsumer<OrderCreatedEventConsumer>();
            //使用基于内存的消息路由传输
            configurator.UsingInMemory((context, cfg) =>
            {
                cfg.ConfigureEndpoints(context);
            });
        });
    })
    .Build();

await host.RunAsync();
  1. 运行项目,一个简单的进程内事件发布订阅的应用就完成了。

如果需要使用RabbitMQ 消息代理进行消息传输,则仅需安装MassTransit.RabbitMQNuGet包,然后指定使用RabbitMQ 传输消息即可。

代码语言:javascript复制
using MassTransit;
using MassTransit.Demo;

IHost host = Host.CreateDefaultBuilder(args)
    .ConfigureServices(services =>
    {
        services.AddHostedService<Worker>();
        services.AddMassTransit(configurator =>
        {
            configurator.AddConsumer<OrderCreatedEventConsumer>();
            
            // configurator.UsingInMemory((context, cfg) =>
            // {
            //     cfg.ConfigureEndpoints(context);
            // });
            
            configurator.UsingRabbitMq((context, cfg) =>
            {
                cfg.Host(
                    host: "localhost",
                    port: 5672,
                    virtualHost: "/",
                    configure: hostConfig =>
                    {
                        hostConfig.Username("guest");
                        hostConfig.Password("guest");
                    });
                cfg.ConfigureEndpoints(context);
            });
        });
    })
    .Build();

await host.RunAsync();

0 人点赞