{"id":13458140,"url":"https://github.com/luoyunchong/lin-cms-dotnetcore","last_synced_at":"2025-05-16T14:04:39.635Z","repository":{"id":37690398,"uuid":"194586535","full_name":"luoyunchong/lin-cms-dotnetcore","owner":"luoyunchong","description":"😃A simple and practical CMS implemented by .NET + FreeSql；前后端分离、Docker部署、OAtuh2授权登录、自动化部署DevOps、自动同步至Gitee、代码生成器、仿掘金专栏","archived":false,"fork":false,"pushed_at":"2025-04-26T09:16:05.000Z","size":15116,"stargazers_count":821,"open_issues_count":0,"forks_count":196,"subscribers_count":23,"default_branch":"master","last_synced_at":"2025-04-26T09:32:41.798Z","etag":null,"topics":["automapper","azure-devops","dotnet5","dotnetcore-cms","freesql","identityserver4","lin-cms","mysql","restful","serilog","swagger"],"latest_commit_sha":null,"homepage":"https://igeekfan.cn/vvlog/#/index","language":"C#","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/luoyunchong.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2019-07-01T02:29:43.000Z","updated_at":"2025-04-26T09:16:08.000Z","dependencies_parsed_at":"2023-11-26T12:24:27.485Z","dependency_job_id":"da4019ab-920e-46c5-b3ba-fc1f724d70f8","html_url":"https://github.com/luoyunchong/lin-cms-dotnetcore","commit_stats":null,"previous_names":[],"tags_count":17,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/luoyunchong%2Flin-cms-dotnetcore","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/luoyunchong%2Flin-cms-dotnetcore/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/luoyunchong%2Flin-cms-dotnetcore/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/luoyunchong%2Flin-cms-dotnetcore/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/luoyunchong","download_url":"https://codeload.github.com/luoyunchong/lin-cms-dotnetcore/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":254544146,"owners_count":22088807,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["automapper","azure-devops","dotnet5","dotnetcore-cms","freesql","identityserver4","lin-cms","mysql","restful","serilog","swagger"],"created_at":"2024-07-31T09:00:45.496Z","updated_at":"2025-05-16T14:04:39.627Z","avatar_url":"https://github.com/luoyunchong.png","language":"C#","funding_links":[],"categories":["C\\#"],"sub_categories":[],"readme":"﻿\n\u003ch1  align=\"center\"\u003e\n  \u003ca href=\"http://doc.cms.7yue.pro/\"\u003e\n    \u003cimg width=\"200\" src=\"https://consumerminiaclprd01.blob.core.chinacloudapi.cn/miniappbackground/sfgmember/lin/left-logo.png\"\u003e\n  \u003c/a\u003e\n  \u003ch1\u003e\n  Lin CMS By .NET \n  \u003c/h1\u003e\n\u003c/h1\u003e\n\n😃 A simple and practical CMS implemented by [ASP.NET Core](https://docs.microsoft.com/zh-cn/aspnet/core/introduction-to-aspnet-core?view=aspnetcore-6.0)\n\n## 项目简介\n\n![Publish](https://github.com/luoyunchong/lin-cms-dotnetcore/workflows/Publish/badge.svg)\n[![.NET IDE Rider](https://img.shields.io/static/v1?style=float\u0026logo=rider\u0026label=Rider\u0026message=jetbrains\u0026color=red)](https://www.jetbrains.com/rider/)\n![](https://img.shields.io/badge/.net8.0.0-3963bc.svg)\n![](https://img.shields.io/badge/license-MIT-3963bc.svg)\n![](https://img.shields.io/badge/developer-IGeekFan-3963bc.svg)\n\n本项目是完全出于个人喜爱，看到Lin-cms有了python,node.js,社区也有人出了[lin-cms-tp5](https://github.com/ChenJinchuang/lin-cms-tp5)的版本\n\n本项目是 Lin CMS 后端的 [ASP.NET Core](https://docs.microsoft.com/zh-cn/dotnet/core/introduction) 的实现，通过Vue.js实现的前后端分离CMS平台，目前实现简约的权限管理系统、基础字典项管理、随笔专栏，评论点赞，消息通知，标签等仿掘金模块。\n\n## 什么是 Lin CMS？\n\n Lin-CMS 是林间有风团队经过大量项目实践所提炼出的一套**内容管理系统框架**。Lin-CMS 可以有效的帮助开发者提高 CMS 的开发效率, 需要前端？请访问[**前端仓库**](https://github.com/luoyunchong/lin-cms-vue)。\n\n##  开源地址\n- 后端接口Gitee 链接 [https://gitee.com/igeekfan/lin-cms-dotnetcore](https://gitee.com/igeekfan/lin-cms-dotnetcore)\n- 后端接口GitHub 链接 [https://github.com/luoyunchong/lin-cms-dotnetcore](https://github.com/luoyunchong/lin-cms-dotnetcore)\n- 适配管理端UI [https://github.com/luoyunchong/lin-cms-vue](https://github.com/luoyunchong/lin-cms-vue)\n- 适配用户端UI [https://github.com/luoyunchong/lin-cms-vvlog](https://github.com/luoyunchong/lin-cms-vvlog)\n\n\n## 线上文档地址(完善中)\n\n- [https://igeekfan.cn/dotnetcore/lin-cms/](https://igeekfan.cn/dotnetcore/lin-cms/)\n\n## 线上 Demo\n- 本项目swagger地址 [https://api.igeekfan.cn/swagger/index.html](https://api.igeekfan.cn/swagger/index.html)\n- 用户端 lin-cms-vvlog [https://vvlog.igeekfan.cn](https://vvlog.igeekfan.cn) \n  - 普通用户：710277267@qq.com\n  - 密码：123qwe\n- 管理员 lin-cms-vue [https://cms.igeekfan.cn/](https://cms.igeekfan.cn)\n  - 管理员： admin\n  - 密码：123qwe\n\n## 前端\n- 在原[开源项目](https://github.com/TaleLin/lin-cms-vue)中增加了博客随笔、标签、随笔评论、关注用户、关注标签、技术频道（标签分类）、插件式功能（目前还没有）\n，具体特点查看如下[lin-cms-dotnetcore功能模块的设计](https://blog.igeekfan.cn/2019/11/24/lin-cms-dotnetcore/design/),开源地址见下方。\n\n### Lin CMS 的特点\n\nLin CMS 的构筑思想是有其自身特点的。下面我们阐述一些 Lin 的主要特点。\n\n### Lin CMS 是一个前后端分离的 CMS 解决方案\n\n这意味着，Lin 既提供后台的支撑，也有一套对应的前端系统，\n\n首先，传统的网站开发更多的是采用服务端渲染的方式，需用使用一种模板语言在服务端完成页面渲染：比如 Razor等模板技术。\n\n服务端渲染的好处在于可以比较好的支持 SEO，但作为内部使用的 CMS 管理系统，SEO 并不重要。\n\n但一个不可忽视的事实是，服务器渲染的页面到底是由前端开发者来完成，还是由服务器开发者来完成？其实都不太合适。现在已经没有多少前端开发者是了解这些服务端模板语言的，而服务器开发者本身是不太擅长开发页面的。那还是分开吧，前端用最熟悉的 Vue 写 JS 和 CSS，而服务器只关注自己的 API 即可。\n\n其次，单页面应用程序的体验本身就要好于传统网站。\n\n### 框架本身已内置了 CMS 常用的功能\n\nLin 已经内置了 CMS 中最为常见的需求：用户管理、权限管理、日志系统等。开发者只需要集中精力开发自己的 CMS 业务即可\n\n更多关于Lin CMS的介绍请访问[Lin CMS线上文档](http://doc.cms.7yue.pro/)\n\n## 所需基础\n\n由于 Lin 采用的是前后端分离的架构，所以你至少需要熟悉 C# 和 Vue。\n\n### 后端 C#\n该项目的Lin 的服务端框架是基于[.NET](https://docs.microsoft.com/zh-cn/dotnet/core/)构建的，所以如果你比较熟悉Mvc、WebAPI、过滤器等概念，或者是 有.NET Framework中Mvc开发经验，相信你一定很容易写出代码。\n\n### 相关技术\n- 数据库相关：ORM:[FreeSql](https://github.com/dotnetcore/FreeSql)+DataBase:MySQL5.6/MsSqlServer/Oracle/Sqlite/PostgreSQL\n- ASP.NET Core + WebAPI + RESTful\n- 简化对象映射：[AutoMapper](https://automapper.org/)\n- Json Web令牌:JWT\n- 文档API：Swagger([Swashbuckle.AspNetCore](https://github.com/domaindrivendev/Swashbuckle.AspNetCore))\n  - RapiDoc([RapiDoc](https://github.com/luoyunchong/IGeekFan.AspNetCore.RapiDoc))\n  - Knife4jUI([Knife4jUI](https://github.com/luoyunchong/IGeekFan.AspNetCore.Knife4jUI))\n- 序列化：Newtonsoft.Json\n- 测试框架：Xunit\n- 日志 [Serilog](https://github.com/serilog/serilog-aspnetcore)\n- 依赖注入服务[AutoFac](https://github.com/autofac/Autofac.Extensions.DependencyInjection)\n- 通用扩展方法 Z.ExtensionMethods\n- 云存储：七牛云 [MQiniu.Core](https://github.com/Hello-Mango/MQiniu.Core)\n- 分布式事务、EventBus：[DotNeteCore.CAP](https://github.com/dotnetcore/CAP)\n- GitHub第三方授权登录[AspNet.Security.OAuth.GitHub](https://github.com/aspnet-contrib/AspNet.Security.OAuth.Providers/tree/dev/src/AspNet.Security.OAuth.GitHub)\n- QQ第三方授权登录[AspNet.Security.OAuth.QQ](https://github.com/aspnet-contrib/AspNet.Security.OAuth.Providers/tree/dev/src/AspNet.Security.OAuth.QQ)\n- Gitee第三方授权登录[AspNet.Security.OAuth.Gitee](https://github.com/aspnet-contrib/AspNet.Security.OAuth.Providers/tree/dev/src/AspNet.Security.OAuth.Gitee)\n- [Docker](https://docs.docker.com/)\n- [Azure DevOps](https://dev.azure.com/)\n- [GitHub Action](https://help.github.com/en/actions)\n\n### 实践\n- DDD(Domain-Driven Design)领域驱动设计 \n- Logging（日志）\n- DevOps(CI/CD,自动化构建)\n- Database Migrations（数据库自动迁移)\n- Authentication(身份认证)\n- Authorization（授权）\n- Separation of Concerns（关注点分离）\n- Repository Pattern（仓储模式）\n- SOLID Principles（单一职责）\n- Clean Code（代码整洁之道）\n\n### 分层结构（Layers）\n- src\n  - LinCms.Web：接口API（ASP.NET Core)\n  - LinCms.Application:应用服务\n  - LinCms.Application.Contracts:DTO,数据传输对象，应用服务接口\n  - LinCms.Infrastructure:基础设施，数据库持久性的操作\n  - LinCms.Core:该应用的核心，实体类，通用操作类，AOP扩展，分页对象，基础依赖对象接口，时间扩展方法，当前用户信息，异常类，值对象\n  - LinCms.Plugins 使用单项目实现某个业务的扩展，不是该项目的主要结构，可暂时忽略。\n  - LinCms.Scaffolding [代码生成器](https://igeekfan.cn/dotnetcore/lin-cms/lincms-scaffolding.html)\n- test\n  - LinCms.Test:对仓储，应用服务或工具类进行测试\n\n### 前端 \n前端需要开发者比较熟悉 Vue 的，另外需要了解 ES6,axios,ElementUi、webpack、Vuex、Vue-Router等等等\n\n\n## 讨论交流\n\n### QQ 交流群\n\n- .NET Core搬砖队(lin-cms-dotnetcore) QQ群号：762828442\n\n\u003cimg class=\"QR-img\"  width=\"258\" height=\"300\" src=\"./docs/images/qq.png\"\u003e\n\n### 微信公众号\n\n微信搜索：dotNET搬砖队\n\n\u003cimg class=\"QR-img\" src=\"./docs/images/wechat.png\"\u003e\n\n## 更新日志\nhttps://github.com/luoyunchong/lin-cms-dotnetcore/wiki/%E6%9B%B4%E6%96%B0%E6%97%A5%E5%BF%97\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fluoyunchong%2Flin-cms-dotnetcore","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fluoyunchong%2Flin-cms-dotnetcore","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fluoyunchong%2Flin-cms-dotnetcore/lists"}