本教程將介紹如何從頭開始以最小的依賴關係啓動ABP. 你通常希望以 啓動模板 開頭.
創建一個新項目
使用Visual Studio創建一個新的.Net Core Console應用程序:
安裝 Volo.Abp 包
Volo.Abp.Core是創建基於ABP的應用程序的核心nuget包. 所以,將它安裝到你的項目中:
Install-Package Volo.Abp.Core
創建第一個ABP模塊
ABP是一個模塊化框架, 它需要一個從AbpModule
類派生的 啓動(根)模塊 類:
using Microsoft.Extensions.DependencyInjection;
using Volo.Abp.Modularity;
namespace AbpConsoleDemo
{
public class AppModule : AbpModule
{
}
}
AppModule
是應用程序啓動模塊的好名稱.
初始化應用程序
下一步是使用上面創建的啓動模塊引導應用程序:
using System;
using Volo.Abp;
namespace AbpConsoleDemo
{
class Program
{
static void Main(string[] args)
{
using (var application = AbpApplicationFactory.Create<AppModule>())
{
application.Initialize();
Console.WriteLine("Press ENTER to stop application...");
Console.ReadLine();
}
}
}
}
AbpApplicationFactory
用於創建應用程序並加載所有以AppModule
作爲啓動模塊的模塊. Initialize()
方法啓動應用程序.
Hello World!
上面的應用程序什麼都不做, 讓我們創建一個服務做一些事情:
using System;
using Volo.Abp.DependencyInjection;
namespace AbpConsoleDemo
{
public class HelloWorldService : ITransientDependency
{
public void SayHello()
{
Console.WriteLine("Hello World!");
}
}
}
ITransientDependency
是ABP的一個特殊接口, 它自動將服務註冊爲Transient(參見依賴注入文檔).
現在,我們可以解析HelloWorldService
並調用SayHello
. 更改Program.cs, 如下所示:
using System;
using Microsoft.Extensions.DependencyInjection;
using Volo.Abp;
namespace AbpConsoleDemo
{
class Program
{
static void Main(string[] args)
{
using (var application = AbpApplicationFactory.Create<AppModule>())
{
application.Initialize();
// 解析服務並使用它
var helloWorldService =
application.ServiceProvider.GetService<HelloWorldService>();
helloWorldService.SayHello();
Console.WriteLine("Press ENTER to stop application...");
Console.ReadLine();
}
}
}
}
這對於這個簡單的代碼示例已足夠, 如果是直接從IServiceProvider
解析建議創建Scoped依賴.(參見依賴注入文檔).