Skip to content

Latest commit

 

History

History
312 lines (175 loc) · 14.6 KB

getting-started-running-solution.md

File metadata and controls

312 lines (175 loc) · 14.6 KB

Getting Started

//[doc-params]
{
    "UI": ["MVC", "Blazor", "BlazorServer", "NG", "MAUIBlazor"],
    "DB": ["EF", "Mongo"],
    "Tiered": ["Yes", "No"]
}

This tutorial assumes that you've already purchased an ABP Commercial license and have an active ABP Commercial account.

This document assumes that you prefer to use {{ UI_Value }} as the UI framework and {{ DB_Value }} as the database provider. For other options, please change the preference on top of this document.

Create the Database

Connection String

Check the connection string in the appsettings.json file under the {{if Tiered == "Yes"}}.AuthServer and .HttpApi.Host projects{{else}}{{if UI=="MVC"}}.Web project{{else if UI=="BlazorServer"}}.Blazor project{{else}}.HttpApi.Host project{{end}}{{end}}.

{{ if DB == "EF" }}

"ConnectionStrings": {
  "Default": "Server=(LocalDb)\\MSSQLLocalDB;Database=BookStore;Trusted_Connection=True"
}

About the Connection Strings and Database Management Systems

The solution is configured to use Entity Framework Core with MS SQL Server by default. However, if you've selected another DBMS using the -dbms parameter on the ABP CLI new command (like -dbms MySQL), the connection string might be different for you.

EF Core supports various database providers and you can use any supported DBMS. See the Entity Framework integration document to learn how to switch to another DBMS if you need later.

Database Migrations

The solution uses the Entity Framework Core Code First Migrations. It comes with a .DbMigrator console application which applies the migrations and also seeds the initial data. It is useful on development as well as on production environment.

.DbMigrator project has its own appsettings.json. So, if you have changed the connection string above, you should also change this one.

The Initial Migration

.DbMigrator application automatically creates the Initial migration on first run.

If you are using Visual Studio, you can skip to the Running the DbMigrator section. However, other IDEs (e.g. Rider) may have problems for the first run since it adds the initial migration and compiles the project. In this case, open a command line terminal in the folder of the .DbMigrator project and run the following command:

dotnet run

For the next time, you can just run it in your IDE as you normally do.

Running the DbMigrator

Right click to the .DbMigrator project and select Set as StartUp Project

set-as-startup-project

Hit F5 (or Ctrl+F5) to run the application. It will have an output like shown below:

db-migrator-output

Initial seed data creates the admin user in the database (with the password is 1q2w3E*) which is then used to login to the application. So, you need to use .DbMigrator at least once for a new database.

{{ else if DB == "Mongo" }}

"ConnectionStrings": {
  "Default": "mongodb://localhost:27017/BookStore"
}

The solution is configured to use MongoDB in your local computer, so you need to have a MongoDB server instance up and running or change the connection string to another MongoDB server.

Seed initial data

The solution comes with a .DbMigrator console application which seeds the initial data. It is useful on development as well as on production environment.

.DbMigrator project has its own appsettings.json. So, if you have changed the connection string above, you should also change this one.

Right click to the .DbMigrator project and select Set as StartUp Project

set-as-startup-project

Hit F5 (or Ctrl+F5) to run the application. It will have an output like shown below:

db-migrator-output

Initial seed data creates the admin user in the database (with the password is 1q2w3E*) which is then used to login to the application. So, you need to use .DbMigrator at least once for a new database.

{{ end }}

Before Running the Application

Installing the Client-Side Packages

ABP CLI runs the abp install-libs command behind the scenes to install the required NPM packages for your solution while creating the application. So, if you have created the application via ABP CLI or ABP Suite, you don't need to run this command manually.

However, sometimes this command might need to be manually run. For example, you need to run this command, if you have cloned the application, or the resources from node_modules folder didn't copy to wwwroot/libs folder, or if you have added a new client-side package dependency to your solution.

For such cases, run the abp install-libs command on the root directory of your solution to install all required NPM packages:

abp install-libs

We suggest you install Yarn to prevent possible package inconsistencies, if you haven't installed it yet.

{{if UI=="Blazor" || UI=="BlazorServer"}}

Bundling and Minification

abp bundle command offers bundling and minification support for client-side resources (JavaScript and CSS files) for Blazor projects. This command automatically run when you create a new solution with the ABP CLI.

However, sometimes you might need to run this command manually. To update script & style references without worrying about dependencies, ordering, etc. in a project, you can run this command in the directory of your blazor application:

abp bundle

For more details about managing style and script references in Blazor or MAUI Blazor apps, see Managing Global Scripts & Styles.

{{end}}

Run the application

{{ if UI == "MVC" || UI == "BlazorServer" }}

Note: When you create an ABP solution, the client-side packages are being restored by ABP CLI and Suite. But if you fetch the source-code that's commited by another team member, your libs folder will be empty. Before starting the application, run abp install-libs command in your Web directory to restore the client-side libraries. This will populate the libs folder.

{{ if Tiered == "Yes" }}

Tiered solutions use Redis as the distributed cache. Ensure that it is installed and running in your local computer. If you are using a remote Redis Server, set the configuration in the appsettings.json files of the projects below.

  1. Ensure that the .AuthServer project is the startup project. Run this application that will open a login page in your browser.

Use Ctrl+F5 in Visual Studio (instead of F5) to run the application without debugging. If you don't have a debug purpose, this will be faster.

