DotNetCore跨平台~组件化时代来了

本文涉及的产品
云数据库 Redis 版,社区版 2GB
推荐场景:
搭建游戏排行榜
云数据库 MongoDB,通用型 2核4GB
简介:

进行dotnetcore之后,各种对象都是基于DI进行生产的,这就有了对象的生命周期一说,早在autofac里也有相关知识点,这与Microsoft.Extensions.DependencyInjection是完全温和的,方便大家理解,在讲今天的组件化之前,先对DI的三种生命周期进行理解一下:

AddSingleton:单例,进程内它是唯一的

AddTransient:瞬息,在对象在当前环境内,作用域内是唯一的

AddScoped:请求,对象在一个HTTP请求内是唯一的

下面来看今天的组件化的实现,比如我希望对nosql进行封装,在以后使用它时,直接在代码startup中进行注册,或者使用配置文件进行注册,我们就可以涉及这样一个扩展方法来实现对IServiceCollection扩展!

    /// <summary>
    /// nosql服务扩展
    /// </summary>
    public static class NoSqlExtensions
    {

        /// <summary>
        /// 使用Redis
        /// </summary>
        /// <param name="services"></param>
        /// <param name="options"></param>
        /// <returns></returns>
        public static IServiceCollection UseRedis(
           this IServiceCollection services,
           Action<RedisConfig> options = null)
        {
            RedisConfig option = new RedisConfig();
            options?.Invoke(option);
            ObjectMapper.MapperTo<RedisConfig>(option, ConfigFileHelper.Get<RedisConfig>());//优先级装饰器
            services.AddSingleton(option);
            services.AddSingleton<RedisManager, RedisManager>();
            return services;
        }

        /// <summary>
        /// 使用Mongodb
        /// </summary>
        /// <param name="services"></param>
        /// <param name="options"></param>
        /// <returns></returns>
        public static IServiceCollection UseMongodb(
          this IServiceCollection services,
          Action<MongodbConfig> options = null)
        {
            MongodbConfig option = new MongodbConfig();
            options?.Invoke(option);
            ObjectMapper.MapperTo<MongodbConfig>(option, ConfigFileHelper.Get<MongodbConfig>());//优先级装饰器
            services.AddSingleton(option);
            services.AddSingleton<MongodbManager, MongodbManager>();
            return services;
        }
    }

在程序中使用时,也是很方便,注意的是,如果配置文件中也配置它了,我们将以配置文件为准,这样在生产环境里,你的代码注入的参数,不用被注释和删除!

       #region 服务组件
            services.UseRabbitMQ(o =>
            {
                o.ExchangeName = "AutoCalculate";
                o.MqServerHost = "amqp://192.168.200.214:5672";
            });

            services.UseRedis(o =>
            {
                o.Host = "192.168.200.214:6379";
                o.AuthPassword = "2017";
            });

            services.UseDapper(o =>
            {
                o.DbType = 2;
                o.ConnectionString = "test";
            });
            #endregion

感谢各位的阅读!

我们的框架应该是基于组件化的!

我们的系统应该是基于微服务化的!

我们的部署,应该是基于自动化的!

本文转自博客园张占岭(仓储大叔)的博客,原文链接:DotNetCore跨平台~组件化时代来了,如需转载请自行联系原博主。

