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

欢迎继续讨论

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

原文地址:https://www.cnblogs.com/szw/p/SFC-Introduction.html

时间: 2024-08-30 02:23:52

SCF(SenparcCoreFramework) 系列教程(一):项目介绍及快速搭建的相关文章

SpringBoot系列教程web篇之Beetl环境搭建

前面两篇分别介绍了目前流行的模板引擎Freemaker和Thymeleaf构建web应用的方式,接下来我们看一下号称性能最好的国产模板引擎Beetl,如何搭建web环境 本文主要来自官方文档,如有疑问,推荐查看: http://ibeetl.com/guide/#beetl I. 准备 1. 依赖 首先我们是需要一个springboot项目,基本的pom结构大都相似 <parent> <groupId>org.springframework.boot</groupId>

Cocos2d-x 3.0final 终结者系列教程15-win7+vs2012+adt+ndk环境搭建(无Cygwin)

终于不用Cygwin 了,很高兴 为什么要用Win7? 因为VS2012要求Win7以上系统才能安装! 为什么要用vs2012? 因为VS2012才支持C++11! 为什么要支持C++11? 因为Cocos2d-x 3.0final版需要C++11的支持. ----------------------------------------------------------- 准备软件都有哪些? Win7,VS2012,Java SDK , ADT(包含了Eclipse,sdk), Android

【fastweixin框架教程1】一分钟快速搭建微信公众平台JAVA服务器

目前网上有很多,一分钟微信公众平台教程,但很少有快速搭建微信公众平台服务器教程. 本文以fastweixin框架作为基础,以微信公众平台企业号作为目标,快速搭建微信公众平台服务器. 有关JAVA微信公众平台服务器框架介绍可以参考:http://my.oschina.net/ywbrj042/blog/402049 本文目标: 1.极其方便的实现微信公众平台服务端开发 2.完成服务器绑定 3.实现用户消息监听 本文技术要求:要求大家熟悉JAVA基本语言和servlet 很多大学同学可能对servl

一、BaseCms系列文章:项目介绍与环境配置

一.项目效果图预览: 二.项目介绍 基于 elementui 写一个自己的管理后台.这个系列文章的目的就是记录自己搭建整个管理后台的过程,希望能帮助到那些入门 vue + elementui 开发的小伙伴.之前有写过一个很简洁的版本,但觉得那个版本太粗糙,也没有相关的搭建过程讲解,学习意义不大.所以这个版本相当于对之前版本的升级和补充.那么项目中涉及到的知识点有哪些呢? 1. elementui 常用组件的使用和细节 2. axios 的封装及使用 3. vuex 的使用和模块化 4. 动态菜单

火云开发课堂 - 《Shader从入门到精通》系列 第一节:Shader介绍与工程搭建

<Shader从入门到精通>系列在线课程 第一节:Shader介绍与工程搭建 视频地址:http://edu.csdn.net/course/detail/1441/22665?auto_start=1 交流论坛:http://www.firestonegames.com/bbs/forum.php 工程下载地址:请成为正式学员获取工程 课程截图: 项目实例: 版权声明:本文为博主原创文章,未经博主允许不得转载.

无Maven不项目---使用Eclipse快速搭建Maven项目

自从了解Maven和会使用Maven之后,无论创建什么类型的工程,java,web我都会使用Maven来管理项目,就是因为它提供的依赖功能,说白了就是你想用到什么包就去Maven仓库搜索,并将坐标粘贴在pom.xml中,保存一下, Eclipse就会自动为你下载相关的包,省了导出找jar包的时间,和版本冲突的问题!下面使用Eclipse快速搭建Maven项目 如果你的Eclipse自带Maven那么恭喜你,不用配置了,如果没有的话使用eclipse安装插件的办法,地址:http://m2ecli

scrapy系列教程一——scrapy介绍和scrapy安装

1.scrapy可以做什么?      Scrapy是一个为了爬取网站数据,提取结构性数据而编写的应用框架. 可以应用在包括数据挖掘,信息处理或存储历史数据等一系列的程序中.其最初是为了 页面抓取 (更确切来说, 网络抓取 )所设计的, 也可以应用在获取API所返回的数据(例如 Amazon Associates Web Services ) 或者通用的网络爬虫. 2. scrapy相关文档 Scrapy 中文文档     http://scrapy-chs.readthedocs.org/zh

Python零基础学习系列之二--Python介绍及环境搭建

1-1.Python简介: Python是一种解释型.面向对象.动态数据类型的高级程序设计语言.Python由Guido van Rossum于1989年底发明,第一个公开发行版发行于1991年.像Perl语言一样, Python 源代码同样遵循 GPL(GNU General Public License)协议. Python(英国发音:/?pa?θ?n/ 美国发音:/?pa?θɑ?n/), 是一种面向对象的解释型计算机程序设计语言,由荷兰人Guido van Rossum于1989年发明,第

SpringBoot系列教程web篇之重定向

原文地址: SpringBoot系列教程web篇之重定向 前面介绍了spring web篇数据返回的几种常用姿势,当我们在相应一个http请求时,除了直接返回数据之外,还有另一种常见的case -> 重定向: 比如我们在逛淘宝,没有登录就点击购买时,会跳转到登录界面,这其实就是一个重定向.本文主要介绍对于后端而言,可以怎样支持302重定向 I. 环境搭建 首先得搭建一个web应用才有可能继续后续的测试,借助SpringBoot搭建一个web应用属于比较简单的活; 创建一个maven项目,pom文