WE ARE THINKTECTURE

In-Depth Tech Knowledge

We work with developers and architects and help them create impressive Angular apps with .NET Core backends, running on Azure or on their premises.

How may we help you with your challenging, complex, and critical projects?

On-The-Job Collaboration

Our goal is to help you become better developers and deliver your projects more efficiently. There might be no better way to learn than working together on your code.

Code and Architecture Reviews

We can be your sounding board to discuss critical ideas or to review the code of critical components before you base your large-scale development on them.

Architecture Consulting

We’ve been developing highly interactive browser-based applications, their backends and APIs for quite a while. We’d love to share the lessons we’ve learned with you.

WHAT YOU GET

Technology Focus

Angular Performance Optimization

Blazor & SPA-Integration

Optimized 2D and 3D Visualization

.NET Core & Entity Framework Performance

CONVERSATIONS WITH OUR EXPERTS – IN OUR FREE WEBINARS

Upcoming Webinars

There are currently no english webinars scheduled.

Our Upcoming German Webinars

Cloud-Native: Hosting – On-Prem oder Public-Cloud? Kubernetes, PaaS oder Serverless?

Thorsten Hans | December 14, 2022 | 10:30 Uhr

Cloud-Native: Vom Docker Image über Kubernetes-Manifeste hin zu Helm Charts

Thorsten Hans | January 11, 2023 | 10:30 Uhr

Cloud-Native: Endlich (Voll)Automatisierung

Thorsten Hans | January 25, 2023 | 10:30 Uhr
WHAT WE’VE WRITTEN

Featured Articles

.NET
Blazor WebAssembly in Practice: Maturity, Success Factors, Showstoppers
ASP.NET Core Blazor is Microsoft's framework for implementing web-based applications, aimed at developers with knowledge of .NET and C#. It exists alongside other frameworks such as ASP.NET Core MVC. About two and a half years after the release of Blazor WebAssembly and based on our experiences from many customer projects at Thinktecture, we want to have a close look at the following questions: What is the current state of the framework? How can you successfully use Blazor? And where does it have limitations?
24.11.2022
.NET
Blazor WebAssembly: Debugging gRPC-Web with Custom Chrome Developer Tools
If you are working with Blazor, gRPC is a big issue for transferring data from APIs to clients. One issue of developing with gRPC-Web is debugging the transmitted data because the data is in an efficient binary message format. In this article, I will show you how to solve this problem with the help of my NuGet.
17.11.2022
Angular
Angular OnPush – A Change Detection Strategy Revealing Mistakes in Your Code
When optimizing the performance of Angular applications, many developers directly associate Angular's OnPush change detection strategy with it. But, if you don't know exactly how OnPush works under the hood, it will quickly teach you what you are doing wrong the hard way. In this article, we'll look deeper into how the OnPush strategy affects Angular's change detection mechanism and which pitfalls we should avoid at all costs.
24.10.2022
.NET
Entity Framework Core: User-defined Fields and Tables
The requirement to store additional fields, unknown at development time, in a relational database is not new. Nonetheless, none of the projects I know of are willing to change the database structure at runtime. What if there is a project which needs dynamically created fields and doesn't want or cannot use entity–attribute–value model or switch to No-SQL databases?
20.09.2022
.NET
Incremental Roslyn Source Generators in .NET 6: Adapt Code Generation Based on Project Dependencies – Part 5
The Roslyn Source Generator, implemented in the previous articles of the series, emits some C# code without looking at the dependencies of the current .NET (Core) project. In this article our DemoSourceGenerator should implement a JsonConverter, but only if the corresponding library (e.g. Newtonsoft.Json) is referenced by the project.
08.07.2022
Angular
Configuring Lazy Loaded Angular Modules
Making our Angular modules configurable is an important step in building a reusable architecture. Having used Angular for a while you might be familiar with the commonly used forRoot() and forChild() functions, that some modules provide you with. But what is the best way to provide configuration in these cases?
16.06.2022