相关实践学习
基于Redis实现在线游戏积分排行榜
本场景将介绍如何基于Redis数据库实现在线游戏中的游戏玩家积分排行榜功能。
云数据库 Redis 版使用教程
云数据库Redis版是兼容Redis协议标准的、提供持久化的内存数据库服务,基于高可靠双机热备架构及可无缝扩展的集群架构,满足高读写性能场景及容量需弹性变配的业务需求。 产品详情:https://www.aliyun.com/product/kvstore &nbsp; &nbsp; ------------------------------------------------------------------------- 阿里云数据库体验:数据库上云实战 开发者云会免费提供一台带自建MySQL的源数据库&nbsp;ECS 实例和一台目标数据库&nbsp;RDS实例。跟着指引,您可以一步步实现将ECS自建数据库迁移到目标数据库RDS。 点击下方链接,领取免费ECS&amp;RDS资源,30分钟完成数据库上云实战!https://developer.aliyun.com/adc/scenario/51eefbd1894e42f6bb9acacadd3f9121?spm=a2c6h.13788135.J_3257954370.9.4ba85f24utseFl
目录
相关文章
|
3天前
|
开发框架 Android开发 开发者
构建未来:使用Flutter框架开发跨平台移动应用
【4月更文挑战第24天】 在移动应用的世界中,Android和iOS一直占据主导地位。然而,开发者经常面临一个难题:如何高效地为这两个平台构建和维护应用。传统的解决方案是分别为每个平台编写和维护独立的代码库,这不仅耗时且低效,还增加了开发成本。本文将深入探讨如何使用Google的Flutter框架来构建高性能、美观且能够在Android和iOS上无缝运行的跨平台移动应用。通过分析Flutter的架构、核心组件以及开发优势,我们将了解为何Flutter成为当今市场上最具潜力的跨平台解决方案。
|
3月前
|
Rust 前端开发 JavaScript
IM跨平台技术学习(十):快速对比跨平台框架Electron、Flutter、Tauri、React Native等
在本文中,我们将比较五种流行的桌面应用程序开发框架:Electron、Flutter、Tauri、React Native 和 Qt,希望可以帮助你根据项目需求做出明智的技术选型决策。
160 2
|
5月前
|
监控 数据可视化 前端开发
一个.NetCore前后端分离、模块化、插件式的通用框架
一个.NetCore前后端分离、模块化、插件式的通用框架
106 0
|
8月前
|
前端开发 JavaScript Java
使用前端框架开发跨平台桌面应用
使用前端框架开发跨平台桌面应用
156 0
|
9月前
|
存储 缓存 移动开发
构建跨平台应用的利器——UniApp入门指南
构建跨平台应用的利器——UniApp入门指南
|
9月前
|
开发框架 移动开发 Dart
Flutter vs React Native:选择最适合的跨平台移动应用开发框架
本文探讨了Flutter和React Native这两个流行的跨平台移动应用开发框架之间的对比。首先,介绍了Flutter和React Native的基本原理和特点,并强调了它们在性能、开发体验和生态系统方面的优势。然后,通过对比性能、开发体验和生态系统等方面的差异,帮助读者更好地了解两者之间的区别。最后,总结了每个框架的优缺点,并提供了选择适合自身需求框架的建议。无论是开发者还是决策者,本文都将为他们在选择Flutter或React Native时提供一些有价值的指导。
|
10月前
|
开发框架 前端开发 JavaScript
构建跨平台桌面应用:Electron和Qt的比较
当谈到构建跨平台桌面应用程序时,开发人员常常会面临一个重要的选择:Electron和Qt。这两个框架都提供了强大的工具和库来开发跨平台应用程序,但它们在设计理念、技术栈和生态系统方面存在一些区别。本文将比较Electron和Qt,并探讨它们的优势和不足之处,以帮助开发人员在选择适合自己项目的框架时做出明智的决策。
3830 0
|
开发框架 自然语言处理 前端开发
一个基于.NetCore开发、模块化、跨平台、多语言商城系统
一个基于.Net Core MVC开发的、简单、模块化、跨平台、多语言的电子商务系统。项目采用模块化架构,代码清晰,便于扩展;功能完善、集成了外贸常见的支付方式;支持多个主题切换;所采用的技术栈都是最新的。
312 0
一个基于.NetCore开发、模块化、跨平台、多语言商城系统
|
资源调度 JavaScript 前端开发
如何使用Vue + Electron搭建跨平台应用
• Electron: 使用 JavaScript, HTML 和 CSS 等 Web 技术创建原生程序的框架 • Vue.js: Web 前端用于构建用户界面的渐进式框架 • Vuetify: Vue.js 的 Material Design 组件框架 看完以上介绍,也明白了本文要做的事:用 Vue.js 与 Vuetify 组件,基于 Electron 来创建原生桌面应用。
316 0
如何使用Vue + Electron搭建跨平台应用
|
IDE Java Linux
为什么除了 Flutter 之外,我们还需要另一个跨平台开发框架?
不久前,谷歌正式推出Jetpack Compose 1.0 版本。近日,JetBrains 在此基础上发布了 Compose Multiplatform Alpha 版本,旨在将 Compose 扩展到桌面和 Web 端。
375 0
为什么除了 Flutter 之外,我们还需要另一个跨平台开发框架?