大家好,最近离职了,利用闲暇时间就捣鼓了一个基于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. GC之九--gc调优

    目标 满足应用的响应时间和吞吐量需求,尽量减少GC对应用的影响 原则 大部分时候都不需要调优GC,只需配置-Xms,-Xmx即可,JVM会自动进行调整 先满足响应时间需求,再满足吞吐量需求 FullG ...

  2. Resource interpreted as Document but transferred with MIME type application/json laravel异常请求返回警告

    一般情况下,laravel在方法里可以向前端返回数组格式 return [], 框架可以自动将数组转成JSON字符串返回,但浏览器会报MIME类型警告, 如是做APP接口可以忽视该警告: 但在前端aj ...

  3. 查看进程id

    #!/usr/bin/env python # encoding: utf-8  # Date: 2018/6/16 from multiprocessing import Processimport ...

  4. git之生成SSH key

    git之生成SSH key SSH 为 Secure Shell 的缩写,由 IETF 的网络小组(Network Working Group)所制定.利用 SSH 协议可以有效防止远程管理过程中的信 ...

  5. Vue2不使用Vuex如何实现兄弟组件间的通信

    在一些正规的大型项目的企业级开发过程中我们一般会引入Vuex来对Vue所有组件进行状态管理,可以轻松实现各组件间的通信.但是有时候做做自己的小项目,没有必要使用Vuex时,如何简单的实现组件间的通信? ...

  6. 使用json格式去call外部系统

    1. 使用postman去call post方式 body填入对应的json请求 格式选json 2. 使用java 代码去call import java.io.BufferedReader; im ...

  7. 产品负责人(Product Owner)的主要职责和技能

    角色介绍 产品负责人以下简称PO,他是有授权的产品领导力核心,组成Scrum团队三个角色之一. PO担任的是产品经理的角色. PO的主要职责 1.对产品的ROI负责. ROI = profitabil ...

  8. elasticsearch 安装 head插件

    head插件 切换到Elasticsearch的安装目录 cd ~/demo/elasticsearch/es1 执行安装命令 [root@localhost es1]# bin/plugin ins ...

  9. 返回一个可用的名称如1_4.txt

    );     MessageBox.Show(tt); }

  10. APP微信登录---第三方登录

    (一)引入maven配置 <dependency> <groupId>com.github.liyiorg</groupId> <artifactId> ...