net软件是干嘛用的_.NET Core 是 .NET 的未来

030ca63e8e8129b467d337046bd4a6d6.png

原文:

.NET Core is the Future of .NET | .NET Blog​devblogs.microsoft.com
d7ec9279a9514456b4fd04fb8f5dc558.png

本文作者是Scott Hunter,.NET 项目管理总监(Director Program Management, .NET)于2019年5月6日发表。

ef03bb65a22a64eb2db96d64a12db3b6.png
Scott Hunter

.NET Core 是 .NET 的未来

我们在2014年十一月发布了 .NET Core 1.0。.NET Core 的目标是用我们12年在开发,发布以及维护 .NET Framework 中学到的经验来开发一个更好的产品。其中一些改进包括:side-by-side(并排)安装(你可以安装一个新的版本却不用担心对已存在的应用造成影响),self-contained (自包含)应用 (应用可以内嵌 .NET,这样就不需要在系统中安装 .NET了),不再是 Windows 操作系统的一个组件 (.NET的发布依赖OS的发布),除此之外还有很多改进,不过最重要的还是我们让 .NET Core开源并跨平台了。

.NET Core 1.0 主要是针对高性能 Web 应用与微服务。.NET Core 2.0 添加了超过2万个 API 以及像Razor Pages 和 SignalR 这样的组件,使得将 Web 应用迁移到 .NET Core 更加容易。 .NET Core 3.0 将拥抱桌面,其添加的 WinForms, WPF and Entity Framework 6 这些组件使得将桌面应用迁移到 .NET Core 成为可能。

在 .NET Core 3.0 之后我们将不会再从 .NET Framework 中导入更多功能。如果你是一个 Web Form 开发者并且想在 .NET Core 上开发新的应用,我们会推荐Blazor,它提供了一个与 Web Form 最相近的编程模型。如果你是一个远程或者WCF开发者并且想在 .NET Core 上开发新的应用,我们会推荐你 http://ASP.NET Core Web API 或者 gRPC,它提供了跨平台跨语言的基于协议的RPC。如果你是个Windows Workflow开发者那么有一个开源的 .NET Core 版本的 Workflow 供你选择。

随着 .NET Core 3.0 在 2019 年九月发布,我们认为所有“新”的 .NET 应用都应该基于 .NET Core。.NET Framework上主要的应用类型都会被支持,并且对于那些我们没有迁移过来的功能会有值得推荐的更加现代的替代品。所有未来在 .NET 上的投资都会在 .NET Core上,包括:Runtime,JIT, AOT, GC, BCL (基类库), C#, http://VB.NET, F#,http://ASP.NET, Entity Framework, http://ML.NET, WinForms, WPF 以及 Xamarin。

.NET Framework 4.8 将会是最后一个 .NET Framework 的主要版本。如果你还需要维护现有的 .NET Framework 应用,那么你没有必要将这些应用迁移到 .NET Core。我们会继续服务和支持 .NET Framework,包括 bug,可靠性,安全性的修复。它也将继续存在于Windows上(很多Windows应用都依赖 .NET Framework)并且我们将继续改进 Visual Studio 中对 .NET 的工具支持 (Visual Studio 是在 .NET Framework 上编写的)。

总结

新的应用应该在 .NET Core 上开发。.Net Core 是未来对 .NET 进行投资的地方。现有应用程序可以安全地保留,.NET Framework 也会继续受到支持。希望利用 .NET 新功能的现有应用可以考虑迁移到 .NET Core 上。随着我们对未来的规划,我们将为平台带来更多的功能。你可以在下面阅读我们的计划。

.NET 5 介绍​devblogs.microsoft.com
d7ec9279a9514456b4fd04fb8f5dc558.png

