依赖注入 (Dependency injection,DI) 是一种实现对象及其合作者或依赖项之间松散耦合的技术。将用来执行操作 (Action) 的对象以某种方式提供给该类,而不是直接实例化合作者或使用静态引用。通常,Class 会通过它们的构造函数声明其依赖关系,允许它们遵循 显示依赖原则 (Explicit Dependencies Principle) ,这种方法被称为 “构造函数注入(constructor injection)”。

Class 的设计中使用 DI 思想会使它们的依赖关系变得更加耦合,因为它们没有对它们的合作者直接硬编码的依赖,他们遵循 依赖倒置原则(Dependency Inversion Principle)中 “高层模块不应该依赖于低层模块,两者都应该依赖于抽象。”的设计思路, 要求 Class 在它们构造时向其提供抽象(通常是 interfaces ),而不是直接引用特定的实现。提取接口的依赖关系和提供这些接口的实现作为参数也是 策略设计模式(Strategy design pattern) 的一个示例。

依赖注入原理

// 约定一个抽象接口
public interface IRepository
{
    string GetInfo();
}

// 使用EF实现接口
public class EFRepository : IRepository
{
    public string GetInfo()
    {
        return "load data form ef!";
    }
}

// 使用Dapper实现接口
public class DapperRepository : IRepository
{
    public string GetInfo()
    {
        return "load data form dapper!";
    }
}

// 在用来执行操作的 Service 的构造函数中提供抽象接口
public class OperationService
{
    private readonly IRepository _repository;
    public OperationService(IRepository repository)
    {
        _repository = repository;
    }

    public string GetList()
    {
        return _repository.GetInfo();
    }
}   

通过以上代码可以看出,Service 与 Repository 之间没有强依赖关系,而是都与抽象接口 IRepository 建立关系。

早对 .NET Core 有耳闻,最近才有时间学习和接触,而 ASP.NET Core 作为 .NET Core 中的一部分,可以在 Windows、Mac 和 Linux 上开发和运行可跨平台的 Web 应用程序。ASP.NET Core 是对 ASP.NET 的一次意义重大的重构,由于架构上的改变,它不再基于 System.Web.dll ,它成为了一个更精简并却模块化的,可运行于 .NET Core 和完整的 .NET Framework 之上的框架。

微软官方的快速上手教程:Get started with .NET in 10 minutes ,其中包含 .NET Core SDK 的下载地址。

安装完成后,可通过命令提示符查看版本和帮助

// 查看版本
dotnet --version

// 查看帮助
dotnet --help

// 查看初始化项目帮助和框架中包含的模板包
dotnet new --help

如果使用 Visual Studio 2017.3 预览及以上版本,可以快速体验开发环境的搭建。

安装vue simple手脚架,并初始化项目

针对vue组件的开发,我通常使用webpack作为前段资源的加载/打包工具。为了达到快速开发的目的,vue官方也制作了针对webpack的手脚架,我们只需要对手脚架的稍微改动就能完成开发组件前的准备工作。

//安装vue手脚架
npm install -g vue-cli

//使用手脚架初始化一个简单的vue项目
vue init webpack-simple vue-test

//初始化项目
cd vue-test
npm i

//运行查看项目
npm run dev