From 601865fde79055fbe64ad04b4d4cec07c0e59345 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Halil=20=C4=B0brahim=20Kalkan?= Date: Sun, 8 Oct 2017 19:08:12 +0300 Subject: [PATCH] Created first document. --- README.md | 6 +- docs/Getting-Started-Console-Application.md | 120 ++++++++++++++++++ docs/Index.md | 9 ++ ...reate-new-net-core-console-application.png | Bin 0 -> 36231 bytes 4 files changed, 134 insertions(+), 1 deletion(-) create mode 100644 docs/Getting-Started-Console-Application.md create mode 100644 docs/Index.md create mode 100644 docs/images/create-new-net-core-console-application.png diff --git a/README.md b/README.md index d1be2e432b..9198e75a29 100644 --- a/README.md +++ b/README.md @@ -1 +1,5 @@ -# abp EDGE +# ABP + +ABP is a modern application development framework based on cross platform .Net Core framework. + +See documentation. diff --git a/docs/Getting-Started-Console-Application.md b/docs/Getting-Started-Console-Application.md new file mode 100644 index 0000000000..00d0e8961e --- /dev/null +++ b/docs/Getting-Started-Console-Application.md @@ -0,0 +1,120 @@ +## Getting Started ABP With Console Application + +### Create A New Project + +Create a new Regular .Net Core Console Application from Visual Studio: + +![](images/create-new-net-core-console-application.png) + +### Install Volo.Abp Package + +Volo.Abp is the core nuget package to create ABP based applications. So, install it to your project: + +```` +Install-Package Volo.Abp +```` + +### Create First ABP Module + +ABP is a modular framework and it requires a **root module** class derived from ``AbpModule``: + +````C# +using Microsoft.Extensions.DependencyInjection; +using Volo.Abp.Modularity; + +namespace AbpConsoleDemo +{ + public class AppModule : AbpModule + { + public override void ConfigureServices(IServiceCollection services) + { + services.AddAssemblyOf(); + } + } +} +```` + +``AppModule`` is a good name for the root module for a console application. A module class can register services to Dependency Injection by overriding ``ConfigureServices`` method as shown here. ``AddAssemblyOf<...>`` is a special extension method of ABP that registers all services in an assembly by convention (TODO: link to DI document). While this is optional, a module generally registers some of it's services. + +### Initialize The Application + +The next step is to bootstrap the application using the module created above: + +````C# +using System; +using Volo.Abp; + +namespace AbpConsoleDemo +{ + class Program + { + static void Main(string[] args) + { + using (var application = AbpApplicationFactory.Create()) + { + application.Initialize(); + + Console.WriteLine("Press ENTER to stop application..."); + Console.ReadLine(); + } + } + } +} + +```` + +``AbpApplicationFactory`` is used to create the application and load all modules taking ``AppModule`` as the root (starting) module. ``Initialize()`` method starts the application. + +### Hellow World! + +The application above does nothing. Let's create a service that writes "Hello World!" to the console: + +````C# +using System; +using Volo.Abp.DependencyInjection; + +namespace AbpConsoleDemo +{ + public class HelloWorldService : ITransientDependency + { + public void SayHello() + { + Console.WriteLine("Hello World!"); + } + } +} + +```` + +``ITransientDependency`` is a special interface of ABP that automatically registers the service as transient (TODO: link to MS DI documentation and ABP DI documentation). + +Now, we can resolve the ``HelloWorldService`` and say hello. Change the Program.cs as shown below: + +````C# +using System; +using Microsoft.Extensions.DependencyInjection; +using Volo.Abp; + +namespace AbpConsoleDemo +{ + class Program + { + static void Main(string[] args) + { + using (var application = AbpApplicationFactory.Create()) + { + application.Initialize(); + + //Resolve a service and use it + var helloWorldService = application.ServiceProvider.GetService(); + helloWorldService.SayHello(); + + Console.WriteLine("Press ENTER to stop application..."); + Console.ReadLine(); + } + } + } +} +```` + +While it's enough for this simple code example, it's always suggested to create scopes in case of directly resolving dependencies from ``IServiceProvider`` (TODO: see DI documentation). \ No newline at end of file diff --git a/docs/Index.md b/docs/Index.md new file mode 100644 index 0000000000..ae05d01d9c --- /dev/null +++ b/docs/Index.md @@ -0,0 +1,9 @@ +# ABP Documentation + +## Table of Contents + +### Overall + +* Getting Started + * With Console Application + * With ASP.NET Core Web Application \ No newline at end of file diff --git a/docs/images/create-new-net-core-console-application.png b/docs/images/create-new-net-core-console-application.png new file mode 100644 index 0000000000000000000000000000000000000000..c5f39bfb37bb9196ba311b6cbfe3f9b6ae423d48 GIT binary patch literal 36231 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