b9d3ec21dfc4d30755084f1de00eb632.png
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
.NET Core 中,可以使用 RabbitMQ、Azure Service Bus、Kafka 等消息队列作为 EventBus/EventQueue 的实现。以下是一个使用 RabbitMQ 的示例: 1. 安装 RabbitMQ 可以通过官网下载 RabbitMQ 安装包进行安装。 2. 安装 RabbitMQ.Client 在 .NET Core 项目中,可以通过 NuGet 安装 RabbitMQ.Client 包。 3. 配置 RabbitMQ 连接信息 在 appsettings.json 文件中,添加 RabbitMQ 连接信息: ``` { "RabbitMQ": { "HostName": "localhost", "UserName": "guest", "Password": "guest", "Port": 5672 } } ``` 4. 创建 EventBus/EventQueue 可以通过继承 IEventBus 接口来实现 EventBus,或者通过使用 RabbitMQ 的 API 创建 EventQueue。 以下是一个使用 RabbitMQ 的示例: ``` public class RabbitMQEventBus : IEventBus { private readonly IRabbitMQPersistentConnection _persistentConnection; private readonly ILogger<RabbitMQEventBus> _logger; private readonly IEventBusSubscriptionsManager _subsManager; private readonly string _exchangeName = "event_bus_exchange"; public RabbitMQEventBus(IRabbitMQPersistentConnection persistentConnection, ILogger<RabbitMQEventBus> logger, IEventBusSubscriptionsManager subsManager) { _persistentConnection = persistentConnection ?? throw new ArgumentNullException(nameof(persistentConnection)); _logger = logger ?? throw new ArgumentNullException(nameof(logger)); _subsManager = subsManager ?? new InMemoryEventBusSubscriptionsManager(); } public void Publish(IntegrationEvent @event) { if (!_persistentConnection.IsConnected) { _persistentConnection.TryConnect(); } using (var channel = _persistentConnection.CreateModel()) { var eventName = @event.GetType().Name; var message = JsonConvert.SerializeObject(@event); var body = Encoding.UTF8.GetBytes(message); channel.ExchangeDeclare(exchange: _exchangeName, type: "direct"); var properties = channel.CreateBasicProperties(); properties.Persistent = true; channel.BasicPublish(exchange: _exchangeName, routingKey: eventName, basicProperties: properties, body: body); } } public void Subscribe<T, TH>() where T : IntegrationEvent where TH : IIntegrationEventHandler<T> { var eventName = typeof(T).Name; _logger.LogInformation($"Subscribing to event {eventName}"); _subsManager.AddSubscription<T, TH>(); } public void Unsubscribe<T, TH>() where T : IntegrationEvent where TH : IIntegrationEventHandler<T> { var eventName = typeof(T).Name; _logger.LogInformation($"Unsubscribing from event {eventName}"); _subsManager.RemoveSubscription<T, TH>(); } } ``` 5. 注册 EventBus/EventQueue 可以通过依赖注入的方式注册 EventBus/EventQueue。以下是一个使用 RabbitMQ 的示例: ``` services.AddSingleton<IRabbitMQPersistentConnection>(sp => { var logger = sp.GetRequiredService<ILogger<DefaultRabbitMQPersistentConnection>>(); var factory = new ConnectionFactory() { HostName = Configuration["RabbitMQ:HostName"], UserName = Configuration["RabbitMQ:UserName"], Password = Configuration["RabbitMQ:Password"], Port = int.Parse(Configuration["RabbitMQ:Port"]) }; return new DefaultRabbitMQPersistentConnection(factory, logger); }); services.AddSingleton<IEventBusSubscriptionsManager, InMemoryEventBusSubscriptionsManager>(); services.AddSingleton<IEventBus, RabbitMQEventBus>(); ``` 6. 发布/订阅事件 可以通过 IEventBus 接口的 Publish 和 Subscribe 方法来发布/订阅事件。以下是一个使用 RabbitMQ 的示例: ``` _eventBus.Subscribe<TestIntegrationEvent, TestIntegrationEventHandler>(); _eventBus.Publish(new TestIntegrationEvent() { Message = "Hello, world!" }); ``` 其中 TestIntegrationEvent 是一个继承自 IntegrationEvent 的事件类,TestIntegrationEventHandler 是一个实现了 IIntegrationEventHandler<TestIntegrationEvent> 接口的事件处理程序类。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值