• SCF(SenparcCoreFramework) 系列教程(一):项目介绍及快速搭建


      2020年3月25日的“盛派周三分享”活动首次使用直播的方式与大家见面,共有 500 多人参与了活动,得到了众多开发者的好评,并强烈要求我分享 PPT,这点要求当然必须满足啦!

      除此以外,还有许多开发者因为时间冲突,没有能够及时光看直播,我们特地录制了直播视频,并提供回放,腾讯视频地址:

      http://v.qq.com/x/page/d0940ivnyih.html

      PDF 下载:20200324周三分享SCF.zip

     

      本次直播活动受到了国内广大社区的支持,再次表示感谢(按拼音顺序排列,不分先后):

    • “DotNetCore实战”公众号
    • “dotNET跨平台”公众号
    • “汪宇杰博客”公众号
    • 52ABP
    • DNT精英论坛
    • 北京.NET技术俱乐部
    • 大湾区 .Net 技术俱乐部
    • 合肥.NET技术社区
    • 胶东.NET俱乐部
    • 胶东开发者部落
    • 角落的白板报
    • 盛派开发者社区
    • 微软技术俱乐部(杭州)
    • 微软技术俱乐部(苏州)
    • 温州.NET微软技术社区
    • 徐州.NET俱乐部

      

      以下回顾几点重要的信息,以及大家的提问进行解答(如果有新的问题可以留言,我会更新在下面)。 

    什么是SCF?

      SCF( SenparcCoreFramework)是一整套可用于构建基础项目的企业级通用框架,严格遵循 DDD 设计模式,包含了基础的缓存、数据库、模型、验证及配套管理后台等等系统基础要件,高度模块化,具有高度的可扩展性和耐操性。
      SCF 支持容器化和微服务部署,也支持单体应用部署。

    SCF 的中期目标

      成为 .NET 界和 Spring 一样有影响力的 Web 开发框架。

    开源地址

    模板:

    https://github.com/SenparcCoreFramework/SCF

    https://gitee.com/SenparcCoreFramework/SCF


    基础库:

    https://github.com/SenparcCoreFramework/ScfPackageSources

    Senparc .NET 开源生态

    SCF 的理念、基础模块、扩展模块、规范和开源项目说明

     

     

     

     

    XSCF 是个啥?

    • XSCF 是 SCF 中所有可扩展模块的代号 例如 Senparc.Scf.Core 是基础模块,不是 XSCF

    • 需要实现 IXScfRegister 一系列接口 用于进行配置和引导自动注册、启动

    • 命名规则:[组织名].Xscf.[模块名] 如:Senparc.Xscf.WeixinManager 或:Senparc.Xscf.WeixinManager.TenPay

    • XSCF 之间可以相互依赖,也可以保持独立,但必须可以小粒度独立发布(如 nuget,或轻量级dll)

    数据库如何做到独立开发,统一集成?

       这是几乎所有支持高度分离的模块化、插件化框架开发的难点和痛点,为此,SCF做了大量的尝试和设计,已经形成了一套成熟、高效、高兼容性的架构,先来看图:

       在 XSCF(模块)中(图左侧),可以按照常规开发单体独立项目一样,创建自己的DbContext(MyEntitiesContext),需要继承 XscfDatabaseDbContext (其继承自 DbContext)。

      然后按照正常的开发方式,进行 Code First 的方式开发 Entity 并配置 DbSet 和 Mapping,并进行所有常规的数据库开发操作(需要使用 .NET Core 的 DI 来初始化这个 DbContext)。然后,使用命令 add-migration [名称] - Context MyEntitiesContext  添加数据库更新 migration 代码(这是唯一在更新数据库过程中需要输入的命令,或者独立指令,其他步骤全部全自动完成)。

       在 SCF 基础框架内(图右侧),已经内置了 SenparcEntitiesContext(当然你也可以自定义),其继承结构和 MyEntitiesContext 完全一致,这也保证了两个 DbContext 行为的一致性。

       在系统启动时,会自动检索实现了 IXscfDatase 接口的 XSCF,并自动寻找自定义的 DbContext(MyEntitiesContext),然后将其下的 DbSet<> 对象自动添加到一个全局缓存列表中,同时将 Mapping 信息注入到 SenparcEntitiesContext,使所有 XSCF 模块的 DbSet<> 对象,与 SenparcEntitiesContext 融为一体。

      当系统被访问时,不会主动注册 XSCF 中的 DbContext,只会寻找到“大而全”的 SenparcEntitiesContext,因此每个访问中,只会出现一个数据库连接实例,而与已安装的模块无关。

      更多精彩分享,请直接看视频吧:http://v.qq.com/x/page/d0940ivnyih.html

    选取几位开发者的提问:

    Q:SCF 的应用场景是什么?

    A:这个框架因为是一个基础框架,并且高度模块化的,可以搭载任意场景的模块上来,所以基本上什么场景都能用,看你自己的应用场景,去设计或者选择使用对应的框架就行了。

    Q:关于 SCF 中 DDD 的设计思路?

    A:关于 DDD 的问题,建议大家去看一下我那个视频,也是针对 SCF 的设计背景来介绍的,相信看完之后就会有很多感受的:https://v.qq.com/x/page/h0840us1cq2.html,看完之后,如果还需要讨论的话,最好看完再讨论,这样大家会有一些共识。另外,直播中也提到,我们目前是 beta 状态,DDD 中非常重要的聚合功能还在完善中,等进一步完善之后,大家将看到一个更加全面的全貌。当然,目前的 SCF 已经足够可以满足关联查询、数据管理的使用。

    Q:后期模板市场开放后,后台管理界面样式如何保持一致?

    A:我们将设计一套顶层“皮肤”标准,开发者可以在自己框架下面进行开发,系统所选用的皮肤可以作用于已经安装的所有模块。

    Q:模块的数据库对象都注入到一个 DbContext 中,名称冲突了怎么办?

    A:完全不用担心这个问题,SCF 已经有成熟的方案!数据库方面,都有前缀,可以避免出现冲突,另外在 DbContext 内部,我们是以实例类型注册的,只要命名空间不同,就不会出现冲突,完美兼容!

    欢迎继续讨论

      如有任何问题,欢迎留言讨论!社区欢迎大家多多参与,并提出宝贵意见建议!

  • 相关阅读:
    Cocos2d-X 精灵、动作效果
    android动画介绍之 自己定义Animation动画实现qq抖一抖效果
    C#将dataGridView中显示的数据导出到Excel(大数据量超有用版)
    Redis深入之对象
    【POJ 3694】 Network(割边&lt;桥&gt;+LCA)
    Swift学习笔记(十四)——字符,常量字符串与变量字符串
    关于tomcat session机制梳理
    【机器学习算法-python实现】採样算法的简单实现
    分公司=一部门——组合模式
    临渊慕鱼,不如退而结网!
  • 原文地址:https://www.cnblogs.com/szw/p/SFC-Introduction.html
Copyright © 2020-2023  润新知