大家好,最近离职了,利用闲暇时间就捣鼓了一个基于AspNet Core开发框架,分享出来希望能给AspNet Core学者带来一些帮助,同时也能跟大家一起学习。当然了,由于我的个人技术及经验的有限,框架还是有很多Bug或不足之处,希望各位大神或园友指出,我会继续完善的,可以通过这些方式联系到我qq:891022171、邮箱:lishuyiba@126.com

以下仅代表个人观点,与本人所在公司无关。

使用到的技术:AspNet Core 2.0 + EF +Auofac+ SqlServer2012 + Bootstrap + Layer + ace admin

根据的理解,目前我知道有三种比较好依赖注入管理的方式

1、  第一种、定义依赖注入接口,只要实现了该接口的都自动注入到IOC容器。

2、  第二种、定义特定的后缀,只要符合该特定后缀都自动注入到IOC容器。

3、  第三种、定义特性类,查找标识有该特性的类并注入到IOC容器。

我的项目使用了第一种,基本思路如下

程序启动时查找bin下所有的DLL并利用反射查找实现了IDependencyAutofacRegistrar接口的类注入到容器,实现解耦。

说明:

1、由于目前Core 2.0属于预览版,启动web项目时不能打开网页,可能跟版本有关,等正式版发布后,我再重新发布看看。。。。

2、想要VS2017能编译通过,要修改环境变量,添加MSBuildSdksPath,并设置 Core2.0 SDK的路径,下面是我本机的配置。。。 Core2.0 SDK下载地址:https://download.microsoft.com/download/3/7/F/37F1CA21-E5EE-4309-9714-E914703ED05A/dotnet-dev-win-x64.2.0.0-preview1-005977.exe

######################下面先来看看效果图吧###################

