our - decision tech · -dependency injection-tag helper-app engine “greenfield warfare”...
TRANSCRIPT
OUR
BRANDS
TECHOUR
STACK
decision.tech/vacancies
Alex SloatDevelopment Manager@alexsloat
“The March To Victory”
“The March To Victory”Hopes
&
Dreams
VICTORY!
“The March To Victory”2016 2018
NOW
“Greenfield Warfare”
Phone recycling platform
in .Net Core 1.1
“The Final Battle”
Dot Net Core in a
brown field project
2017
“There has to
be a better way”
.Net codebase
The status-quo
“The Recon Mission”
.NET on Google Cloud
Platform
“The mini
mutiny”
Third party vs
roll your own
“Logistics Unit”
Resilience in
underlinable
external services
“Secret
weapons”
- Webpack
- Dependency
injection
- Tag helper
- App Engine
“The Recon Mission”
Running .NET in production
on Google Cloud Platform
“The Recon Mission”The DecisionTech Stack 2016
But can’t you run .net on a Linux server?
“The Recon Mission”
“The Recon Mission”
Running .NET in production
on Google Cloud Platform
“The March To Victory”2016 2018
NOW
“The Final Battle”
Dot Net Core in a
brown field project
2017
“Greenfield Warfare”
Phone recycling platform
in .Net Core 1.1
“There has to
be a better way”
.Net codebase
The status-quo
“The Recon Mission”
.NET on Google Cloud
Platform
“The mini
mutiny”
Third party vs
roll your own
“Logistics Unit”
Resilience in
underlinable
external services
“Secret
weapons”
- Webpack
- Dependency
injection
- Tag helper
- App Engine
“Greenfield Warfare”Greenfield project:
2017 Recycling PHP Rebuild
“Greenfield Warfare”The Enemy
“Greenfield Warfare”Introducing .NET Core to the Stack
“Logistics Unit”Resilience against underlinable external services
MVC Application
Umbraco client
“Logistics Unit”Microservices
Raven client
MVC Application
Content API Deals API
“Logistics Unit”Microservices
“Logistics Unit”
Resilience in underlinable external services
“The Mini Mutiny”Open Source vs Roll-Your-Own
MVC Application and APIs
CompareMyMobile.com SellMyMobile.com
“The Mini Mutiny”Open Source vs Roll-Your-Own
“The Mini Mutiny”Multi-Tenancy with
“The Mini Mutiny”Multi-Tenancy with
“The Mini Mutiny”Multi-Tenancy with
“The Mini Mutiny”
Open Source vs Roll-Your-Own
“Secret Weapons”
• Ability to deal with all static assets
• Rich Plugins
• Multiple configuration support
“Secret Weapons”The battle for Faster pages
“Secret Weapons”The battle for Faster pages
“Secret Weapons”The battle for Faster pages
“Secret Weapons”Dependency Injection out of the Box
• Simplistic DI
• Razor View support
• SOLID code with little effort
“Secret Weapons”
public void ConfigureServices(IServiceCollection services){
services.AddTransient<IRepository, ActualRepository>();services.AddScoped<IRepository, ActualRepository>();services.AddSingleton<IRepository, ActualRepository>();
}
Dependency Injection out of the Box
“Secret Weapons”Tag Helpers
• Accessible for all developers
• Intelli-sense support
• Easy to reuse across a solution
“Secret Weapons”Tag Helpers
“Secret Weapons”DotNet Core and App Engine
“Secret Weapons”DotNet Core and App Engine
“Secret Weapons”DotNet Core and App Engine
“Greenfield Warfare”Victory!
“The March To Victory”2016 2018
NOW
2017
“Greenfield Warfare”
Phone recycling platform
in .Net Core 1.1
“The Final Battle”
Dot Net Core in a
brown field project
“There has to
be a better way”
.Net codebase
The status-quo
“The Recon Mission”
.NET on Google Cloud
Platform
“The mini
mutiny”
Third party vs
roll your own
“Logistics Unit”
Resilience in
underlinable
external services
“Secret
weapons”
- Webpack
- Dependency
injection
- Tag helper
- App Engine
“The Final Battle”Brownfield Project:
Migrating The Existing Full .NET Applicationto DotNet Core
“The Final Battle”When two worlds collide
MVC Application
/guides
/news
/ask-our-expert
….
www.broadbandchoices.co.uk
Amazon
Route 53
Classic
Load
Balancer
EC2 Instances
Legacy .NET
Stack
www.broadbandchoices.co.uk
Amazon
Route 53
Application
Load
Balancer
Classic
Load
Balancer
/guides
/news
/ask-our-expert
EC2 Instances
.NET Core Stack
Legacy .NET
StackDefault routes
“The Final Battle”When two worlds collide
“The Final Battle”When two worlds collide
if (_siteConfig.Feature.Content != null){ app.UseContentApi();routes.UseContentRouting();
}
app.MapWhen(s => IsALegacyPath(s, serviceProvider, routes), builder => builder.UseMiddleware<ProxyMiddleware>(GetOptions()));
Amazon
Route 53
Application
Load
Balancer
Classic
Load
Balancer
EC2 Instances
.NET Core Stack
Legacy .NET
Stack
• Feedback as you go
• Reduced risk
• Keeping delivery cadence
“The Final Battle”Advantages of the phased approach
• Temporary technical debt
• Perceived slower progress
“The Final Battle”Disadvantages of the phased approach
“The Final Battle”Migrating The Existing Full .NET Application
to DotNet Core
VICTORY!
Learnings from .NET Core
• Flexible request processing pipelines
• Alpha or Beta software might be needed
• Contribute to the OSS community
• Does all your tooling
support .NET Core
• Don’t do a full rewrite
Any Questions?
Thanks for coming
https://decision.tech/vacancies