mirror of https://github.com/abpframework/abp
Merge pull request #1 from abpframework/master
commit
642c2c4a33
@ -1,50 +0,0 @@
|
||||
# COMMON PATHS
|
||||
|
||||
$buildFolder = (Get-Item -Path "./" -Verbose).FullName
|
||||
$slnFolder = Join-Path $buildFolder "../"
|
||||
$outputFolder = Join-Path $buildFolder "outputs"
|
||||
$abpDeskFolder = Join-Path $slnFolder "src/AbpDesk"
|
||||
$abpDeskWebFolder = Join-Path $abpDeskFolder "AbpDesk.Web.Mvc"
|
||||
|
||||
## CLEAR ######################################################################
|
||||
|
||||
Remove-Item $outputFolder -Force -Recurse
|
||||
New-Item -Path $outputFolder -ItemType Directory
|
||||
|
||||
## RESTORE NUGET PACKAGES #####################################################
|
||||
|
||||
Set-Location $slnFolder
|
||||
dotnet restore
|
||||
|
||||
## PUBLISH ASPDESK WEB ########################################################
|
||||
|
||||
Set-Location $abpDeskWebFolder
|
||||
dotnet publish --output (Join-Path $outputFolder "AbpDesk/Web")
|
||||
|
||||
New-Item -Path (Join-Path $outputFolder "AbpDesk/Web/PlugIns") -ItemType Directory
|
||||
Copy-Item (Join-Path $abpDeskFolder "Web_PlugIns/*") (Join-Path $outputFolder "AbpDesk/Web/PlugIns/")
|
||||
|
||||
## PUBLISH IDENTITY HTTP API HOST #############################################
|
||||
|
||||
Set-Location (Join-Path $slnFolder "src/Volo.Abp.Identity.HttpApi.Host")
|
||||
dotnet publish --output (Join-Path $outputFolder "AbpIdentity/HttpApiHost")
|
||||
|
||||
## CREATE DOCKER IMAGES #######################################################
|
||||
|
||||
Set-Location (Join-Path $outputFolder "AbpDesk/Web")
|
||||
|
||||
docker rmi abpdesk/web -f
|
||||
docker build -t abpdesk/web .
|
||||
|
||||
Set-Location (Join-Path $outputFolder "AbpIdentity/HttpApiHost")
|
||||
|
||||
docker rmi abpidentity/httpapihost -f
|
||||
docker build -t abpidentity/httpapihost .
|
||||
|
||||
## DOCKER COMPOSE FILES #######################################################
|
||||
|
||||
Copy-Item (Join-Path $slnFolder "docker/*.*") $outputFolder
|
||||
|
||||
## FINALIZE ###################################################################
|
||||
|
||||
Set-Location $outputFolder
|
||||
@ -1,28 +0,0 @@
|
||||
version: '2'
|
||||
|
||||
services:
|
||||
|
||||
mongodb:
|
||||
image: tutum/mongodb
|
||||
environment:
|
||||
- AUTH=no
|
||||
ports:
|
||||
- "27017:27017"
|
||||
- "28017:28017"
|
||||
|
||||
abpidentity_httpapihost:
|
||||
image: abpidentity/httpapihost
|
||||
environment:
|
||||
- ASPNETCORE_ENVIRONMENT=Staging
|
||||
|
||||
abpdesk_web:
|
||||
image: abpdesk/web
|
||||
environment:
|
||||
- ASPNETCORE_ENVIRONMENT=Staging
|
||||
|
||||
load_balancer:
|
||||
image: haproxy:1.7.1
|
||||
volumes:
|
||||
- "./haproxy.cfg:/usr/local/etc/haproxy/haproxy.cfg"
|
||||
ports:
|
||||
- "9005:8080"
|
||||
@ -1 +0,0 @@
|
||||
docker-compose down -v --rmi local
|
||||
@ -1,18 +0,0 @@
|
||||
global
|
||||
maxconn 4096
|
||||
|
||||
defaults
|
||||
mode http
|
||||
timeout connect 5s
|
||||
timeout client 50s
|
||||
timeout server 50s
|
||||
|
||||
listen http-in
|
||||
bind *:8080
|
||||
|
||||
server web-1 outputs_abpdesk_web_1:80
|
||||
server web-2 outputs_abpdesk_web_2:80
|
||||
|
||||
stats enable
|
||||
stats uri /haproxy
|
||||
stats refresh 1s
|
||||
@ -1,8 +0,0 @@
|
||||
docker rm $(docker ps -aq)
|
||||
docker-compose up -d mongodb
|
||||
docker-compose up -d abpidentity_httpapihost
|
||||
docker-compose up -d abpdesk_web
|
||||
sleep 2
|
||||
docker-compose scale abpdesk_web=2
|
||||
sleep 2
|
||||
docker-compose up -d load_balancer
|
||||
@ -0,0 +1,54 @@
|
||||
# Microservice Demo, Projects Status and Road Map
|
||||
|
||||
After [the first announcement](https://abp.io/blog/abp/Abp-vNext-Announcement) on the ABP vNext, we have a lot of improvements on the codebase (1100+ commits on the [GitHub repository](https://github.com/abpframework/abp)). We've created features, samples, documentation and much more. In this post, I want to inform you about some news and the status of the project.
|
||||
|
||||
## Microservice Demo Solution
|
||||
|
||||
One of the major goals of the ABP framework is to provide a [convenient infrastructure to create microservice solutions](https://abp.io/documents/abp/latest/Microservice-Architecture).
|
||||
|
||||
We've been working to develop a microservice solution demo. Initial version was completed and [documented](https://abp.io/documents/abp/latest/Samples/Microservice-Demo). This sample solution aims to demonstrate a simple yet complete microservice solution;
|
||||
|
||||
- Has multiple, independent, self-deployable **microservices**.
|
||||
- Multiple **web applications**, each uses a different API gateway.
|
||||
- Has multiple **gateways** / BFFs (Backend for Frontends) developed using the [Ocelot](https://github.com/ThreeMammals/Ocelot) library.
|
||||
- Has an **authentication service** developed using the [IdentityServer](https://identityserver.io/) framework. It's also a SSO (Single Sign On) application with necessary UIs.
|
||||
- Has **multiple databases**. Some microservices has their own database while some services/applications shares a database (to demonstrate different use cases).
|
||||
- Has different types of databases: **SQL Server** (with **Entity Framework Core** ORM) and **MongoDB**.
|
||||
- Has a **console application** to show the simplest way of using a service by authenticating.
|
||||
- Uses [Redis](https://redis.io/) for **distributed caching**.
|
||||
- Uses [RabbitMQ](https://www.rabbitmq.com/) for service-to-service **messaging**.
|
||||
- Uses [Docker](https://www.docker.com/) & [Kubernates](https://kubernetes.io/) to **deploy** & run all services and applications.
|
||||
- Uses [Elasticsearch](https://www.elastic.co/products/elasticsearch) & [Kibana](https://www.elastic.co/products/kibana) to store and visualize the logs (written using [Serilog](https://serilog.net/)).
|
||||
|
||||
See [its documentation](https://abp.io/documents/abp/latest/Samples/Microservice-Demo) for a detailed explanation of the solution.
|
||||
|
||||
## Improvements/Features
|
||||
|
||||
We've worked on so many features including **distributed event bus** (with RabbitMQ integration), **IdentityServer4 integration** and enhancements for almost all features. We are continuously refactoring and adding tests to make the framework more stable and production ready. It is [rapidly growing](https://github.com/abpframework/abp/graphs/contributors).
|
||||
|
||||
## Road Map
|
||||
|
||||
There are still too much work to be done before the first stable release (v1.0). You can see [prioritized backlog items](https://github.com/abpframework/abp/issues?q=is%3Aopen+is%3Aissue+milestone%3ABacklog) on the GitHub repo.
|
||||
|
||||
According to our estimation, we have planned to release v1.0 in Q2 of 2019 (probably in May or June). So, not too much time to wait. We are also very excited for the first stable release.
|
||||
|
||||
We will also work on [the documentation](https://abp.io/documents/abp/latest) since it is far from complete now.
|
||||
|
||||
First release may not include a SPA template. However, we want to prepare a simple one if it can be possible. Haven't decided yet about the SPA framework. Alternatives: **Angular, React and Blazor**. Please write your thought as a comment to this post.
|
||||
|
||||
## Chinese Web Site
|
||||
|
||||
There is a big ABP community in China. They have created a Chinese version of the abp.io web site: https://cn.abp.io/ They are keeping it up to date. Thanks to the Chinese developers and especially to [Liming Ma](https://github.com/maliming).
|
||||
|
||||
## NDC {London} 2019
|
||||
|
||||
It was a pleasure to be in [NDC {London}](https://ndc-london.com/) 2019 as a partner. We've talked to many developers about the current ASP.NET Boilerplate and the ABP vNext and we got good feedbacks.
|
||||
|
||||
We also had a chance to talk with [Scott Hanselman](https://twitter.com/shanselman) and [Jon Galloway](https://twitter.com/jongalloway). They visited our booth and we talked about the ideas for ABP vNext. They liked features, approaches and the goal of new ABP framework. See some photos and comments on twitter:
|
||||
|
||||

|
||||
|
||||
## Follow It
|
||||
|
||||
* You can star and follow the **GitHub** repository: https://github.com/abpframework/abp
|
||||
* You can follow the official **Twitter** account for news: https://twitter.com/abpframework
|
||||
|
After Width: | Height: | Size: 477 KiB |
|
After Width: | Height: | Size: 154 KiB |
@ -1,14 +1,17 @@
|
||||
@using Volo.Abp.AspNetCore.Mvc.UI.MultiTenancy.Components.TenantSwitch
|
||||
@model TenantSwitchViewComponent.TenantSwitchViewModel
|
||||
<li class="nav-item">
|
||||
<a abp-button="Link" id="TenantSwitchToolbarLink" href="#">
|
||||
@if (Model.Tenant == null)
|
||||
{
|
||||
<text>@@host</text>
|
||||
}
|
||||
else
|
||||
{
|
||||
<text>@@@Model.Tenant.Name</text>
|
||||
}
|
||||
</a>
|
||||
</li>
|
||||
@if (!Model.CurrentUser.IsAuthenticated)
|
||||
{
|
||||
<li class="nav-item">
|
||||
<a abp-button="Link" id="TenantSwitchToolbarLink" href="#">
|
||||
@if (Model.Tenant == null)
|
||||
{
|
||||
<text>@@host</text>
|
||||
}
|
||||
else
|
||||
{
|
||||
<text>@@@Model.Tenant.Name</text>
|
||||
}
|
||||
</a>
|
||||
</li>
|
||||
}
|
||||
@ -0,0 +1,36 @@
|
||||
@using Volo.Abp.UI.Navigation
|
||||
@model ApplicationMenuItem
|
||||
@{
|
||||
var elementId = string.IsNullOrEmpty(Model.ElementId) ? string.Empty : $"id=\"{Model.ElementId}\"";
|
||||
var cssClass = string.IsNullOrEmpty(Model.CssClass) ? string.Empty : Model.CssClass;
|
||||
var disabled = Model.IsDisabled ? "disabled" : string.Empty;
|
||||
}
|
||||
@if (Model.IsLeaf)
|
||||
{
|
||||
@if (Model.Url != null)
|
||||
{
|
||||
<a class="dropdown-item @cssClass @disabled" href="@(Model.Url ?? "#")" @Html.Raw(elementId)>
|
||||
@Model.DisplayName
|
||||
</a>
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
<div class="dropdown-submenu">
|
||||
<a role="button" class="btn dropdown-toggle" data-toggle="dropdown"
|
||||
aria-haspopup="true" aria-expanded="false">
|
||||
<span class="lp-icon">
|
||||
<i class="@(Model.Icon ?? "")"></i>
|
||||
</span>
|
||||
<span class="lp-text">
|
||||
@Model.DisplayName
|
||||
</span>
|
||||
</a>
|
||||
<div class="dropdown-menu">
|
||||
@foreach (var childMenuItem in Model.Items)
|
||||
{
|
||||
@await Html.PartialAsync("~/Themes/Basic/Components/Menu/_MenuItem.cshtml", childMenuItem)
|
||||
}
|
||||
</div>
|
||||
</div>
|
||||
}
|
||||
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in new issue