SlideShare una empresa de Scribd logo
1 de 47
Киев 2017
Только реальные кейсы. Только актуальные тренды.
Architecture &
Development of .NET Core
Applications
Andrey Antilikatorov
Киев 2017Architecture & Development of .NET Core Applications
Киев 2017Architecture & Development of .NET Core Applications
Киев 2017
Analytics says…
.NET Core will be as popular as Ruby and
NodeJS.
.NET Core and NodeJS will be the most popular
platforms for back-end solution compete on the
market.
In few years .NET Core (not Java) will be
number one choice for enterprise-level
applications.
Architecture & Development of .NET Core Applications
.Net Core, Java, NodeJS…
Киев 2017Architecture & Development of .NET Core Applications
Киев 2017
.NET Core :: Few Things
• Many mechanisms such as authentication, security,
component interactions now changed comparing to .Net
Framework.
• Many components and platforms (for example for
Desktop applications) are missing.
• Nevertheless, .NET Core provides corporate-level
software benefits for small projects.
Architecture & Development of .NET Core Applications
Киев 2017
.Net Core vs .Net Framework
• There are cross-platform needs.
• Application architecture is based
on microservices.
• Scalability and high performance
are the must. Need to get as
much as possible out of the box.
• Need to use both Linux and
Windows containers.
• You are running multiple .NET
versions side-by-side.
• Opensource framework is
required.
Architecture & Development of .NET Core Applications
• Application currently uses .NET
Framework and has strong
dependencies on Windows.
• Need to use Windows APIs that
are not supported by .NET Core.
• Need to use third-party libraries
or NuGet packages that are not
available for .NET Core.
• Need tools, technologies or
platforms not supported by .NET
Core.
.NET Core .Net Framework
Киев 2017
.Net Core vs .Net Framework
Architecture & Development of .NET Core Applications
Architecture / App Type Linux containers Windows Containers
Microservices on containers .NET Core .NET Core
Monolithic app .NET Core .NET Framework,
.NET Core
Best-in-class performance and scalability .NET Core .NET Core
Windows Server legacy app (“brown-field”)
migration to containers
-- .NET Framework
New container-based development (“green-field”) .NET Core .NET Core
ASP.NET Core .NET Core .NET Core (recommended)
.NET Framework
ASP.NET 4 (MVC 5, Web API 2, and Web Forms) -- .NET Framework
SignalR services .NET Core .NET Framework
.NET Core
WCF, WF, and other legacy frameworks Limited WCF
support in .NET
Core
.NET Framework
Limited WCF support in
.NET Core
Consumption of Azure services .NET Core .NET Framework,
.NET Core
Киев 2017Architecture & Development of .NET Core Applications
Киев 2017
Microservices :: Pros and Cons
• Each microservice is relatively
small—easy to manage and evolve.
• It is possible to scale out individual
areas of the application.
• You can divide the development
work between multiple teams.
• Issues are more isolated.
• You can use the latest technologies.
Architecture & Development of .NET Core Applications
• Distributed application adds
complexity for developers.
• Deployment complexity.
• Atomic transactions usually are
not possible.
• Usually increase hardware
resource needs.
• Communication complexity.
• Correct system decomposition
complexity.
Benefits Disadvantages
Киев 2017
.Net Core Apps :: Hosting
Architecture & Development of .NET Core Applications
Feature App
Service
Service
Fabric
Virtual
Machine
Near-Instant Deployment X X
Scale up to larger machines without redeploy X X
Instances share content and configuration; no need to
redeploy or reconfigure when scaling
X X
Multiple deployment environments (production, staging) X X
Automatic OS update management X
Seamless switching between 32/64 bit platforms X
Deploy code with Git, FTP X X
Deploy code with WebDeploy X X
Deploy code with TFS X X X
Host web or web service tier of multi-tier architecture X X X
Access Azure services like Service Bus, Storage, SQL
Database
X X X
Install any custom MSI X X
Киев 2017
High-Level Architecture
Architecture & Development of .NET Core Applications
User Interface
Business Logic
Data Access
Киев 2017
High-Level Architecture
Architecture & Development of .NET Core Applications
Киев 2017
Architectural Principles
Architecture & Development of .NET Core Applications
• SOLID
• Separation of Concerns
• Explicit Dependencies
• Don’t Repeat Yourself
• Persistence Ignorance
• Bounded Contexts
• Command and Query Responsibility Segregation (CQRS)
• Domain-Driven Design
Киев 2017Architecture & Development of .NET Core Applications
Киев 2017
API :: Direct Communication
Architecture & Development of .NET Core Applications
Back-End
Microservice 1
Microservice 2
Microservice N
…
Client Apps
Киев 2017
API :: API Gateway
Architecture & Development of .NET Core Applications
Back-End
Microservice 1
Microservice 2
Microservice N
…
Client Apps
API Gateway
Киев 2017
API :: Azure API Management
Architecture & Development of .NET Core Applications
Back-End
Microservice 1
Microservice 2
Microservice N
…
Client Apps
Azure API
Management
Киев 2017
API :: Swagger
• Automatically generates API documentation
• Supports Client API generation and discoverability
• Provides ability to automatically consume and integrate
APIs
Architecture & Development of .NET Core Applications
Киев 2017
API :: Swagger Configuration
Architecture & Development of .NET Core Applications
public void ConfigureServices(IServiceCollection services)
{
// API documentation configuration
var swaggerConfigurationInfo = new SwaggerConfigurationInfo() {
Title = “My Application User API ",
Description = "Service provides all user specific information and management api.",
TermsOfService = “None”,
SecuritySchemas = new List<SecurityScheme> {
// Define the OAuth2.0 scheme (i.e. Implicit Flow), for access_token the user of
// Swagger will be redirected to Auth0 Login hosted page to input credentials
new OAuth2Scheme { Type = "oauth2",
Flow = "implicit",
AuthorizationUrl =
m_identityProviderSettings.Auth0Authorize.AbsoluteUri,
Scopes = new Dictionary<string, string>
{ { "openid profile email", "Security API" }}
}}};
// Add Framework API services(API versioning, swagger, etc.)
services.AddApiServices(swaggerConfigurationInfo);
}
Киев 2017
API :: AutoRest
Architecture & Development of .NET Core Applications
{autorest-location}autorest -Input http://{webapiname}.azurewebsites.net/swagger/
public async void InvokeTest()
{
UserApiClient client = new UserApiClient(...);
await client.IdentityUserActivatePostAsync(
new ActivateUserModel
{
ExternalReferenceId = "1354687252",
Password = "Qwerty123"
});
}
Киев 2017
API :: Versioning
Architecture & Development of .NET Core Applications
Back-End
V 1.0
API Gateway
V N.M
…
New Client Apps
Old Client Apps
Киев 2017
API Versioning :: Business Rules
• API versioning shall be applicable for any API endpoint.
• Old versions has to be supported as long as you agreed
with our clients.
• Old API versions should work the same way they worked
before new version was introduced.
• Old APIs shall be marked as deprecated.
• All versions has to be testable via unit/integration tests.
• Best practice is to apply versioning to external API only.
Architecture & Development of .NET Core Applications
Киев 2017
API Versioning :: Versioning in URI
Architecture & Development of .NET Core Applications
• URI Path
https://mywebportal.com/api/v2/getUsers
• Query String
https://mywebportal.com/api/getUsers?v=2.0
Киев 2017
Versioning with Headers
Architecture & Development of .NET Core Applications
GET /api/camps HTTP/1.1
Host: localhost:43333
Content-Type: application/json
X-version: 2.0
GET /api/camps HTTP/1.1
Host: localhost:43333
Content-Type: application/json
Accept: application/json;version=2.0
Киев 2017
Versioning with Content Type
Architecture & Development of .NET Core Applications
GET /api/camps HTTP/1.1
Host: localhost:43333
Content-Type: application/vnd.myapplication.v1+json
Accept: application/vnd.myapplication.v1+json
Киев 2017
Versioning in Action
Architecture & Development of .NET Core Applications
• Use Microsoft ASP.NET API Versioning NuGet package
• Each controller should be marked with API version:
• Old versions of API controllers should be marked as
deprecated:
• Each API version should be stored in Version folder
• Each controller should be placed in specific namespace
• Unit and integration tests should be also stored separately
Киев 2017Architecture & Development of .NET Core Applications
Киев 2017
EF Core :: Resilient Connections
Architecture & Development of .NET Core Applications
public void ConfigureServices(IServiceCollection services)
{
services.AddDbContext<DbContext>(options =>
{
options.UseSqlServer(Configuration["ConnectionString"],
sqlServerOptionsAction: sqlOptions =>
{
sqlOptions.EnableRetryOnFailure(
maxRetryCount: 5,
maxRetryDelay: TimeSpan.FromSeconds(10),
errorNumbersToAdd: null);
});
});
}
Киев 2017
Resiliency and Transactions
Architecture & Development of .NET Core Applications
System.InvalidOperationException: The configured execution strategy
'SqlServerRetryingExecutionStrategy' does not support user initiated
transactions. Use the execution strategy returned by
'DbContext.Database.CreateExecutionStrategy()' to execute all the operations
in the transaction as a retriable unit.
// Use of resiliency strategy within an explicit transaction
var strategy = dbContext.Database.CreateExecutionStrategy();
await strategy.ExecuteAsync(async () => {
using (var transaction = dbContext.Database.BeginTransaction()) {
dbContext.Users.Update(user);
await dbContext.SaveChangesAsync();
await eventLogService.SaveEventAsync(userChangedEvent);
transaction.Commit();
}
});
SOLUTION
Киев 2017
EF Core :: Seeding
Architecture & Development of .NET Core Applications
public class Startup
{
// Other Startup code...
public void Configure(IApplicationBuilder app,
IHostingEnvironment env,
ILoggerFactory loggerFactory)
{
// Other Configure code...
// Seed data through our custom class
DatabaseSeed.SeedAsync(app).Wait();
// Other Configure code...
}
}
Киев 2017
EF Core :: Seeding
Architecture & Development of .NET Core Applications
public class DatabaseSeed
{
public static async Task SeedAsync(IApplicationBuilder applicationBuilder)
{
var context = (AppDbContext)applicationBuilder.
ApplicationServices.GetService(typeof(AppDbContext));
using (context)
{
context.Database.Migrate();
if (!context.Users.Any())
{
context.Users.AddRange(...);
await context.SaveChangesAsync();
}
if (!context.Departments.Any())
{
context.Departments.AddRange(...);
await context.SaveChangesAsync();
}
}
}
}
Киев 2017
EF Core :: Seeding Improvement
Architecture & Development of .NET Core Applications
• Use standard migration mechanism.
• Create base class(es) for seed migrations.
• Specify data context via attribute.
Киев 2017
EF Core :: Seeding Improvement
Architecture & Development of .NET Core Applications
/// <summary>
/// Seed Roles, RolesClaims and UserRoles
/// </summary>
[DbContext(typeof(MyContext))]
[Migration("SEED_201709121256_AddRolesClaimsUserRoles")]
public class AddRolesClaimsUserRoles : EmptyDbSeedMigration
{
/// <summary>
/// <see cref="SeedMigrationBase.PopulateData"/>
/// </summary>
protected override void PopulateData()
{
...
}
}
Киев 2017
EF Core :: InMemory Databases
Architecture & Development of .NET Core Applications
public class Startup
{
// Other Startup code ...
public void ConfigureServices(IServiceCollection services)
{
services.AddSingleton<IConfiguration>(Configuration);
// DbContext using an InMemory database provider
services.AddDbContext<AppDbContext>(opt =>
opt.UseInMemoryDatabase());
}
// Other Startup code ...
}
Киев 2017Architecture & Development of .NET Core Applications
Киев 2017
.NET Core Apps :: Health Cheks
Architecture & Development of .NET Core Applications
• https://github.com/aspnet/HealthChecks
• src/common
• src/Microsoft.AspNetCore.HealthChecks
• src/Microsoft.Extensions.HealthChecks
• src/Microsoft.Extensions.HealthChecks.SqlServer
• src/Microsoft.Extensions.HealthChecks.AzureStorage
Киев 2017
.NET Core Apps :: Health Checks
Architecture & Development of .NET Core Applications
public class Program
{
public static void Main(string[] args)
{
var host = new WebHostBuilder()
.UseKestrel()
.UseHealthChecks("/hc)
.UseContentRoot(Directory.GetCurrentDirectory())
.UseIISIntegration()
.UseStartup<Startup>()
.Build();
host.Run();
}
}
Киев 2017
.NET Core Apps :: Health Checks
Architecture & Development of .NET Core Applications
public class Startup
{
public void ConfigureServices(IServiceCollection services)
{
// Add health checks here.
services.AddHealthChecks(checks => {
checks.AddUrlCheck(“URL Check" )
.AddHealthCheckGroup("servers",
group => group
.AddUrlCheck("https://myserviceurl::8010")
.AddUrlCheck("https://tmysecondserviceurl:7777"))
}
services.AddMvc();
}
}
Киев 2017
.NET Core Apps :: Health Checks
Architecture & Development of .NET Core Applications
checks.AddSqlCheck("MyDatabase", Configuration["ConnectionString"]);
checks.AddAzureBlobStorageCheck("accountName", "accountKey");
checks.AddAzureBlobStorageCheck("accountName", "accountKey", "containerName");
checks.AddAzureTableStorageCheck("accountName", "accountKey");
checks.AddAzureTableStorageCheck("accountName", "accountKey", "tableName");
checks.AddAzureFileStorageCheck("accountName", "accountKey");
checks.AddAzureFileStorageCheck("accountName", "accountKey", "shareName");
checks.AddAzureQueueStorageCheck("accountName", "accountKey");
checks.AddAzureQueueStorageCheck("accountName", "accountKey", "queueName");
Киев 2017
.NET Core Apps :: Health Checks
Architecture & Development of .NET Core Applications
checks.AddHealthCheckGroup("memory",
group => group.AddPrivateMemorySizeCheck(1)
.AddVirtualMemorySizeCheck(2)
.AddWorkingSetCheck(1), CheckStatus.Unhealthy)
.AddCheck("thrower", Func<IHealthCheckResult>)
(() => { throw new DivideByZeroException(); }))
.AddCheck("long-running", async cancellationToken => {
await Task.Delay(10000, cancellationToken);
return HealthCheckResult.Healthy("I ran too long"); })
.AddCheck<CustomHealthCheck>("custom");
Киев 2017
Service Fabric Health Monitoring
Architecture & Development of .NET Core Applications
fabric:/System
Киев 2017
Service Fabric Health Hierarchy
Architecture & Development of .NET Core Applications
Cluster
Nodes Applications
Deployed
Applications
Deployed Service
Packages
Services
Partitions
Replicas
Киев 2017
Cluster Health Policy
Architecture & Development of .NET Core Applications
<FabricSettings>
<Section Name="HealthManager/ClusterHealthPolicy">
<Parameter Name="ConsiderWarningAsError" Value="False" />
<Parameter Name="MaxPercentUnhealthyApplications" Value=“10" />
<Parameter Name="MaxPercentUnhealthyNodes" Value=“10" />
<Parameter Name="ApplicationTypeMaxPercentUnhealthyApplications-
YourApplicationType" Value="0" />
</Section>
</FabricSettings>
• Consider Warning as Error
• Max Percent Unhealthy Applications
• Max percent Unhealthy Nodes
• Application Type Health Policy Map
Киев 2017
Service Fabric :: Health Reports
Architecture & Development of .NET Core Applications
private static Uri ApplicationName = new Uri("fabric:/MyApplication");
private static string ServiceManifestName = “MyApplication.Service";
private static string NodeName = FabricRuntime.GetNodeContext().NodeName;
private static Timer ReportTimer = new Timer(new TimerCallback(SendReport), null, 3000, 3000);
private static FabricClient Client = new FabricClient(new FabricClientSettings() {
HealthOperationTimeout = TimeSpan.FromSeconds(120),
HealthReportSendInterval = TimeSpan.FromSeconds(0),
HealthReportRetrySendInterval = TimeSpan.FromSeconds(40)});
public static void SendReport(object obj) {
// Test whether the resource can be accessed from the node
HealthState healthState = TestConnectivityToExternalResource();
var deployedServicePackageHealthReport = new DeployedServicePackageHealthReport(
ApplicationName, ServiceManifestName, NodeName,
new HealthInformation("ExternalSourceWatcher", "Connectivity", healthState));
Client.HealthManager.ReportHealth(deployedServicePackageHealthReport);
}
Киев 2017
Service Fabric + App Insights
Architecture & Development of .NET Core Applications
https://github.com/DeHeerSoftware/Azure-Service-Fabric-Logging-And-Monitoring
Serilog.Sinks.ApplicationInsights
Киев 2017Architecture & Development of .NET Core Applications
Thank you!

Más contenido relacionado

La actualidad más candente

.NET Core Apps: Design & Development
.NET Core Apps: Design & Development.NET Core Apps: Design & Development
.NET Core Apps: Design & DevelopmentGlobalLogic Ukraine
 
MongoDB World 2019: Building Flexible and Secure Customer Applications with M...
MongoDB World 2019: Building Flexible and Secure Customer Applications with M...MongoDB World 2019: Building Flexible and Secure Customer Applications with M...
MongoDB World 2019: Building Flexible and Secure Customer Applications with M...MongoDB
 
MongoDB Launchpad 2016: Moving Cybersecurity to the Cloud
MongoDB Launchpad 2016: Moving Cybersecurity to the CloudMongoDB Launchpad 2016: Moving Cybersecurity to the Cloud
MongoDB Launchpad 2016: Moving Cybersecurity to the CloudMongoDB
 
Building microservices web application using scala & akka
Building microservices web application using scala & akkaBuilding microservices web application using scala & akka
Building microservices web application using scala & akkaBinh Nguyen
 
Digital Forensics and Incident Response in The Cloud Part 3
Digital Forensics and Incident Response in The Cloud Part 3Digital Forensics and Incident Response in The Cloud Part 3
Digital Forensics and Incident Response in The Cloud Part 3Velocidex Enterprises
 
MongoDB .local London 2019: New Encryption Capabilities in MongoDB 4.2: A Dee...
MongoDB .local London 2019: New Encryption Capabilities in MongoDB 4.2: A Dee...MongoDB .local London 2019: New Encryption Capabilities in MongoDB 4.2: A Dee...
MongoDB .local London 2019: New Encryption Capabilities in MongoDB 4.2: A Dee...MongoDB
 
MongoDB .local London 2019: Modern Data Backup and Recovery from On-premises ...
MongoDB .local London 2019: Modern Data Backup and Recovery from On-premises ...MongoDB .local London 2019: Modern Data Backup and Recovery from On-premises ...
MongoDB .local London 2019: Modern Data Backup and Recovery from On-premises ...MongoDB
 
.Net Microservices with Event Sourcing, CQRS, Docker and... Windows Server 20...
.Net Microservices with Event Sourcing, CQRS, Docker and... Windows Server 20....Net Microservices with Event Sourcing, CQRS, Docker and... Windows Server 20...
.Net Microservices with Event Sourcing, CQRS, Docker and... Windows Server 20...Javier García Magna
 
What Does Kubernetes Look Like?: Performance Monitoring & Visualization with ...
What Does Kubernetes Look Like?: Performance Monitoring & Visualization with ...What Does Kubernetes Look Like?: Performance Monitoring & Visualization with ...
What Does Kubernetes Look Like?: Performance Monitoring & Visualization with ...InfluxData
 
Monitoring Big Data Systems Done "The Simple Way" - Demi Ben-Ari - Codemotion...
Monitoring Big Data Systems Done "The Simple Way" - Demi Ben-Ari - Codemotion...Monitoring Big Data Systems Done "The Simple Way" - Demi Ben-Ari - Codemotion...
Monitoring Big Data Systems Done "The Simple Way" - Demi Ben-Ari - Codemotion...Codemotion
 
IoT 'Megaservices' - High Throughput Microservices with Akka
IoT 'Megaservices' - High Throughput Microservices with AkkaIoT 'Megaservices' - High Throughput Microservices with Akka
IoT 'Megaservices' - High Throughput Microservices with AkkaLightbend
 
Jax london - Battle-tested event-driven patterns for your microservices archi...
Jax london - Battle-tested event-driven patterns for your microservices archi...Jax london - Battle-tested event-driven patterns for your microservices archi...
Jax london - Battle-tested event-driven patterns for your microservices archi...Natan Silnitsky
 
Cloud native policy enforcement with Open Policy Agent
Cloud native policy enforcement with Open Policy AgentCloud native policy enforcement with Open Policy Agent
Cloud native policy enforcement with Open Policy AgentLibbySchulze
 
Data stores: beyond relational databases
Data stores: beyond relational databasesData stores: beyond relational databases
Data stores: beyond relational databasesJavier García Magna
 
Market Trends in Microsoft Azure
Market Trends in Microsoft AzureMarket Trends in Microsoft Azure
Market Trends in Microsoft AzureGlobalLogic Ukraine
 
NGINX, Istio, and the Move to Microservices and Service Mesh
NGINX, Istio, and the Move to Microservices and Service MeshNGINX, Istio, and the Move to Microservices and Service Mesh
NGINX, Istio, and the Move to Microservices and Service MeshNGINX, Inc.
 
Communication Amongst Microservices: Kubernetes, Istio, and Spring Cloud - An...
Communication Amongst Microservices: Kubernetes, Istio, and Spring Cloud - An...Communication Amongst Microservices: Kubernetes, Istio, and Spring Cloud - An...
Communication Amongst Microservices: Kubernetes, Istio, and Spring Cloud - An...VMware Tanzu
 

La actualidad más candente (20)

.NET Core Apps: Design & Development
.NET Core Apps: Design & Development.NET Core Apps: Design & Development
.NET Core Apps: Design & Development
 
MongoDB World 2019: Building Flexible and Secure Customer Applications with M...
MongoDB World 2019: Building Flexible and Secure Customer Applications with M...MongoDB World 2019: Building Flexible and Secure Customer Applications with M...
MongoDB World 2019: Building Flexible and Secure Customer Applications with M...
 
MongoDB Launchpad 2016: Moving Cybersecurity to the Cloud
MongoDB Launchpad 2016: Moving Cybersecurity to the CloudMongoDB Launchpad 2016: Moving Cybersecurity to the Cloud
MongoDB Launchpad 2016: Moving Cybersecurity to the Cloud
 
Micro services Architecture
Micro services ArchitectureMicro services Architecture
Micro services Architecture
 
Building microservices web application using scala & akka
Building microservices web application using scala & akkaBuilding microservices web application using scala & akka
Building microservices web application using scala & akka
 
Digital Forensics and Incident Response in The Cloud Part 3
Digital Forensics and Incident Response in The Cloud Part 3Digital Forensics and Incident Response in The Cloud Part 3
Digital Forensics and Incident Response in The Cloud Part 3
 
MongoDB .local London 2019: New Encryption Capabilities in MongoDB 4.2: A Dee...
MongoDB .local London 2019: New Encryption Capabilities in MongoDB 4.2: A Dee...MongoDB .local London 2019: New Encryption Capabilities in MongoDB 4.2: A Dee...
MongoDB .local London 2019: New Encryption Capabilities in MongoDB 4.2: A Dee...
 
MongoDB .local London 2019: Modern Data Backup and Recovery from On-premises ...
MongoDB .local London 2019: Modern Data Backup and Recovery from On-premises ...MongoDB .local London 2019: Modern Data Backup and Recovery from On-premises ...
MongoDB .local London 2019: Modern Data Backup and Recovery from On-premises ...
 
.Net Microservices with Event Sourcing, CQRS, Docker and... Windows Server 20...
.Net Microservices with Event Sourcing, CQRS, Docker and... Windows Server 20....Net Microservices with Event Sourcing, CQRS, Docker and... Windows Server 20...
.Net Microservices with Event Sourcing, CQRS, Docker and... Windows Server 20...
 
Istio
Istio Istio
Istio
 
What Does Kubernetes Look Like?: Performance Monitoring & Visualization with ...
What Does Kubernetes Look Like?: Performance Monitoring & Visualization with ...What Does Kubernetes Look Like?: Performance Monitoring & Visualization with ...
What Does Kubernetes Look Like?: Performance Monitoring & Visualization with ...
 
Monitoring Big Data Systems Done "The Simple Way" - Demi Ben-Ari - Codemotion...
Monitoring Big Data Systems Done "The Simple Way" - Demi Ben-Ari - Codemotion...Monitoring Big Data Systems Done "The Simple Way" - Demi Ben-Ari - Codemotion...
Monitoring Big Data Systems Done "The Simple Way" - Demi Ben-Ari - Codemotion...
 
IoT 'Megaservices' - High Throughput Microservices with Akka
IoT 'Megaservices' - High Throughput Microservices with AkkaIoT 'Megaservices' - High Throughput Microservices with Akka
IoT 'Megaservices' - High Throughput Microservices with Akka
 
Jax london - Battle-tested event-driven patterns for your microservices archi...
Jax london - Battle-tested event-driven patterns for your microservices archi...Jax london - Battle-tested event-driven patterns for your microservices archi...
Jax london - Battle-tested event-driven patterns for your microservices archi...
 
Cloud native policy enforcement with Open Policy Agent
Cloud native policy enforcement with Open Policy AgentCloud native policy enforcement with Open Policy Agent
Cloud native policy enforcement with Open Policy Agent
 
Service Discovery 101
Service Discovery 101Service Discovery 101
Service Discovery 101
 
Data stores: beyond relational databases
Data stores: beyond relational databasesData stores: beyond relational databases
Data stores: beyond relational databases
 
Market Trends in Microsoft Azure
Market Trends in Microsoft AzureMarket Trends in Microsoft Azure
Market Trends in Microsoft Azure
 
NGINX, Istio, and the Move to Microservices and Service Mesh
NGINX, Istio, and the Move to Microservices and Service MeshNGINX, Istio, and the Move to Microservices and Service Mesh
NGINX, Istio, and the Move to Microservices and Service Mesh
 
Communication Amongst Microservices: Kubernetes, Istio, and Spring Cloud - An...
Communication Amongst Microservices: Kubernetes, Istio, and Spring Cloud - An...Communication Amongst Microservices: Kubernetes, Istio, and Spring Cloud - An...
Communication Amongst Microservices: Kubernetes, Istio, and Spring Cloud - An...
 

Similar a .NET Fest 2017. Андрей Антиликаторов. Проектирование и разработка приложений на .NET Core

ASP.NET Core 2.1: The Future of Web Apps
ASP.NET Core 2.1: The Future of Web AppsASP.NET Core 2.1: The Future of Web Apps
ASP.NET Core 2.1: The Future of Web AppsShahed Chowdhuri
 
Red Hat and kubernetes: awesome stuff coming your way
Red Hat and kubernetes:  awesome stuff coming your wayRed Hat and kubernetes:  awesome stuff coming your way
Red Hat and kubernetes: awesome stuff coming your wayJohannes Brännström
 
Vijay Oscon
Vijay OsconVijay Oscon
Vijay Osconvijayrvr
 
The next step from Microsoft - Vnext (Srdjan Poznic)
The next step from Microsoft - Vnext (Srdjan Poznic)The next step from Microsoft - Vnext (Srdjan Poznic)
The next step from Microsoft - Vnext (Srdjan Poznic)Geekstone
 
ASP .Net Core SPA Templates
ASP .Net Core SPA TemplatesASP .Net Core SPA Templates
ASP .Net Core SPA TemplatesEamonn Boyle
 
ASP.NET Core 2.1: The Future of Web Apps
ASP.NET Core 2.1: The Future of Web AppsASP.NET Core 2.1: The Future of Web Apps
ASP.NET Core 2.1: The Future of Web AppsShahed Chowdhuri
 
ASP.NET Core 2.1: The Future of Web Apps
ASP.NET Core 2.1: The Future of Web AppsASP.NET Core 2.1: The Future of Web Apps
ASP.NET Core 2.1: The Future of Web AppsShahed Chowdhuri
 
Kubernetes One-Click Deployment: Hands-on Workshop (Mainz)
Kubernetes One-Click Deployment: Hands-on Workshop (Mainz)Kubernetes One-Click Deployment: Hands-on Workshop (Mainz)
Kubernetes One-Click Deployment: Hands-on Workshop (Mainz)QAware GmbH
 
DotnetConf - Cloud native and .Net5 announcements
DotnetConf - Cloud native and .Net5 announcementsDotnetConf - Cloud native and .Net5 announcements
DotnetConf - Cloud native and .Net5 announcementsSajeetharan
 
Azure app service to create web and mobile apps
Azure app service to create web and mobile appsAzure app service to create web and mobile apps
Azure app service to create web and mobile appsKen Cenerelli
 
Deploying windows containers with kubernetes
Deploying windows containers with kubernetesDeploying windows containers with kubernetes
Deploying windows containers with kubernetesBen Hall
 
Teched India Vijay Interop Track
Teched India Vijay Interop TrackTeched India Vijay Interop Track
Teched India Vijay Interop Trackvijayrvr
 
A164 enterprise javascript ibm node sdk
A164 enterprise javascript ibm node sdkA164 enterprise javascript ibm node sdk
A164 enterprise javascript ibm node sdkToby Corbin
 
ASP.NET Core: The best of the new bits
ASP.NET Core: The best of the new bitsASP.NET Core: The best of the new bits
ASP.NET Core: The best of the new bitsKen Cenerelli
 
Azure Service Fabric: The road ahead for microservices
Azure Service Fabric: The road ahead for microservicesAzure Service Fabric: The road ahead for microservices
Azure Service Fabric: The road ahead for microservicesMicrosoft Tech Community
 
Develop and deploy Kubernetes applications with Docker - IBM Index 2018
Develop and deploy Kubernetes  applications with Docker - IBM Index 2018Develop and deploy Kubernetes  applications with Docker - IBM Index 2018
Develop and deploy Kubernetes applications with Docker - IBM Index 2018Patrick Chanezon
 
Azure Kubernetes Service 2019 ふりかえり
Azure Kubernetes Service 2019 ふりかえりAzure Kubernetes Service 2019 ふりかえり
Azure Kubernetes Service 2019 ふりかえりToru Makabe
 
Getting Started with ASP.NET Core 1.0 (formerly ASP.NET 5)
Getting Started with ASP.NET Core 1.0 (formerly ASP.NET 5)Getting Started with ASP.NET Core 1.0 (formerly ASP.NET 5)
Getting Started with ASP.NET Core 1.0 (formerly ASP.NET 5)Arrow Consulting & Design
 

Similar a .NET Fest 2017. Андрей Антиликаторов. Проектирование и разработка приложений на .NET Core (20)

ASP.NET Core 2.1: The Future of Web Apps
ASP.NET Core 2.1: The Future of Web AppsASP.NET Core 2.1: The Future of Web Apps
ASP.NET Core 2.1: The Future of Web Apps
 
Red Hat and kubernetes: awesome stuff coming your way
Red Hat and kubernetes:  awesome stuff coming your wayRed Hat and kubernetes:  awesome stuff coming your way
Red Hat and kubernetes: awesome stuff coming your way
 
Vijay Oscon
Vijay OsconVijay Oscon
Vijay Oscon
 
The next step from Microsoft - Vnext (Srdjan Poznic)
The next step from Microsoft - Vnext (Srdjan Poznic)The next step from Microsoft - Vnext (Srdjan Poznic)
The next step from Microsoft - Vnext (Srdjan Poznic)
 
ASP .Net Core SPA Templates
ASP .Net Core SPA TemplatesASP .Net Core SPA Templates
ASP .Net Core SPA Templates
 
ASP.NET Core
ASP.NET CoreASP.NET Core
ASP.NET Core
 
ASP.NET Core 2.1: The Future of Web Apps
ASP.NET Core 2.1: The Future of Web AppsASP.NET Core 2.1: The Future of Web Apps
ASP.NET Core 2.1: The Future of Web Apps
 
ASP.NET Core 2.1: The Future of Web Apps
ASP.NET Core 2.1: The Future of Web AppsASP.NET Core 2.1: The Future of Web Apps
ASP.NET Core 2.1: The Future of Web Apps
 
Kubernetes One-Click Deployment: Hands-on Workshop (Mainz)
Kubernetes One-Click Deployment: Hands-on Workshop (Mainz)Kubernetes One-Click Deployment: Hands-on Workshop (Mainz)
Kubernetes One-Click Deployment: Hands-on Workshop (Mainz)
 
DotnetConf - Cloud native and .Net5 announcements
DotnetConf - Cloud native and .Net5 announcementsDotnetConf - Cloud native and .Net5 announcements
DotnetConf - Cloud native and .Net5 announcements
 
Azure app service to create web and mobile apps
Azure app service to create web and mobile appsAzure app service to create web and mobile apps
Azure app service to create web and mobile apps
 
Deploying windows containers with kubernetes
Deploying windows containers with kubernetesDeploying windows containers with kubernetes
Deploying windows containers with kubernetes
 
Teched India Vijay Interop Track
Teched India Vijay Interop TrackTeched India Vijay Interop Track
Teched India Vijay Interop Track
 
A164 enterprise javascript ibm node sdk
A164 enterprise javascript ibm node sdkA164 enterprise javascript ibm node sdk
A164 enterprise javascript ibm node sdk
 
ASP.NET Core: The best of the new bits
ASP.NET Core: The best of the new bitsASP.NET Core: The best of the new bits
ASP.NET Core: The best of the new bits
 
ASP.NET 5
ASP.NET 5ASP.NET 5
ASP.NET 5
 
Azure Service Fabric: The road ahead for microservices
Azure Service Fabric: The road ahead for microservicesAzure Service Fabric: The road ahead for microservices
Azure Service Fabric: The road ahead for microservices
 
Develop and deploy Kubernetes applications with Docker - IBM Index 2018
Develop and deploy Kubernetes  applications with Docker - IBM Index 2018Develop and deploy Kubernetes  applications with Docker - IBM Index 2018
Develop and deploy Kubernetes applications with Docker - IBM Index 2018
 
Azure Kubernetes Service 2019 ふりかえり
Azure Kubernetes Service 2019 ふりかえりAzure Kubernetes Service 2019 ふりかえり
Azure Kubernetes Service 2019 ふりかえり
 
Getting Started with ASP.NET Core 1.0 (formerly ASP.NET 5)
Getting Started with ASP.NET Core 1.0 (formerly ASP.NET 5)Getting Started with ASP.NET Core 1.0 (formerly ASP.NET 5)
Getting Started with ASP.NET Core 1.0 (formerly ASP.NET 5)
 

Más de NETFest

.NET Fest 2019. Николай Балакин. Микрооптимизации в мире .NET
.NET Fest 2019. Николай Балакин. Микрооптимизации в мире .NET.NET Fest 2019. Николай Балакин. Микрооптимизации в мире .NET
.NET Fest 2019. Николай Балакин. Микрооптимизации в мире .NETNETFest
 
.NET Fest 2019. Сергей Калинец. Efficient Microservice Communication with .NE...
.NET Fest 2019. Сергей Калинец. Efficient Microservice Communication with .NE....NET Fest 2019. Сергей Калинец. Efficient Microservice Communication with .NE...
.NET Fest 2019. Сергей Калинец. Efficient Microservice Communication with .NE...NETFest
 
.NET Fest 2019. Оля Гавриш. .NET Core 3.0 и будущее .NET
.NET Fest 2019. Оля Гавриш. .NET Core 3.0 и будущее .NET.NET Fest 2019. Оля Гавриш. .NET Core 3.0 и будущее .NET
.NET Fest 2019. Оля Гавриш. .NET Core 3.0 и будущее .NETNETFest
 
.NET Fest 2019. Оля Гавриш. Машинное обучение для .NET программистов
.NET Fest 2019. Оля Гавриш. Машинное обучение для .NET программистов.NET Fest 2019. Оля Гавриш. Машинное обучение для .NET программистов
.NET Fest 2019. Оля Гавриш. Машинное обучение для .NET программистовNETFest
 
.NET Fest 2019. Roberto Freato. Provisioning Azure PaaS fluently with Managem...
.NET Fest 2019. Roberto Freato. Provisioning Azure PaaS fluently with Managem....NET Fest 2019. Roberto Freato. Provisioning Azure PaaS fluently with Managem...
.NET Fest 2019. Roberto Freato. Provisioning Azure PaaS fluently with Managem...NETFest
 
.NET Fest 2019. Halil Ibrahim Kalkan. Implementing Domain Driven Design
.NET Fest 2019. Halil Ibrahim Kalkan. Implementing Domain Driven Design.NET Fest 2019. Halil Ibrahim Kalkan. Implementing Domain Driven Design
.NET Fest 2019. Halil Ibrahim Kalkan. Implementing Domain Driven DesignNETFest
 
.NET Fest 2019. Сергій Бута. Feature Toggles: Dynamic Configuration at Wirex
.NET Fest 2019. Сергій Бута. Feature Toggles: Dynamic Configuration at Wirex.NET Fest 2019. Сергій Бута. Feature Toggles: Dynamic Configuration at Wirex
.NET Fest 2019. Сергій Бута. Feature Toggles: Dynamic Configuration at WirexNETFest
 
.NET Fest 2019. Michael Staib. Hot Chocolate: GraphQL Schema Stitching with A...
.NET Fest 2019. Michael Staib. Hot Chocolate: GraphQL Schema Stitching with A....NET Fest 2019. Michael Staib. Hot Chocolate: GraphQL Schema Stitching with A...
.NET Fest 2019. Michael Staib. Hot Chocolate: GraphQL Schema Stitching with A...NETFest
 
.NET Fest 2019. Андрей Литвинов. Async lifetime tests with xUnit and AutoFixture
.NET Fest 2019. Андрей Литвинов. Async lifetime tests with xUnit and AutoFixture.NET Fest 2019. Андрей Литвинов. Async lifetime tests with xUnit and AutoFixture
.NET Fest 2019. Андрей Литвинов. Async lifetime tests with xUnit and AutoFixtureNETFest
 
.NET Fest 2019. Анатолий Колесник. Love, Death & F# Tests
.NET Fest 2019. Анатолий Колесник. Love, Death & F# Tests.NET Fest 2019. Анатолий Колесник. Love, Death & F# Tests
.NET Fest 2019. Анатолий Колесник. Love, Death & F# TestsNETFest
 
.NET Fest 2019. Алексей Голуб. Монадные парсер-комбинаторы в C# (простой спос...
.NET Fest 2019. Алексей Голуб. Монадные парсер-комбинаторы в C# (простой спос....NET Fest 2019. Алексей Голуб. Монадные парсер-комбинаторы в C# (простой спос...
.NET Fest 2019. Алексей Голуб. Монадные парсер-комбинаторы в C# (простой спос...NETFest
 
.NET Fest 2019. Roberto Freato. Azure App Service deep dive
.NET Fest 2019. Roberto Freato. Azure App Service deep dive.NET Fest 2019. Roberto Freato. Azure App Service deep dive
.NET Fest 2019. Roberto Freato. Azure App Service deep diveNETFest
 
.NET Fest 2019. Леонид Молотиевский. DotNet Core in production
.NET Fest 2019. Леонид Молотиевский. DotNet Core in production.NET Fest 2019. Леонид Молотиевский. DotNet Core in production
.NET Fest 2019. Леонид Молотиевский. DotNet Core in productionNETFest
 
.NET Fest 2019. Александр Демчук. How to measure relationships within the Com...
.NET Fest 2019. Александр Демчук. How to measure relationships within the Com....NET Fest 2019. Александр Демчук. How to measure relationships within the Com...
.NET Fest 2019. Александр Демчук. How to measure relationships within the Com...NETFest
 
.NET Fest 2019. Anna Melashkina та Philipp Bauknecht. Dragons in a Mixed Real...
.NET Fest 2019. Anna Melashkina та Philipp Bauknecht. Dragons in a Mixed Real....NET Fest 2019. Anna Melashkina та Philipp Bauknecht. Dragons in a Mixed Real...
.NET Fest 2019. Anna Melashkina та Philipp Bauknecht. Dragons in a Mixed Real...NETFest
 
.NET Fest 2019. Alex Thissen. Architecting .NET solutions in a Docker ecosystem
.NET Fest 2019. Alex Thissen. Architecting .NET solutions in a Docker ecosystem.NET Fest 2019. Alex Thissen. Architecting .NET solutions in a Docker ecosystem
.NET Fest 2019. Alex Thissen. Architecting .NET solutions in a Docker ecosystemNETFest
 
.NET Fest 2019. Stas Lebedenko. Practical serverless use cases in Azure with ...
.NET Fest 2019. Stas Lebedenko. Practical serverless use cases in Azure with ....NET Fest 2019. Stas Lebedenko. Practical serverless use cases in Azure with ...
.NET Fest 2019. Stas Lebedenko. Practical serverless use cases in Azure with ...NETFest
 
.NET Fest 2019. Сергей Медведев. How serverless makes Integration TDD a reali...
.NET Fest 2019. Сергей Медведев. How serverless makes Integration TDD a reali....NET Fest 2019. Сергей Медведев. How serverless makes Integration TDD a reali...
.NET Fest 2019. Сергей Медведев. How serverless makes Integration TDD a reali...NETFest
 
.NET Fest 2019. Сергей Корж. Natural Language Processing in .NET
.NET Fest 2019. Сергей Корж. Natural Language Processing in .NET.NET Fest 2019. Сергей Корж. Natural Language Processing in .NET
.NET Fest 2019. Сергей Корж. Natural Language Processing in .NETNETFest
 
.NET Fest 2019. Eran Stiller. Create Your Own Serverless PKI with .NET & Azur...
.NET Fest 2019. Eran Stiller. Create Your Own Serverless PKI with .NET & Azur....NET Fest 2019. Eran Stiller. Create Your Own Serverless PKI with .NET & Azur...
.NET Fest 2019. Eran Stiller. Create Your Own Serverless PKI with .NET & Azur...NETFest
 

Más de NETFest (20)

.NET Fest 2019. Николай Балакин. Микрооптимизации в мире .NET
.NET Fest 2019. Николай Балакин. Микрооптимизации в мире .NET.NET Fest 2019. Николай Балакин. Микрооптимизации в мире .NET
.NET Fest 2019. Николай Балакин. Микрооптимизации в мире .NET
 
.NET Fest 2019. Сергей Калинец. Efficient Microservice Communication with .NE...
.NET Fest 2019. Сергей Калинец. Efficient Microservice Communication with .NE....NET Fest 2019. Сергей Калинец. Efficient Microservice Communication with .NE...
.NET Fest 2019. Сергей Калинец. Efficient Microservice Communication with .NE...
 
.NET Fest 2019. Оля Гавриш. .NET Core 3.0 и будущее .NET
.NET Fest 2019. Оля Гавриш. .NET Core 3.0 и будущее .NET.NET Fest 2019. Оля Гавриш. .NET Core 3.0 и будущее .NET
.NET Fest 2019. Оля Гавриш. .NET Core 3.0 и будущее .NET
 
.NET Fest 2019. Оля Гавриш. Машинное обучение для .NET программистов
.NET Fest 2019. Оля Гавриш. Машинное обучение для .NET программистов.NET Fest 2019. Оля Гавриш. Машинное обучение для .NET программистов
.NET Fest 2019. Оля Гавриш. Машинное обучение для .NET программистов
 
.NET Fest 2019. Roberto Freato. Provisioning Azure PaaS fluently with Managem...
.NET Fest 2019. Roberto Freato. Provisioning Azure PaaS fluently with Managem....NET Fest 2019. Roberto Freato. Provisioning Azure PaaS fluently with Managem...
.NET Fest 2019. Roberto Freato. Provisioning Azure PaaS fluently with Managem...
 
.NET Fest 2019. Halil Ibrahim Kalkan. Implementing Domain Driven Design
.NET Fest 2019. Halil Ibrahim Kalkan. Implementing Domain Driven Design.NET Fest 2019. Halil Ibrahim Kalkan. Implementing Domain Driven Design
.NET Fest 2019. Halil Ibrahim Kalkan. Implementing Domain Driven Design
 
.NET Fest 2019. Сергій Бута. Feature Toggles: Dynamic Configuration at Wirex
.NET Fest 2019. Сергій Бута. Feature Toggles: Dynamic Configuration at Wirex.NET Fest 2019. Сергій Бута. Feature Toggles: Dynamic Configuration at Wirex
.NET Fest 2019. Сергій Бута. Feature Toggles: Dynamic Configuration at Wirex
 
.NET Fest 2019. Michael Staib. Hot Chocolate: GraphQL Schema Stitching with A...
.NET Fest 2019. Michael Staib. Hot Chocolate: GraphQL Schema Stitching with A....NET Fest 2019. Michael Staib. Hot Chocolate: GraphQL Schema Stitching with A...
.NET Fest 2019. Michael Staib. Hot Chocolate: GraphQL Schema Stitching with A...
 
.NET Fest 2019. Андрей Литвинов. Async lifetime tests with xUnit and AutoFixture
.NET Fest 2019. Андрей Литвинов. Async lifetime tests with xUnit and AutoFixture.NET Fest 2019. Андрей Литвинов. Async lifetime tests with xUnit and AutoFixture
.NET Fest 2019. Андрей Литвинов. Async lifetime tests with xUnit and AutoFixture
 
.NET Fest 2019. Анатолий Колесник. Love, Death & F# Tests
.NET Fest 2019. Анатолий Колесник. Love, Death & F# Tests.NET Fest 2019. Анатолий Колесник. Love, Death & F# Tests
.NET Fest 2019. Анатолий Колесник. Love, Death & F# Tests
 
.NET Fest 2019. Алексей Голуб. Монадные парсер-комбинаторы в C# (простой спос...
.NET Fest 2019. Алексей Голуб. Монадные парсер-комбинаторы в C# (простой спос....NET Fest 2019. Алексей Голуб. Монадные парсер-комбинаторы в C# (простой спос...
.NET Fest 2019. Алексей Голуб. Монадные парсер-комбинаторы в C# (простой спос...
 
.NET Fest 2019. Roberto Freato. Azure App Service deep dive
.NET Fest 2019. Roberto Freato. Azure App Service deep dive.NET Fest 2019. Roberto Freato. Azure App Service deep dive
.NET Fest 2019. Roberto Freato. Azure App Service deep dive
 
.NET Fest 2019. Леонид Молотиевский. DotNet Core in production
.NET Fest 2019. Леонид Молотиевский. DotNet Core in production.NET Fest 2019. Леонид Молотиевский. DotNet Core in production
.NET Fest 2019. Леонид Молотиевский. DotNet Core in production
 
.NET Fest 2019. Александр Демчук. How to measure relationships within the Com...
.NET Fest 2019. Александр Демчук. How to measure relationships within the Com....NET Fest 2019. Александр Демчук. How to measure relationships within the Com...
.NET Fest 2019. Александр Демчук. How to measure relationships within the Com...
 
.NET Fest 2019. Anna Melashkina та Philipp Bauknecht. Dragons in a Mixed Real...
.NET Fest 2019. Anna Melashkina та Philipp Bauknecht. Dragons in a Mixed Real....NET Fest 2019. Anna Melashkina та Philipp Bauknecht. Dragons in a Mixed Real...
.NET Fest 2019. Anna Melashkina та Philipp Bauknecht. Dragons in a Mixed Real...
 
.NET Fest 2019. Alex Thissen. Architecting .NET solutions in a Docker ecosystem
.NET Fest 2019. Alex Thissen. Architecting .NET solutions in a Docker ecosystem.NET Fest 2019. Alex Thissen. Architecting .NET solutions in a Docker ecosystem
.NET Fest 2019. Alex Thissen. Architecting .NET solutions in a Docker ecosystem
 
.NET Fest 2019. Stas Lebedenko. Practical serverless use cases in Azure with ...
.NET Fest 2019. Stas Lebedenko. Practical serverless use cases in Azure with ....NET Fest 2019. Stas Lebedenko. Practical serverless use cases in Azure with ...
.NET Fest 2019. Stas Lebedenko. Practical serverless use cases in Azure with ...
 
.NET Fest 2019. Сергей Медведев. How serverless makes Integration TDD a reali...
.NET Fest 2019. Сергей Медведев. How serverless makes Integration TDD a reali....NET Fest 2019. Сергей Медведев. How serverless makes Integration TDD a reali...
.NET Fest 2019. Сергей Медведев. How serverless makes Integration TDD a reali...
 
.NET Fest 2019. Сергей Корж. Natural Language Processing in .NET
.NET Fest 2019. Сергей Корж. Natural Language Processing in .NET.NET Fest 2019. Сергей Корж. Natural Language Processing in .NET
.NET Fest 2019. Сергей Корж. Natural Language Processing in .NET
 
.NET Fest 2019. Eran Stiller. Create Your Own Serverless PKI with .NET & Azur...
.NET Fest 2019. Eran Stiller. Create Your Own Serverless PKI with .NET & Azur....NET Fest 2019. Eran Stiller. Create Your Own Serverless PKI with .NET & Azur...
.NET Fest 2019. Eran Stiller. Create Your Own Serverless PKI with .NET & Azur...
 

Último

Application orientated numerical on hev.ppt
Application orientated numerical on hev.pptApplication orientated numerical on hev.ppt
Application orientated numerical on hev.pptRamjanShidvankar
 
Grant Readiness 101 TechSoup and Remy Consulting
Grant Readiness 101 TechSoup and Remy ConsultingGrant Readiness 101 TechSoup and Remy Consulting
Grant Readiness 101 TechSoup and Remy ConsultingTechSoup
 
1029 - Danh muc Sach Giao Khoa 10 . pdf
1029 -  Danh muc Sach Giao Khoa 10 . pdf1029 -  Danh muc Sach Giao Khoa 10 . pdf
1029 - Danh muc Sach Giao Khoa 10 . pdfQucHHunhnh
 
Introduction to Nonprofit Accounting: The Basics
Introduction to Nonprofit Accounting: The BasicsIntroduction to Nonprofit Accounting: The Basics
Introduction to Nonprofit Accounting: The BasicsTechSoup
 
Unit-V; Pricing (Pharma Marketing Management).pptx
Unit-V; Pricing (Pharma Marketing Management).pptxUnit-V; Pricing (Pharma Marketing Management).pptx
Unit-V; Pricing (Pharma Marketing Management).pptxVishalSingh1417
 
Unit-IV- Pharma. Marketing Channels.pptx
Unit-IV- Pharma. Marketing Channels.pptxUnit-IV- Pharma. Marketing Channels.pptx
Unit-IV- Pharma. Marketing Channels.pptxVishalSingh1417
 
Key note speaker Neum_Admir Softic_ENG.pdf
Key note speaker Neum_Admir Softic_ENG.pdfKey note speaker Neum_Admir Softic_ENG.pdf
Key note speaker Neum_Admir Softic_ENG.pdfAdmir Softic
 
Gardella_PRCampaignConclusion Pitch Letter
Gardella_PRCampaignConclusion Pitch LetterGardella_PRCampaignConclusion Pitch Letter
Gardella_PRCampaignConclusion Pitch LetterMateoGardella
 
Making and Justifying Mathematical Decisions.pdf
Making and Justifying Mathematical Decisions.pdfMaking and Justifying Mathematical Decisions.pdf
Making and Justifying Mathematical Decisions.pdfChris Hunter
 
1029-Danh muc Sach Giao Khoa khoi 6.pdf
1029-Danh muc Sach Giao Khoa khoi  6.pdf1029-Danh muc Sach Giao Khoa khoi  6.pdf
1029-Danh muc Sach Giao Khoa khoi 6.pdfQucHHunhnh
 
Paris 2024 Olympic Geographies - an activity
Paris 2024 Olympic Geographies - an activityParis 2024 Olympic Geographies - an activity
Paris 2024 Olympic Geographies - an activityGeoBlogs
 
Ecological Succession. ( ECOSYSTEM, B. Pharmacy, 1st Year, Sem-II, Environmen...
Ecological Succession. ( ECOSYSTEM, B. Pharmacy, 1st Year, Sem-II, Environmen...Ecological Succession. ( ECOSYSTEM, B. Pharmacy, 1st Year, Sem-II, Environmen...
Ecological Succession. ( ECOSYSTEM, B. Pharmacy, 1st Year, Sem-II, Environmen...Shubhangi Sonawane
 
Seal of Good Local Governance (SGLG) 2024Final.pptx
Seal of Good Local Governance (SGLG) 2024Final.pptxSeal of Good Local Governance (SGLG) 2024Final.pptx
Seal of Good Local Governance (SGLG) 2024Final.pptxnegromaestrong
 
Gardella_Mateo_IntellectualProperty.pdf.
Gardella_Mateo_IntellectualProperty.pdf.Gardella_Mateo_IntellectualProperty.pdf.
Gardella_Mateo_IntellectualProperty.pdf.MateoGardella
 
ICT Role in 21st Century Education & its Challenges.pptx
ICT Role in 21st Century Education & its Challenges.pptxICT Role in 21st Century Education & its Challenges.pptx
ICT Role in 21st Century Education & its Challenges.pptxAreebaZafar22
 
Activity 01 - Artificial Culture (1).pdf
Activity 01 - Artificial Culture (1).pdfActivity 01 - Artificial Culture (1).pdf
Activity 01 - Artificial Culture (1).pdfciinovamais
 
APM Welcome, APM North West Network Conference, Synergies Across Sectors
APM Welcome, APM North West Network Conference, Synergies Across SectorsAPM Welcome, APM North West Network Conference, Synergies Across Sectors
APM Welcome, APM North West Network Conference, Synergies Across SectorsAssociation for Project Management
 
This PowerPoint helps students to consider the concept of infinity.
This PowerPoint helps students to consider the concept of infinity.This PowerPoint helps students to consider the concept of infinity.
This PowerPoint helps students to consider the concept of infinity.christianmathematics
 

Último (20)

Application orientated numerical on hev.ppt
Application orientated numerical on hev.pptApplication orientated numerical on hev.ppt
Application orientated numerical on hev.ppt
 
Grant Readiness 101 TechSoup and Remy Consulting
Grant Readiness 101 TechSoup and Remy ConsultingGrant Readiness 101 TechSoup and Remy Consulting
Grant Readiness 101 TechSoup and Remy Consulting
 
1029 - Danh muc Sach Giao Khoa 10 . pdf
1029 -  Danh muc Sach Giao Khoa 10 . pdf1029 -  Danh muc Sach Giao Khoa 10 . pdf
1029 - Danh muc Sach Giao Khoa 10 . pdf
 
Introduction to Nonprofit Accounting: The Basics
Introduction to Nonprofit Accounting: The BasicsIntroduction to Nonprofit Accounting: The Basics
Introduction to Nonprofit Accounting: The Basics
 
Unit-V; Pricing (Pharma Marketing Management).pptx
Unit-V; Pricing (Pharma Marketing Management).pptxUnit-V; Pricing (Pharma Marketing Management).pptx
Unit-V; Pricing (Pharma Marketing Management).pptx
 
Unit-IV- Pharma. Marketing Channels.pptx
Unit-IV- Pharma. Marketing Channels.pptxUnit-IV- Pharma. Marketing Channels.pptx
Unit-IV- Pharma. Marketing Channels.pptx
 
Key note speaker Neum_Admir Softic_ENG.pdf
Key note speaker Neum_Admir Softic_ENG.pdfKey note speaker Neum_Admir Softic_ENG.pdf
Key note speaker Neum_Admir Softic_ENG.pdf
 
Mattingly "AI & Prompt Design: The Basics of Prompt Design"
Mattingly "AI & Prompt Design: The Basics of Prompt Design"Mattingly "AI & Prompt Design: The Basics of Prompt Design"
Mattingly "AI & Prompt Design: The Basics of Prompt Design"
 
Gardella_PRCampaignConclusion Pitch Letter
Gardella_PRCampaignConclusion Pitch LetterGardella_PRCampaignConclusion Pitch Letter
Gardella_PRCampaignConclusion Pitch Letter
 
Código Creativo y Arte de Software | Unidad 1
Código Creativo y Arte de Software | Unidad 1Código Creativo y Arte de Software | Unidad 1
Código Creativo y Arte de Software | Unidad 1
 
Making and Justifying Mathematical Decisions.pdf
Making and Justifying Mathematical Decisions.pdfMaking and Justifying Mathematical Decisions.pdf
Making and Justifying Mathematical Decisions.pdf
 
1029-Danh muc Sach Giao Khoa khoi 6.pdf
1029-Danh muc Sach Giao Khoa khoi  6.pdf1029-Danh muc Sach Giao Khoa khoi  6.pdf
1029-Danh muc Sach Giao Khoa khoi 6.pdf
 
Paris 2024 Olympic Geographies - an activity
Paris 2024 Olympic Geographies - an activityParis 2024 Olympic Geographies - an activity
Paris 2024 Olympic Geographies - an activity
 
Ecological Succession. ( ECOSYSTEM, B. Pharmacy, 1st Year, Sem-II, Environmen...
Ecological Succession. ( ECOSYSTEM, B. Pharmacy, 1st Year, Sem-II, Environmen...Ecological Succession. ( ECOSYSTEM, B. Pharmacy, 1st Year, Sem-II, Environmen...
Ecological Succession. ( ECOSYSTEM, B. Pharmacy, 1st Year, Sem-II, Environmen...
 
Seal of Good Local Governance (SGLG) 2024Final.pptx
Seal of Good Local Governance (SGLG) 2024Final.pptxSeal of Good Local Governance (SGLG) 2024Final.pptx
Seal of Good Local Governance (SGLG) 2024Final.pptx
 
Gardella_Mateo_IntellectualProperty.pdf.
Gardella_Mateo_IntellectualProperty.pdf.Gardella_Mateo_IntellectualProperty.pdf.
Gardella_Mateo_IntellectualProperty.pdf.
 
ICT Role in 21st Century Education & its Challenges.pptx
ICT Role in 21st Century Education & its Challenges.pptxICT Role in 21st Century Education & its Challenges.pptx
ICT Role in 21st Century Education & its Challenges.pptx
 
Activity 01 - Artificial Culture (1).pdf
Activity 01 - Artificial Culture (1).pdfActivity 01 - Artificial Culture (1).pdf
Activity 01 - Artificial Culture (1).pdf
 
APM Welcome, APM North West Network Conference, Synergies Across Sectors
APM Welcome, APM North West Network Conference, Synergies Across SectorsAPM Welcome, APM North West Network Conference, Synergies Across Sectors
APM Welcome, APM North West Network Conference, Synergies Across Sectors
 
This PowerPoint helps students to consider the concept of infinity.
This PowerPoint helps students to consider the concept of infinity.This PowerPoint helps students to consider the concept of infinity.
This PowerPoint helps students to consider the concept of infinity.
 

.NET Fest 2017. Андрей Антиликаторов. Проектирование и разработка приложений на .NET Core

  • 1. Киев 2017 Только реальные кейсы. Только актуальные тренды. Architecture & Development of .NET Core Applications Andrey Antilikatorov
  • 2. Киев 2017Architecture & Development of .NET Core Applications
  • 3. Киев 2017Architecture & Development of .NET Core Applications
  • 4. Киев 2017 Analytics says… .NET Core will be as popular as Ruby and NodeJS. .NET Core and NodeJS will be the most popular platforms for back-end solution compete on the market. In few years .NET Core (not Java) will be number one choice for enterprise-level applications. Architecture & Development of .NET Core Applications .Net Core, Java, NodeJS…
  • 5. Киев 2017Architecture & Development of .NET Core Applications
  • 6. Киев 2017 .NET Core :: Few Things • Many mechanisms such as authentication, security, component interactions now changed comparing to .Net Framework. • Many components and platforms (for example for Desktop applications) are missing. • Nevertheless, .NET Core provides corporate-level software benefits for small projects. Architecture & Development of .NET Core Applications
  • 7. Киев 2017 .Net Core vs .Net Framework • There are cross-platform needs. • Application architecture is based on microservices. • Scalability and high performance are the must. Need to get as much as possible out of the box. • Need to use both Linux and Windows containers. • You are running multiple .NET versions side-by-side. • Opensource framework is required. Architecture & Development of .NET Core Applications • Application currently uses .NET Framework and has strong dependencies on Windows. • Need to use Windows APIs that are not supported by .NET Core. • Need to use third-party libraries or NuGet packages that are not available for .NET Core. • Need tools, technologies or platforms not supported by .NET Core. .NET Core .Net Framework
  • 8. Киев 2017 .Net Core vs .Net Framework Architecture & Development of .NET Core Applications Architecture / App Type Linux containers Windows Containers Microservices on containers .NET Core .NET Core Monolithic app .NET Core .NET Framework, .NET Core Best-in-class performance and scalability .NET Core .NET Core Windows Server legacy app (“brown-field”) migration to containers -- .NET Framework New container-based development (“green-field”) .NET Core .NET Core ASP.NET Core .NET Core .NET Core (recommended) .NET Framework ASP.NET 4 (MVC 5, Web API 2, and Web Forms) -- .NET Framework SignalR services .NET Core .NET Framework .NET Core WCF, WF, and other legacy frameworks Limited WCF support in .NET Core .NET Framework Limited WCF support in .NET Core Consumption of Azure services .NET Core .NET Framework, .NET Core
  • 9. Киев 2017Architecture & Development of .NET Core Applications
  • 10. Киев 2017 Microservices :: Pros and Cons • Each microservice is relatively small—easy to manage and evolve. • It is possible to scale out individual areas of the application. • You can divide the development work between multiple teams. • Issues are more isolated. • You can use the latest technologies. Architecture & Development of .NET Core Applications • Distributed application adds complexity for developers. • Deployment complexity. • Atomic transactions usually are not possible. • Usually increase hardware resource needs. • Communication complexity. • Correct system decomposition complexity. Benefits Disadvantages
  • 11. Киев 2017 .Net Core Apps :: Hosting Architecture & Development of .NET Core Applications Feature App Service Service Fabric Virtual Machine Near-Instant Deployment X X Scale up to larger machines without redeploy X X Instances share content and configuration; no need to redeploy or reconfigure when scaling X X Multiple deployment environments (production, staging) X X Automatic OS update management X Seamless switching between 32/64 bit platforms X Deploy code with Git, FTP X X Deploy code with WebDeploy X X Deploy code with TFS X X X Host web or web service tier of multi-tier architecture X X X Access Azure services like Service Bus, Storage, SQL Database X X X Install any custom MSI X X
  • 12. Киев 2017 High-Level Architecture Architecture & Development of .NET Core Applications User Interface Business Logic Data Access
  • 13. Киев 2017 High-Level Architecture Architecture & Development of .NET Core Applications
  • 14. Киев 2017 Architectural Principles Architecture & Development of .NET Core Applications • SOLID • Separation of Concerns • Explicit Dependencies • Don’t Repeat Yourself • Persistence Ignorance • Bounded Contexts • Command and Query Responsibility Segregation (CQRS) • Domain-Driven Design
  • 15. Киев 2017Architecture & Development of .NET Core Applications
  • 16. Киев 2017 API :: Direct Communication Architecture & Development of .NET Core Applications Back-End Microservice 1 Microservice 2 Microservice N … Client Apps
  • 17. Киев 2017 API :: API Gateway Architecture & Development of .NET Core Applications Back-End Microservice 1 Microservice 2 Microservice N … Client Apps API Gateway
  • 18. Киев 2017 API :: Azure API Management Architecture & Development of .NET Core Applications Back-End Microservice 1 Microservice 2 Microservice N … Client Apps Azure API Management
  • 19. Киев 2017 API :: Swagger • Automatically generates API documentation • Supports Client API generation and discoverability • Provides ability to automatically consume and integrate APIs Architecture & Development of .NET Core Applications
  • 20. Киев 2017 API :: Swagger Configuration Architecture & Development of .NET Core Applications public void ConfigureServices(IServiceCollection services) { // API documentation configuration var swaggerConfigurationInfo = new SwaggerConfigurationInfo() { Title = “My Application User API ", Description = "Service provides all user specific information and management api.", TermsOfService = “None”, SecuritySchemas = new List<SecurityScheme> { // Define the OAuth2.0 scheme (i.e. Implicit Flow), for access_token the user of // Swagger will be redirected to Auth0 Login hosted page to input credentials new OAuth2Scheme { Type = "oauth2", Flow = "implicit", AuthorizationUrl = m_identityProviderSettings.Auth0Authorize.AbsoluteUri, Scopes = new Dictionary<string, string> { { "openid profile email", "Security API" }} }}}; // Add Framework API services(API versioning, swagger, etc.) services.AddApiServices(swaggerConfigurationInfo); }
  • 21. Киев 2017 API :: AutoRest Architecture & Development of .NET Core Applications {autorest-location}autorest -Input http://{webapiname}.azurewebsites.net/swagger/ public async void InvokeTest() { UserApiClient client = new UserApiClient(...); await client.IdentityUserActivatePostAsync( new ActivateUserModel { ExternalReferenceId = "1354687252", Password = "Qwerty123" }); }
  • 22. Киев 2017 API :: Versioning Architecture & Development of .NET Core Applications Back-End V 1.0 API Gateway V N.M … New Client Apps Old Client Apps
  • 23. Киев 2017 API Versioning :: Business Rules • API versioning shall be applicable for any API endpoint. • Old versions has to be supported as long as you agreed with our clients. • Old API versions should work the same way they worked before new version was introduced. • Old APIs shall be marked as deprecated. • All versions has to be testable via unit/integration tests. • Best practice is to apply versioning to external API only. Architecture & Development of .NET Core Applications
  • 24. Киев 2017 API Versioning :: Versioning in URI Architecture & Development of .NET Core Applications • URI Path https://mywebportal.com/api/v2/getUsers • Query String https://mywebportal.com/api/getUsers?v=2.0
  • 25. Киев 2017 Versioning with Headers Architecture & Development of .NET Core Applications GET /api/camps HTTP/1.1 Host: localhost:43333 Content-Type: application/json X-version: 2.0 GET /api/camps HTTP/1.1 Host: localhost:43333 Content-Type: application/json Accept: application/json;version=2.0
  • 26. Киев 2017 Versioning with Content Type Architecture & Development of .NET Core Applications GET /api/camps HTTP/1.1 Host: localhost:43333 Content-Type: application/vnd.myapplication.v1+json Accept: application/vnd.myapplication.v1+json
  • 27. Киев 2017 Versioning in Action Architecture & Development of .NET Core Applications • Use Microsoft ASP.NET API Versioning NuGet package • Each controller should be marked with API version: • Old versions of API controllers should be marked as deprecated: • Each API version should be stored in Version folder • Each controller should be placed in specific namespace • Unit and integration tests should be also stored separately
  • 28. Киев 2017Architecture & Development of .NET Core Applications
  • 29. Киев 2017 EF Core :: Resilient Connections Architecture & Development of .NET Core Applications public void ConfigureServices(IServiceCollection services) { services.AddDbContext<DbContext>(options => { options.UseSqlServer(Configuration["ConnectionString"], sqlServerOptionsAction: sqlOptions => { sqlOptions.EnableRetryOnFailure( maxRetryCount: 5, maxRetryDelay: TimeSpan.FromSeconds(10), errorNumbersToAdd: null); }); }); }
  • 30. Киев 2017 Resiliency and Transactions Architecture & Development of .NET Core Applications System.InvalidOperationException: The configured execution strategy 'SqlServerRetryingExecutionStrategy' does not support user initiated transactions. Use the execution strategy returned by 'DbContext.Database.CreateExecutionStrategy()' to execute all the operations in the transaction as a retriable unit. // Use of resiliency strategy within an explicit transaction var strategy = dbContext.Database.CreateExecutionStrategy(); await strategy.ExecuteAsync(async () => { using (var transaction = dbContext.Database.BeginTransaction()) { dbContext.Users.Update(user); await dbContext.SaveChangesAsync(); await eventLogService.SaveEventAsync(userChangedEvent); transaction.Commit(); } }); SOLUTION
  • 31. Киев 2017 EF Core :: Seeding Architecture & Development of .NET Core Applications public class Startup { // Other Startup code... public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory) { // Other Configure code... // Seed data through our custom class DatabaseSeed.SeedAsync(app).Wait(); // Other Configure code... } }
  • 32. Киев 2017 EF Core :: Seeding Architecture & Development of .NET Core Applications public class DatabaseSeed { public static async Task SeedAsync(IApplicationBuilder applicationBuilder) { var context = (AppDbContext)applicationBuilder. ApplicationServices.GetService(typeof(AppDbContext)); using (context) { context.Database.Migrate(); if (!context.Users.Any()) { context.Users.AddRange(...); await context.SaveChangesAsync(); } if (!context.Departments.Any()) { context.Departments.AddRange(...); await context.SaveChangesAsync(); } } } }
  • 33. Киев 2017 EF Core :: Seeding Improvement Architecture & Development of .NET Core Applications • Use standard migration mechanism. • Create base class(es) for seed migrations. • Specify data context via attribute.
  • 34. Киев 2017 EF Core :: Seeding Improvement Architecture & Development of .NET Core Applications /// <summary> /// Seed Roles, RolesClaims and UserRoles /// </summary> [DbContext(typeof(MyContext))] [Migration("SEED_201709121256_AddRolesClaimsUserRoles")] public class AddRolesClaimsUserRoles : EmptyDbSeedMigration { /// <summary> /// <see cref="SeedMigrationBase.PopulateData"/> /// </summary> protected override void PopulateData() { ... } }
  • 35. Киев 2017 EF Core :: InMemory Databases Architecture & Development of .NET Core Applications public class Startup { // Other Startup code ... public void ConfigureServices(IServiceCollection services) { services.AddSingleton<IConfiguration>(Configuration); // DbContext using an InMemory database provider services.AddDbContext<AppDbContext>(opt => opt.UseInMemoryDatabase()); } // Other Startup code ... }
  • 36. Киев 2017Architecture & Development of .NET Core Applications
  • 37. Киев 2017 .NET Core Apps :: Health Cheks Architecture & Development of .NET Core Applications • https://github.com/aspnet/HealthChecks • src/common • src/Microsoft.AspNetCore.HealthChecks • src/Microsoft.Extensions.HealthChecks • src/Microsoft.Extensions.HealthChecks.SqlServer • src/Microsoft.Extensions.HealthChecks.AzureStorage
  • 38. Киев 2017 .NET Core Apps :: Health Checks Architecture & Development of .NET Core Applications public class Program { public static void Main(string[] args) { var host = new WebHostBuilder() .UseKestrel() .UseHealthChecks("/hc) .UseContentRoot(Directory.GetCurrentDirectory()) .UseIISIntegration() .UseStartup<Startup>() .Build(); host.Run(); } }
  • 39. Киев 2017 .NET Core Apps :: Health Checks Architecture & Development of .NET Core Applications public class Startup { public void ConfigureServices(IServiceCollection services) { // Add health checks here. services.AddHealthChecks(checks => { checks.AddUrlCheck(“URL Check" ) .AddHealthCheckGroup("servers", group => group .AddUrlCheck("https://myserviceurl::8010") .AddUrlCheck("https://tmysecondserviceurl:7777")) } services.AddMvc(); } }
  • 40. Киев 2017 .NET Core Apps :: Health Checks Architecture & Development of .NET Core Applications checks.AddSqlCheck("MyDatabase", Configuration["ConnectionString"]); checks.AddAzureBlobStorageCheck("accountName", "accountKey"); checks.AddAzureBlobStorageCheck("accountName", "accountKey", "containerName"); checks.AddAzureTableStorageCheck("accountName", "accountKey"); checks.AddAzureTableStorageCheck("accountName", "accountKey", "tableName"); checks.AddAzureFileStorageCheck("accountName", "accountKey"); checks.AddAzureFileStorageCheck("accountName", "accountKey", "shareName"); checks.AddAzureQueueStorageCheck("accountName", "accountKey"); checks.AddAzureQueueStorageCheck("accountName", "accountKey", "queueName");
  • 41. Киев 2017 .NET Core Apps :: Health Checks Architecture & Development of .NET Core Applications checks.AddHealthCheckGroup("memory", group => group.AddPrivateMemorySizeCheck(1) .AddVirtualMemorySizeCheck(2) .AddWorkingSetCheck(1), CheckStatus.Unhealthy) .AddCheck("thrower", Func<IHealthCheckResult>) (() => { throw new DivideByZeroException(); })) .AddCheck("long-running", async cancellationToken => { await Task.Delay(10000, cancellationToken); return HealthCheckResult.Healthy("I ran too long"); }) .AddCheck<CustomHealthCheck>("custom");
  • 42. Киев 2017 Service Fabric Health Monitoring Architecture & Development of .NET Core Applications fabric:/System
  • 43. Киев 2017 Service Fabric Health Hierarchy Architecture & Development of .NET Core Applications Cluster Nodes Applications Deployed Applications Deployed Service Packages Services Partitions Replicas
  • 44. Киев 2017 Cluster Health Policy Architecture & Development of .NET Core Applications <FabricSettings> <Section Name="HealthManager/ClusterHealthPolicy"> <Parameter Name="ConsiderWarningAsError" Value="False" /> <Parameter Name="MaxPercentUnhealthyApplications" Value=“10" /> <Parameter Name="MaxPercentUnhealthyNodes" Value=“10" /> <Parameter Name="ApplicationTypeMaxPercentUnhealthyApplications- YourApplicationType" Value="0" /> </Section> </FabricSettings> • Consider Warning as Error • Max Percent Unhealthy Applications • Max percent Unhealthy Nodes • Application Type Health Policy Map
  • 45. Киев 2017 Service Fabric :: Health Reports Architecture & Development of .NET Core Applications private static Uri ApplicationName = new Uri("fabric:/MyApplication"); private static string ServiceManifestName = “MyApplication.Service"; private static string NodeName = FabricRuntime.GetNodeContext().NodeName; private static Timer ReportTimer = new Timer(new TimerCallback(SendReport), null, 3000, 3000); private static FabricClient Client = new FabricClient(new FabricClientSettings() { HealthOperationTimeout = TimeSpan.FromSeconds(120), HealthReportSendInterval = TimeSpan.FromSeconds(0), HealthReportRetrySendInterval = TimeSpan.FromSeconds(40)}); public static void SendReport(object obj) { // Test whether the resource can be accessed from the node HealthState healthState = TestConnectivityToExternalResource(); var deployedServicePackageHealthReport = new DeployedServicePackageHealthReport( ApplicationName, ServiceManifestName, NodeName, new HealthInformation("ExternalSourceWatcher", "Connectivity", healthState)); Client.HealthManager.ReportHealth(deployedServicePackageHealthReport); }
  • 46. Киев 2017 Service Fabric + App Insights Architecture & Development of .NET Core Applications https://github.com/DeHeerSoftware/Azure-Service-Fabric-Logging-And-Monitoring Serilog.Sinks.ApplicationInsights
  • 47. Киев 2017Architecture & Development of .NET Core Applications Thank you!