入門系列-在控制檯應用中使用ABP

本教程將介紹如何從頭開始以最小的依賴關係啓動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依賴.(參見依賴注入文檔).

發佈了84 篇原創文章 · 獲贊 63 · 訪問量 51萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章