mirror of https://github.com/abpframework/abp
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
182 lines
5.0 KiB
182 lines
5.0 KiB
# Začínáme s konzolovou aplikací
|
|
|
|
Tento tutoriál vysvětluje jak začít s ABP z ničeho s minimem závislostí. Obvykle chcete začít se **[startovací šablonou](https://abp.io/Templates)**.
|
|
|
|
## Tvorba nového projektu
|
|
|
|
Vytvořte regulérní .NET Core konzolovou aplikaci z Visual Studio:
|
|
|
|
![](images/create-new-net-core-console-application.png)
|
|
|
|
## Instalace Volo.Abp balíku
|
|
|
|
Volo.Abp.Core je základní NuGet balík k tvorbě aplikací založených na ABP. Takže ho nainstalujeme do projektu:
|
|
|
|
````
|
|
Install-Package Volo.Abp.Core
|
|
````
|
|
|
|
## Tvorba prvního ABP modulu
|
|
|
|
ABP je modulární framework a proto vyžaduje **spouštěcí (kořenový) modul** což je třída dědící z ``AbpModule``:
|
|
|
|
````C#
|
|
using Microsoft.Extensions.DependencyInjection;
|
|
using Volo.Abp.Modularity;
|
|
|
|
namespace AbpConsoleDemo
|
|
{
|
|
public class AppModule : AbpModule
|
|
{
|
|
|
|
}
|
|
}
|
|
````
|
|
|
|
``AppModule`` je dobrý název pro spouštěcí modul aplikace.
|
|
|
|
## Inicializace aplikace
|
|
|
|
Dalším krokem je bootstrap aplikace pomocí spouštěcího modulu vytvořeného výše:
|
|
|
|
````C#
|
|
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`` se používá k vytvoření aplikace a načtení všech modulů, s využitím ``AppModule`` jako spouštěcím modulem. ``Initialize()`` metoda spouští aplikaci.
|
|
|
|
## Ahoj světe!
|
|
|
|
Aplikace výše zatím nic nedělá. Pojďme proto vytvořit službu která už něco dělá:
|
|
|
|
````C#
|
|
using System;
|
|
using Volo.Abp.DependencyInjection;
|
|
|
|
namespace AbpConsoleDemo
|
|
{
|
|
public class HelloWorldService : ITransientDependency
|
|
{
|
|
public void SayHello()
|
|
{
|
|
Console.WriteLine("Hello World!");
|
|
}
|
|
}
|
|
}
|
|
|
|
````
|
|
|
|
``ITransientDependency`` je speciální rozhraní ABP, které automaticky registruje službu jako přechodnou (více v [dokumentu vkládání závislostí](Dependency-Injection.md)).
|
|
|
|
Nyní můžeme vyřešit ``HelloWorldService`` a vypsat naše ahoj. Změníme Program.cs podle vyobrazení níže:
|
|
|
|
````C#
|
|
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();
|
|
|
|
// Vyřeší službu a použije ji
|
|
var helloWorldService =
|
|
application.ServiceProvider.GetService<HelloWorldService>();
|
|
helloWorldService.SayHello();
|
|
|
|
Console.WriteLine("Press ENTER to stop application...");
|
|
Console.ReadLine();
|
|
}
|
|
}
|
|
}
|
|
}
|
|
````
|
|
|
|
I když je to dostačující pro tento jednoduchý príklad kódu, je vždy lepší v případě přímého řešení závislostí z ``IServiceProvider`` vytvořit rámce (více v [dokumentu vkládání závislostí](Dependency-Injection.md)).
|
|
|
|
## Využití Autofac jako frameworku pro vkládání závislostí
|
|
|
|
Ačkoliv je AspNet Core systém pro vkládání závíslostí (DI) skvělý pro základní požadavky, Autofac poskytuje pokročilé funkce jako injekce vlastností nebo záchyt metod, které jsou v ABP užity k provádění pokročilých funkcí frameworku.
|
|
|
|
Nahrazení AspNet Core DI systému za Autofac a integrace s ABP je snadná.
|
|
|
|
1. Nainstalujeme [Volo.Abp.Autofac](https://www.nuget.org/packages/Volo.Abp.Autofac) balík
|
|
|
|
```
|
|
Install-Package Volo.Abp.Autofac
|
|
```
|
|
|
|
1. Přidáme ``AbpAutofacModule`` závislost
|
|
|
|
```c#
|
|
[DependsOn(typeof(AbpAutofacModule))] // Přidá závislost na AbpAutofacModule
|
|
public class AppModule : AbpModule
|
|
{
|
|
|
|
}
|
|
```
|
|
|
|
1. Změníme soubor ``Program.cs`` podle vyobrazení níže:
|
|
|
|
```c#
|
|
using System;
|
|
using Microsoft.Extensions.DependencyInjection;
|
|
using Volo.Abp;
|
|
|
|
namespace AbpConsoleDemo
|
|
{
|
|
class Program
|
|
{
|
|
static void Main(string[] args)
|
|
{
|
|
using (var application = AbpApplicationFactory.Create<AppModule>(options =>
|
|
{
|
|
options.UseAutofac(); // Autofac integrace
|
|
}))
|
|
{
|
|
application.Initialize();
|
|
|
|
// Vyřeší službu a použije ji
|
|
var helloWorldService =
|
|
application.ServiceProvider.GetService<HelloWorldService>();
|
|
helloWorldService.SayHello();
|
|
|
|
Console.WriteLine("Press ENTER to stop application...");
|
|
Console.ReadLine();
|
|
}
|
|
}
|
|
}
|
|
}
|
|
```
|
|
|
|
Stačí volat metodu `options.UseAutofac()` v možnostech `AbpApplicationFactory.Create`.
|
|
|
|
## Zdrojový kód
|
|
|
|
Získejte zdrojový kód vzorového projektu vytvořeného v tomto tutoriálů [z tohoto odkazu](https://github.com/abpframework/abp-samples/tree/master/BasicConsoleApplication).
|