出售域名 11365.com.cn
有需要请联系 16826375@qq.com
在手机上浏览
在手机上浏览
  • SinGooCMS(.net core)产品介绍 

    适用:适用于中小型企业快速搭建信息发布平台以及作为二次开发平台。

    环境:跨平台(Windows/Linux/MacOS) + .net core(3.1) MVC + SqlServer/MySql/Sqlite。

    --------------------------------------------------------------------

     

    SinGooCMS的.net core版本,基于.net core 3.1开发
    .NET Core 具有以下特性:

    跨平台:可在 Windows、macOS 和 Linux 操作系统上运行。
    开放源代码: .NET Core 框架是开放源代码,使用 MIT 和 Apache 2 许可证。 .NET Core 是一个 .NET Foundation 项目。
    现代:它实现了异步编程、使用结构的无复制模式和容器的资源调控等现代范例。
    性能: 通过各种功能(如硬件内部函数、分层编译和 Span<T>)来提供高性能。
    跨环境一致:在多个操作系统和体系结构(包括 x64、x86 和 ARM)上以相同的行为运行代码。
    命令行工具: 包括可用于本地开发和持续集成的易于使用的命令行工具。
    部署灵活: 可以在应用中包含 .NET Core 或并行安装它(用户或系统范围安装)。 可搭配 Docker 容器使用。


    具体介绍可参考:https://docs.microsoft.com/zh-cn/dotnet/core/about

     

    系统架构
    采用DDD(领域驱动)开发思想,核心业务模块+周边辅助模块。
    SinGooCMS.Domain 核心业务层
    SinGooCMS.Infrastructure  基础实施层
    SinGooCMS.Application 应用层
    SinGooCMS.WebUI 界面UI层
    SinGooCMS.Passports 统一认证中心

     

    数据模型
    EFCore + Ado.net
    在appsettings.json中配置连接字符串

    "ConnectionStrings": {
        "ProviderName": "Sqlite",
        //"SQLConnSTR": "server=(local);database=SinGooCMS-v1.6;uid=sa;pwd=123;Application Name=SinGooCMS;pooling=true;min pool size=5;max pool size=512;connect timeout = 20;",
        //"SQLConnSTR": "server=localhost;database=SinGooCMSv16;uid=root;pwd=123456;SslMode=None;",
        "SQLConnSTR": "Data Source=db/singootop.db",
        //"DistributedCacheConnStr": "server=(local);database=SinGooCMS-v1.6;uid=sa;pwd=123;Application Name=SinGooCMS;pooling=true;min pool size=5;max pool size=512;connect timeout = 20;",
        "RedisExchangeHosts": "127.0.0.1:6379,allowadmin=true"
    }


    系统根据"ProviderName",调用不同的数据库引擎,目前支持SqlServer,MySql,Sqlite。
    SinGooCMS.Ado作为EFCore的辅助功能使用,弥补EFCore不方便写原生SQL的不足。
    SinGooCMS.Ado可以在NuGet包管理器中下载,开源地址是:https://github.com/SinGooCMS/SinGooCMSAdo

     

    注入容器-DI
    使用Autofac做为注入容器,除在普通类中注入实例,也可以在控制器(Controller)和视图(Views)中注入实例。
    注入可以是构造器注入和属性注入

    //构造器注入:
    public class PassportsController : Controller
    {
        private readonly IUserRepository userRepository;
        private readonly IUserService userService;
        private readonly IIdentityServerInteractionService interaction;
    
        public PassportsController(
                IUserRepository _userRepository,
                IUserService _userService,
                IIdentityServerInteractionService _interaction
            )
        {
            this.userRepository = _userRepository;
            this.userService = _userService;
            this.interaction = _interaction;
        }
        //...
    }
    
    
    //属性注入:
    public class CMSPageBase : Controller
    {
        public ICMSContext Context { get; set; }
        public ICacheStore CacheStore { get; set; }
        public ILogService LogService { get; set; }
        //...
    }
    
    //视图注入:
    @inject SinGooCMS.Domain.Interface.ICMSContent cms;
    @inject SinGooCMS.Domain.Interface.ICMSContext context;
    @inject SinGooCMS.Domain.Interface.IUser user;
    @using SinGooCMS.MVCBase.Extension;
    
    <!DOCTYPE html>
    <html>
    ...

     

    缓存
    包括系统缓存与页面缓存
    1)系统缓存
    系统会缓存常用的数据以提升效率,比如栏目、基础配置、字典等。
    系统缓存可以使用内存缓存和Redis缓存,具体在appsettings.json中配置。

    //是否启用缓存
    "EnableCache": "True",
    //缓存类型 LocalCache 、 RedisCache
    "CacheType": "LocalCache",
    //缓存有效时长(秒)
    "ExpireSeconds": 3600,
    //Redis自定义Key前缀
    "RedisKey": "",
    //Redis缓存使用的DbNum
    "CacheDbNum": "1",


    2)页面缓存
    系统提供了栏目、文章的缓存机制,启用后缓存文件将保存到目录:/include/htmlcache/。


    模板
    Razor模板语法介绍:https://docs.microsoft.com/zh-cn/aspnet/core/mvc/views/razor?view=aspnetcore-3.1
    模板存放路径是:/Views/Templates/,此目录下可以有多个模板文件夹,系统根据设置使用其中某个模板。
    模板不会被编译,通过在线编辑模板,实时改变前端显示效果。

     

    第三方
    系统集成了邮件发送、短信发送、阿里云云存储、第三方授权登录等功能。
    系统集成了盛派微信组件Senparc.Weixin,提供了简单的信息处理和菜单管理。

     

    浏览方式
    默认的MVC路由,如/article/about。
    伪静态,如/article/about.html。

     

    统一认证
    集成IdentityServer4,默认情况下是使用本站自有的会员系统,如果是网站集群,需要统一认证,需要配置认证中心站点,并配置客户端。
    在认证中心 /Config/Clients.json 配置客户端

    [
      {
        "ClientID": "cmssite",
        "ClientName": "SinGooCMS内容管理系统",
        "LoginUrl": "http://localhost:5002/signin-oidc",
        "LogoutUrl": "http://localhost:5002/signout-callback-oidc"
      },
      {
        "ClientID": "client2",
        "ClientName": "客户端2",
        "LoginUrl": "http://localhost:5003/signin-oidc",
        "LogoutUrl": "http://localhost:5003/signout-callback-oidc"
      }
    ]

    然后在客户端appsettings.json文件中设置

    //是否统一(单点)登录
    "IsUnificationLogin": "True",
    //单点登录客户端ID
    "OAuthClientID": "cmssite",
    //单点登录客户端名称
    "OAuthClientName": "singoocms内容管理系统",
    //单点登录统一登录地址
    "OAuthUrl": "http://localhost:5000"

    --------------------------------------------------------------------

    案例

    --------------------------------------------------------------------

    演示demo:

    http://demo.singoo.top

    后台管理:

    http://demo.singoo.top/platform/login.html

    demo

    demo888

     

@await Html.ShowFooter()