说明:下面这些效果图我是用Core 1.0 开发的,还有很多API没有加入。本次分享的项目是用Core2.0开发的,主要是因为Core2.0加入了好多以前.Net4.6的API(查询API:https://docs.microsoft.com/en-us/dotnet/api/system.reflection.assembly?view=netcore-2.0),用起来比较方便,但是网站页面不打开,数据是正常返回的,可能是预览版的问题(前面有提过),感兴趣需要页面的朋友可以 艾特 问我要。

看 data 数据返回:

先来看看前台效果图,只是简单的把输出显示出来,效果很丑,别笑哦~  因为没时间找好看的模板~~~

再来看看后台效果图,主题选用: ace admin,列表显示用Bootstrap ,弹出层用Layer

项目的大体结构

lsyi. Web------------ web项目。

lsyi.Core ------------------框架的核心都封装在这。

lsyi.Data  ----------------数据访问

lsyi. Autofac --------------------Autofac IOC容器

lsyi. Ninject ---------Ninject IOC容器

lsyi. Models --------------项目模型

lsyi. Services --------------服务

###############好了,下面给大家介绍框架封装的东西###################

首页

后台登录

后台首页

添加文章页面

由于时间原因,框架的介绍后面有空我再详细补上~~

项目地址在这里,很多同学反馈说没有界面,今天上传了一个新的。

############################################################

新:https://github.com/lishuyiba/Sys.Framework (有界面)

CREATE DATABASE [Robot]
GO
USE [Robot]
GO
/****** Object: Table [dbo].[T_Robot_Log] Script Date: 2017/12/12 17:23:28 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [dbo].[T_Robot_Log](
[F_Id] [int] IDENTITY(1,1) NOT NULL,
[F_LogType] [int] NULL,
[F_LogConent] [nvarchar](max) NULL,
[F_CreateTime] [datetime] NULL,
PRIMARY KEY CLUSTERED
(
[F_Id] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY] GO
/****** Object: Table [dbo].[T_Robot_Meal] Script Date: 2017/12/12 17:23:28 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [dbo].[T_Robot_Meal](
[F_Id] [int] IDENTITY(1,1) NOT NULL,
[F_MealName] [nvarchar](200) NULL,
[F_MealCode] [nvarchar](200) NULL,
[F_Status] [int] NULL,
[F_CreateTime] [datetime] NULL,
CONSTRAINT [PK__T_Robot___2C6EC723E6ED0CFD] PRIMARY KEY CLUSTERED
(
[F_Id] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY] GO
/****** Object: Table [dbo].[T_Robot_Role] Script Date: 2017/12/12 17:23:28 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [dbo].[T_Robot_Role](
[F_Id] [int] IDENTITY(1,1) NOT NULL,
[F_RoleName] [nvarchar](40) NULL,
[F_CreateTime] [datetime] NULL,
PRIMARY KEY CLUSTERED
(
[F_Id] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY] GO
/****** Object: Table [dbo].[T_Robot_Status] Script Date: 2017/12/12 17:23:28 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [dbo].[T_Robot_Status](
[F_Id] [int] IDENTITY(1,1) NOT NULL,
[F_Type] [int] NULL,
[F_Status] [int] NULL,
PRIMARY KEY CLUSTERED
(
[F_Id] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY] GO
/****** Object: Table [dbo].[T_Robot_Task] Script Date: 2017/12/12 17:23:28 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [dbo].[T_Robot_Task](
[F_Id] [int] IDENTITY(1,1) NOT NULL,
[F_TaskName] [nvarchar](300) NULL,
[F_TaskParam] [nvarchar](max) NULL,
[F_CronExpressionString] [nvarchar](200) NULL,
[F_AssemblyName] [nvarchar](150) NULL,
[F_ClassName] [nvarchar](150) NULL,
[F_Status] [int] NULL,
[F_IsDelete] [int] NULL,
[F_CreatedTime] [datetime] NULL,
[F_ModifyTime] [datetime] NULL,
[F_RecentRunTime] [datetime] NULL,
[F_NextFireTime] [datetime] NULL,
[F_CronRemark] [nvarchar](300) NULL,
[F_Remark] [nvarchar](1000) NULL,
PRIMARY KEY CLUSTERED
(
[F_Id] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY] GO
/****** Object: Table [dbo].[T_Robot_Transition] Script Date: 2017/12/12 17:23:28 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [dbo].[T_Robot_Transition](
[F_Id] [int] IDENTITY(1,1) NOT NULL,
[F_BusinessCode] [nvarchar](200) NULL,
[F_NetOrder] [nvarchar](200) NULL,
[F_AccessNumber] [nvarchar](200) NULL,
[F_Status] [int] NULL,
[F_CreateTime] [datetime] NULL,
[F_Remark] [nvarchar](500) NULL,
CONSTRAINT [PK__T_Robot___2C6EC72325890140] PRIMARY KEY CLUSTERED
(
[F_Id] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY] GO
/****** Object: Table [dbo].[T_Robot_User] Script Date: 2017/12/12 17:23:28 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [dbo].[T_Robot_User](
[F_Id] [int] IDENTITY(1,1) NOT NULL,
[F_RoleId] [int] NULL,
[F_Account] [nvarchar](40) NULL,
[F_Password] [nvarchar](40) NULL,
[F_CreateTime] [datetime] NULL,
[F_IsDelete] [int] NULL,
CONSTRAINT [PK__T_Robot___2C6EC72332F0437C] PRIMARY KEY CLUSTERED
(
[F_Id] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY] GO

数据库脚本

############################################################

旧:https://github.com/lishuyiba/lsyiFramework (无界面)

USE [dbCore]
GO
/****** Object: Table [dbo].[Article] Script Date: 2018/1/6 23:16:38 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [dbo].[Article](
[Id] [int] IDENTITY(1,1) NOT NULL,
[AuthorId] [int] NOT NULL,
[CategoryId] [int] NOT NULL,
[Content] [nvarchar](max) NULL,
[CreateTime] [datetime2](7) NOT NULL,
[DelFlag] [int] NOT NULL,
[LastEditTime] [datetime2](7) NOT NULL,
[Status] [int] NOT NULL,
[Title] [nvarchar](max) NULL,
[ViewCount] [int] NOT NULL
) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY] GO
/****** Object: Table [dbo].[Category] Script Date: 2018/1/6 23:16:38 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [dbo].[Category](
[Id] [int] IDENTITY(1,1) NOT NULL,
[Name] [nvarchar](max) NULL
) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY] GO
/****** Object: Table [dbo].[Role] Script Date: 2018/1/6 23:16:38 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [dbo].[Role](
[Id] [int] IDENTITY(1,1) NOT NULL,
[Name] [nvarchar](max) NULL
) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY] GO
/****** Object: Table [dbo].[SystemLog] Script Date: 2018/1/6 23:16:38 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [dbo].[SystemLog](
[Id] [int] IDENTITY(1,1) NOT NULL,
[Date] [datetime2](7) NOT NULL,
[Operate] [nvarchar](max) NULL,
[UserName] [nvarchar](max) NULL
) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY] GO
/****** Object: Table [dbo].[Tag] Script Date: 2018/1/6 23:16:38 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [dbo].[Tag](
[Id] [int] IDENTITY(1,1) NOT NULL,
[Name] [nvarchar](max) NULL
) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY] GO
/****** Object: Table [dbo].[Users] Script Date: 2018/1/6 23:16:38 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [dbo].[Users](
[Id] [int] IDENTITY(1,1) NOT NULL,
[Account] [nvarchar](max) NULL,
[Password] [nvarchar](max) NULL,
[CreateTime] [datetime2](7) NOT NULL,
[LastEditTime] [datetime2](7) NOT NULL,
[DelFlag] [int] NOT NULL,
[RoleID] [int] NOT NULL,
[Status] [int] NOT NULL,
CONSTRAINT [PK_T_CMS_CONTENTTAG] PRIMARY KEY CLUSTERED
(
[Id] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY] GO

数据库脚本

############################################################

参考资料:

http://www.cnblogs.com/flyfish2012/p/3779810.html

http://docs.autofac.org/en/latest/integration/webapi.html

http://www.cnblogs.com/gamehiboy/p/5176618.html

https://docs.microsoft.com/en-us/ef/core/index

http://docs.autofac.org/en/latest/integration/webapi.html

基于AspNet Core2.0(测试版) 开发框架,包含简单的个人博客Demo的更多相关文章

  1. 基于AspNet Core2.0 开发框架,包含简单的个人博客Demo

    大家好,最近离职了,利用闲暇时间就捣鼓了一个基于AspNet Core开发框架,分享出来希望能给AspNet Core学者带来一些帮助,同时也能跟大家一起学习.当然了,由于我的个人技术及经验的有限,框 ...

  2. Asp.Net Core 2.0 项目实战(2)NCMVC一个基于Net Core2.0搭建的角色权限管理开发框架

    Asp.Net Core 2.0 项目实战(1) NCMVC开源下载了 Asp.Net Core 2.0 项目实战(2)NCMVC一个基于Net Core2.0搭建的角色权限管理开发框架 Asp.Ne ...

  3. Centos7.2下Nginx配置SSL支持https访问(站点是基于.Net Core2.0开发的WebApi)

    准备工作 1.基于nginx部署好的站点(本文站点是基于.Net Core2.0开发的WebApi,有兴趣的同学可以跳http://www.cnblogs.com/GreedyL/p/7422796. ...

  4. 前端基于react,后端基于.net core2.0的开发之路(1) 介绍

    文章提纲目录 1.前端基于react,后端基于.net core2.0的开发之路(1) 介绍 2.前端基于react,后端基于.net core2.0的开发之路(2) 开发环境的配置,注意事项,后端数 ...

  5. 前端基于react,后端基于.net core2.0的开发之路(2) 开发环境的配置,注意事项,后端数据初始化

    前端环境配置 项目介绍文章:前端基于react,后端基于.net core2.0的开发之路(1) 介绍 1.VSCode安装 下载地址:https://code.visualstudio.com/Do ...

  6. 基于Microsoft Azure、ASP.NET Core和Docker的博客系统

    欢迎阅读daxnet的新博客:一个基于Microsoft Azure.ASP.NET Core和Docker的博客系统   2008年11月,我在博客园开通了个人帐号,并在博客园发表了自己的第一篇博客 ...

  7. 解决基于BAE python+bottle开发上的一系列问题 - artwebs - 博客频道 - CSDN.NET

    解决基于BAE python+bottle开发上的一系列问题 - artwebs - 博客频道 - CSDN.NET 解决基于BAE python+bottle开发上的一系列问题 分类: python ...

  8. Python爬虫简单实现CSDN博客文章标题列表

    Python爬虫简单实现CSDN博客文章标题列表 操作步骤: 分析接口,怎么获取数据? 模拟接口,尝试提取数据 封装接口函数,实现函数调用. 1.分析接口 打开Chrome浏览器,开启开发者工具(F1 ...

  9. CentOS 6.2编译安装Nginx1.2.0+MySQL5.5.25+PHP5.3.13+博客系统WordPress3.3.2

    说明: 操作系统:CentOS 6.2 32位 系统安装教程:CentOS 6.2安装(超级详细图解教程): http://www.osyunwei.com/archives/1537.html 准备 ...

随机推荐

  1. spring-session之四:Spring Session下的Redis存储结构

    spring-session项目启动后 127.0.0.1:6379> keys * 1) "spring:session:index:org.springframework.sess ...

  2. Codeforces 982C(dfs+思维)

    C. Cut 'em all! time limit per test 1 second memory limit per test 256 megabytes input standard inpu ...

  3. 第十章 Secret & Configmap (上)

    敏感信息,直接保存在容器镜像中显然不妥,比如用户名.密码等.K8s提供的解决方案是Secret. Secret会以密文的方式存储数据,避免了在配置文件中保存敏感信息.Secret会以Volume的形式 ...

  4. Code blocks调试教程

    特别声明:本教程已转移至百度经验:https://jingyan.baidu.com/article/6b182309939a87ba58e159bf.html 一.题外话 之前一直想用Code bl ...

  5. 从windows拷贝到linux的脚本报错:未找到命令 or 语法错误

    可能真的是命令拼错了或者参数有误,也可能是语法错误. 但是但是但是,如果之前脚本运行的好好的,没做任何改动或者仅仅改了一丁点儿. 那么脚本可能在格式上存在问题,解决方案: 安装dos2unix sud ...

  6. cocostudio使用plist创建序列帧动画图片名称序列错乱的问题

    cocostudio 版本v2.2.9 用texturePacker将动画帧打包成一个plist和一张png,将plist拖入cocostudio中的资源栏中. 如图所示,plist里面的图片顺序是乱 ...

  7. 华为OJ机试题目:两个大整数相乘(纯C语言实现两个大整数相乘,两种方法实现大数相乘)

    题目描述: 输出两个不超过100位的大整数的乘积. 输入: 输入两个大整数,如1234567 123 输出: 输出乘积,如:151851741 样例输入: 1234567 123 样例输出: 1518 ...

  8. SpringMVC关于json、xml自动转换的原理研究[附带源码分析](使用JAXB转换XML)

    前言 SpringMVC是目前主流的Web MVC框架之一. 如果有同学对它不熟悉,那么请参考它的入门blog:http://www.cnblogs.com/fangjian0423/p/spring ...

  9. 「小程序JAVA实战」小程序头像图片上传(上)(43)

    转自:https://idig8.com/2018/09/08/xiaochengxujavashizhanxiaochengxutouxiangtupianshangchuan40/ 在微信小程序中 ...

  10. 【原】使用puppeteer爬虫下载Midi文件

    The Beatles 乐队的 Midi文件下载地址 puppeteer官方github地址 midi文件爬取示例代码github地址 1.安装npm 参考:安装npm及cnpm(Windows) 修 ...