You can login, but you cannot enter to the main application here. This is just the authentication server.

  1. Ensure that the .HttpApi.Host project is the startup project and run the application which will open a Swagger UI in your browser.

swagger-ui

This is the HTTP API that is used by the web application.

  1. Lastly, ensure that the {{if UI=="MVC"}}.Web{{else}}.Blazor{{end}} project is the startup project and run the application which will open a welcome page in your browser

mvc-tiered-app-home

Click to the login button which will redirect you to the authentication server to login to the application:

bookstore-login

{{ else # Tiered != "Yes" }}

Ensure that the {{if UI=="MVC"}}.Web{{else}}.Blazor{{end}} project is the startup project. Run the application which will open the login page in your browser:

Use Ctrl+F5 in Visual Studio (instead of F5) to run the application without debugging. If you don't have a debug purpose, this will be faster.

bookstore-login

{{ end # Tiered }}

{{ else # UI != "MVC" || BlazorServer }}

Running the HTTP API Host (Server Side)

{{ if Tiered == "Yes" }}

Tiered solutions use Redis as the distributed cache. Ensure that it is installed and running in your local computer. If you are using a remote Redis Server, set the configuration in the appsettings.json files of the projects below.

Ensure that the .AuthServer project is the startup project. Run the application which will open a login page in your browser.

Use Ctrl+F5 in Visual Studio (instead of F5) to run the application without debugging. If you don't have a debug purpose, this will be faster.

You can login, but you cannot enter to the main application here. This is just the authentication server.

Ensure that the .HttpApi.Host project is the startup project and run the application which will open a Swagger UI:

{{ else # Tiered == "No" }}

Ensure that the .HttpApi.Host project is the startup project and run the application which will open a Swagger UI:

Use Ctrl+F5 in Visual Studio (instead of F5) to run the application without debugging. If you don't have a debug purpose, this will be faster.

{{ end # Tiered }}

swagger-ui

You can see the application APIs and test them here. Get more info about the Swagger UI.

Authorization for the Swagger UI

Most of the HTTP APIs require authentication & authorization. If you want to test authorized APIs, manually go to the /Account/Login page, enter admin as the username and 1q2w3E* as the password to login to the application. Then you will be able to execute authorized APIs too.

{{ end # UI }}

{{ if UI == "Blazor" }}

Running the Blazor Application (Client Side)

Ensure that the .Blazor project is the startup project and run the application.

Use Ctrl+F5 in Visual Studio (instead of F5) to run the application without debugging. If you don't have a debug purpose, this will be faster.

Once the application starts, click to the Login link on to header, which redirects you to the authentication server to enter a username and password:

bookstore-login

{{ else if UI == "NG" }}

Running the Angular Application (Client Side)

Go to the angular folder, open a command line terminal, type the yarn command (we suggest to the yarn package manager while npm install will also work)

yarn

Once all node modules are loaded, execute yarn start (or npm start) command:

yarn start

It may take a longer time for the first build. Once it finishes, it opens the Angular UI in your default browser with the localhost:4200 address.

bookstore-login

{{ else if UI == "MAUIBlazor" }}

Running the MAUI Blazor Application (Client Side)

Ensure that the .MauiBlazor project is the startup project.

Use Ctrl+F5 in Visual Studio (instead of F5) to run the application without debugging. If you don't have a debug purpose, this will be faster.

MAUI supports multiple platforms:

Windows

Ensure that the target is Windows Machine and run the application.

Android

Ensure that the target is Android Emulators.

Android emulator is isolated from your development machine network interfaces, you need to configure the network:

ADB

Open a command line terminal and run the adb reverse command to expose a port on your Android device to a port on your computer. For example:

adb reverse tcp:44305 tcp:44305

You should replace "44305" with the real port. You should run the command after starting the emulator. You will find that the user avatar cannot be loaded, this is due to the use of insecure https, you can use Ngrok.

Ngrok

You can use the ngrok to reverse proxy your localhost servies. For example:

ngrok http 44305

  • You should replace "44305" with the real port.
  • You should replace Authority with the Ngrok URL.

IOS

Ensure that the target is IOS Emulators.

The iOS simulator uses the host machine network. Therefore, applications running in the simulator can connect to web services running on your local machine via the machines IP address or via the localhost hostname. For example, given a local secure web service that exposes a GET operation via the /api/todoitems/ relative URI, an application running on the iOS simulator can consume the operation by sending a GET request to https://localhost:/api/todoitems/.

If the simulator is used from Windows with a remote connection, follow the Microsoft's documentation to setup a proper configuration.

Remote iOS Simulator for Windows

If you are run the MAUI on Mac agent, the remote iOS Simulator can't access backend application running on Windows, you need to run the backend application on Mac or make the backend application on the internal.

Secure Storage

The MAUI Blazor application uses Preferences to store access token by default, safe practice is to use Secure Storage, it requires some extra steps for different platforms.

You can check the Secure Storage documentation

Got could not find any available provisioning profiles for on ios error!

You need some extra steps, please check the Microsoft's documentation

After you run the project, you can click the login button to the login UI.

bookstore-login

{{ end }}

Enter admin as the username and 1q2w3E* as the password to login to the application.

{{ if UI == "Blazor" }} bookstore-home {{else}} bookstore-home {{end}}

The application is up and running. You can start developing your application based on this startup template.

Next

Web Application development tutorial