zoukankan      html  css  js  c++  java
  • 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 内部,我们是以实例类型注册的,只要命名空间不同,就不会出现冲突,完美兼容!

    欢迎继续讨论

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

  • 相关阅读:
    golang删除数组某个元素
    golang用通道实现信号量,控制并发个数
    什么是ScaleIO中的forwards rebuild和backwards rebuild?
    SQL Server中的database checkpoint
    如何将thick provision lazy zeroed的VMDK文件转换为thick provision eager zeroed?
    LoadTestAgentResultsLateException in VS2010
    SQL Server Instance无法启动了, 因为TempDB所在的分区没有了, 怎么办?
    VMware vCenter中, 如何辩认虚机上Raw Device Mapping过了的一块物理磁盘?
    SQL Server AlwaysOn Setup Step-By-Step Guide
    TPC-E在populate测试Database时需要注意的一些事项
  • 原文地址:https://www.cnblogs.com/szw/p/SFC-Introduction.html
Copyright © 2011-2022 走看看