🎓 Program Overview
The .NET and Angular combination is the dominant full-stack pairing in enterprise software. Banks, telecoms, government systems, healthcare platforms, and large-scale SaaS products across the globe run on this stack — and for good reason. ASP.NET Core is the fastest mainstream web framework on any platform, consistently topping the TechEmpower benchmarks. Angular is the framework of choice for large engineering teams that need strict conventions, strong typing, and long-term maintainability at scale.
This course is built on the latest releases: .NET 10 with Minimal APIs, Entity Framework Core 10, and Angular 21 with the Signals architecture. It is not a tutorial course — it is an engineering course. You will build a real enterprise application from architecture to deployment, applying Clean Architecture patterns, domain-driven design principles, and the testing discipline that enterprise teams require.
💡 Why ASP.NET Core + Angular in 2026
📚 Core Program — 5 Weeks
This phase covers the C# language features and .NET platform capabilities that modern enterprise applications depend on — the parts that separate a .NET engineer from someone who learned C# from a beginners' tutorial.
- .NET 10 platform overview: the runtime, SDK, NuGet ecosystem, and the dotnet CLI
- C# modern language features: records, init-only properties, with expressions, and positional records for immutable domain models
- Pattern matching in depth: switch expressions, property patterns, list patterns, and positional patterns
- Nullable reference types: enabling NRT project-wide, null analysis, and eliminating NullReferenceException at compile time
- LINQ in depth: deferred execution, IQueryable vs IEnumerable, custom LINQ operators, and query expression syntax vs method syntax
- async/await in depth: Task, ValueTask, ConfigureAwait, cancellation tokens, and avoiding deadlocks and fire-and-forget antipatterns
- Generics and constraints: writing reusable, type-safe generic classes and methods
- Interfaces and dependency injection: designing against abstractions — ISP and DIP principles in practice
- C# source generators: how they work and using Mapperly and StronglyTypedId to eliminate boilerplate
- Span<T> and Memory<T>: zero-allocation buffer manipulation for performance-critical paths
- Global usings, file-scoped namespaces, and primary constructors: modern C# project ergonomics
- xUnit testing: test project structure, Facts, Theories, fixtures, and test data builders
- FluentAssertions: readable, expressive test assertions
- Bogus: generating realistic fake data for tests without manual fixture creation
ASP.NET Core supports two API styles — Minimal APIs (the modern, low-ceremony approach) and Controller-based Web API (the classic MVC-style approach dominant in enterprise codebases). Both are covered — you will know when to use each and how to work in either.
- Minimal API architecture: WebApplication, route registration, endpoint filters, and the request pipeline
- Route groups: organising endpoints into logical groups with shared middleware and prefixes
- Parameter binding: route values, query strings, request body, headers, and services — automatic and custom binding
- TypedResults: strongly-typed result helpers for consistent, documented response types
- Endpoint filters: cross-cutting concerns (validation, logging, auth checks) without middleware overhead
- IEndpointRouteBuilder extensions: organising endpoints into feature modules without controllers
- ApiController attribute, model binding, and model validation with DataAnnotations and FluentValidation
- Action filters: IActionFilter, IAsyncActionFilter, and the filter pipeline execution order
- IExceptionHandler and ProblemDetails: global exception handling with RFC 7807-compliant error responses
- API versioning with Asp.Versioning: URL, header, and query string versioning strategies
- Middleware pipeline: request delegate chain, built-in middleware, writing custom middleware
- Dependency injection: service lifetimes (Singleton, Scoped, Transient), keyed services in .NET 8+, and service validation
- Options pattern: strongly-typed configuration with IOptions, IOptionsSnapshot, and IOptionsMonitor
- FluentValidation: complex rules, cross-field validation, and integration with the MVC pipeline
- Authentication and authorisation: JWT Bearer, cookie auth, and the ASP.NET Core policy system
- ASP.NET Core Identity: user management, password hashing, claims-based identity, roles, and refresh tokens
- Rate limiting: fixed window, sliding window, token bucket, and concurrency limiters (production-ready in .NET 10)
- Response caching and output caching: HTTP cache headers and the output cache middleware
- Background services: IHostedService and BackgroundService for scheduled and long-running tasks
- Scalar / Swagger UI: interactive API documentation from OpenAPI specs
- HttpClient and IHttpClientFactory: consuming external APIs with Polly resilience and typed clients
- SignalR: real-time bidirectional communication — hubs, groups, and streaming to Angular clients
- CORS configuration: policy-based CORS for Angular SPA clients
EF Core is the standard ORM for .NET applications. This phase covers it thoroughly — from basics to the advanced patterns enterprise applications require — alongside the cases where raw SQL or Dapper is the better tool.
- EF Core architecture: DbContext, DbSet, change tracking, and the unit of work pattern
- Code-first modelling: entity classes, data annotations, and the Fluent API for full configuration control
- Relationships: one-to-one, one-to-many, many-to-many, owned entities, and table splitting
- Migrations: Add-Migration, Update-Database, migration bundles for production deployment
- Querying: LINQ to SQL translation, projections with Select, filtering, ordering, and pagination
- Eager loading, explicit loading, and lazy loading: choosing the right strategy to avoid N+1 problems
- Raw SQL with EF Core: FromSqlRaw, ExecuteSqlRaw, and when raw SQL is the right answer
- Dapper alongside EF Core: using Dapper for complex read queries while keeping EF Core for writes
- EF Core interceptors: auditing, soft delete, and multi-tenancy via SaveChanges interception
- Value converters and value objects: mapping domain value objects (Money, Email) to database columns
- Concurrency handling: optimistic concurrency with row version tokens and DbUpdateConcurrencyException
- Multi-tenancy patterns: shared database with tenant discriminator, separate schema, separate database
- EF Core performance: AsNoTracking for read-only queries and query splitting
- Repository and Unit of Work patterns: when they add value over direct DbContext access
- PostgreSQL with Npgsql: JSON columns, array types, full-text search, and PostgreSQL-specific features
- Compiled queries: eliminating query compilation overhead for frequently executed queries
Architecture is where enterprise .NET development is won or lost. This phase covers the structural patterns that make large ASP.NET Core applications maintainable, testable, and evolvable over years — not just weeks.
- Clean Architecture: the dependency rule, layer responsibilities (Domain, Application, Infrastructure, Presentation), and why it matters for long-lived codebases
- Domain layer: entities, value objects, domain events, aggregates, and domain services — business logic with no external dependencies
- Application layer: use cases as command and query handlers, the application service pattern, and DTOs
- CQRS with MediatR: separating commands (writes) from queries (reads) and pipeline behaviours as cross-cutting middleware
- MediatR pipeline behaviours: validation (FluentValidation), logging, caching, and performance monitoring as reusable pipeline steps
- Infrastructure layer: EF Core repositories, external service clients, email providers, and file storage — all behind interfaces defined in Application
- Presentation layer: Minimal API or Controller endpoints as thin adapters that translate HTTP to application commands
- Domain events and eventual consistency: publishing and handling domain events with MediatR notifications
- Result pattern: returning success/failure from use cases without exceptions — using ErrorOr or FluentResults
- Specification pattern: encapsulating complex query logic as reusable, composable specification objects
- Outbox pattern: reliably publishing integration events after database commits using a transactional outbox table
- Vertical slice architecture as an alternative: feature folders over layers — trade-offs and when it is the better choice
- Architecture fitness functions: automated tests enforcing architectural boundaries with NetArchTest
Angular 21 represents the most significant architectural shift in Angular's history. Signals-based reactivity replaces Zone.js and the RxJS-heavy change detection with a simpler, faster, and more predictable reactive primitive. This phase teaches Angular the modern way — Signals first.
- Angular 21 architecture: standalone components (no NgModules), the new application builder (esbuild), and developer experience improvements
- Signals: signal(), computed(), effect(), and the reactivity model — how Signals replace OnPush change detection and most RxJS in component logic
- Signal-based inputs and outputs: input(), output(), model() — the new component API replacing @Input and @Output decorators
- Signal queries: viewChild(), viewChildren(), contentChild(), contentChildren() — Signals replacement for @ViewChild
- Control flow syntax: @if, @for, @switch — the new template syntax replacing *ngIf and *ngFor structural directives
- Deferred loading (@defer): lazy loading template sections with @placeholder, @loading, and @error blocks
- Standalone components: building Angular apps without NgModules — component imports, providers, and bootstrapping
- Dependency injection in standalone: provideRouter, provideHttpClient, provideAnimations, and component-level providers
- Angular Router with standalone: provideRouter, loadComponent, and loadChildren for lazy loading
- Route guards: CanActivateFn, CanDeactivateFn, and CanMatchFn as functional guards
- Route resolvers: pre-fetching data before component activation with functional resolvers
- Router state and signals: reading route params and query params as Signals with toSignal utility
- Component state with Signals: replacing local component state management patterns
- Service-based state: building lightweight global stores using signal() and computed() in injectable services
- NgRx Signals Store: the official NgRx Signals-based state management solution — defining state, computed values, and updaters
- RxJS interop: toSignal() and toObservable() for bridging Signals and RxJS worlds
- RxJS where it belongs: HTTP requests, WebSocket streams, and complex async event sequences
- Reactive forms with strict typing: FormGroup, FormControl, FormArray with full TypeScript inference
- Typed form validators: built-in, custom, and async validators against the ASP.NET Core API
- HttpClient with functional interceptors: auth token injection, error handling, and loading state tracking
- Angular Material 18: components, Material Design 3 theming, and consistent enterprise UI
- TailwindCSS with Angular: utility-first styling alongside Angular Material
- CDK (Component Dev Kit): drag-and-drop, virtual scrolling, overlay, and accessibility utilities
- Standalone pipes and directives: reusable, tree-shakeable UI utilities
- SignalR client in Angular: connecting to the ASP.NET Core SignalR hub — real-time notifications and live dashboards
- Component testing with TestBed and Angular Testing Library: Signals-based components, accessible queries, and interaction testing
The patterns and infrastructure that enterprise .NET applications require in production — messaging, caching, background processing, observability, and the security hardening that regulated industries demand.
- MassTransit: the standard .NET message bus abstraction — producers, consumers, sagas, and transport independence
- MassTransit with RabbitMQ: configuring exchanges, queues, and consumer concurrency
- MassTransit with Azure Service Bus and AWS SQS: cloud-native transport options
- Saga pattern with MassTransit: managing long-running distributed workflows with state machine sagas
- Hangfire: background job processing — fire-and-forget, delayed, recurring, and continuations with persistence
- Quartz.NET: cron-based job scheduling for complex scheduling requirements
- IMemoryCache: in-process caching with expiration policies
- IDistributedCache with Redis: distributed caching across multiple application instances
- HybridCache (.NET 10): combining in-process and distributed cache with stampede protection — stable in .NET 10
- Output caching with Redis: caching entire HTTP responses at the middleware level
- FusionCache: advanced distributed caching with fail-safe, soft timeout, and background refresh
- Structured logging with Serilog: sinks (console, file, Seq, Elasticsearch), enrichers, and log context
- OpenTelemetry .NET: automatic and manual instrumentation — traces, metrics, and logs in one SDK
- Distributed tracing: propagating trace context across HTTP calls, EF Core queries, and message bus operations
- .NET Aspire: the new cloud-ready framework for distributed .NET apps — service discovery, health checks, and the Aspire dashboard
- Health checks: ASP.NET Core health check API, EF Core database health, Redis health, and Kubernetes probe integration
- ASP.NET Core Data Protection: key management, key ring rotation, and protecting tokens at rest
- OWASP Top 10 for .NET: SQL injection prevention with EF Core, XSS, CSRF, IDOR, and insecure deserialisation
- Security headers: Content-Security-Policy, HSTS, X-Frame-Options via NWebSec or custom middleware
- Secrets management: User Secrets for development, Azure Key Vault / AWS Secrets Manager integration
- Audit logging: immutable audit trail with EF Core interceptors — who did what and when
- Containerising ASP.NET Core: multi-stage Dockerfiles, .NET's built-in container publish, and minimal base images
- Docker Compose: running the full stack locally — ASP.NET Core, Angular (Nginx), PostgreSQL, Redis, and RabbitMQ
- GitHub Actions CI/CD: building, testing, containerising, and deploying ASP.NET Core and Angular in a single pipeline
🔌 Optional Add-On Modules
Five add-on modules, 2 weeks each — additional fee per module. Take individually or combine. All require the core program as prerequisite.
Azure is the natural cloud for .NET applications — Microsoft has deep integration between ASP.NET Core, Azure services, and the .NET SDK. Full Azure deployment story from container hosting to managed identity to the complete observability stack.
- Azure Container Apps: the recommended hosting platform for ASP.NET Core — serverless containers with Dapr sidecar support
- Azure App Service: PaaS hosting — deployment slots, auto-scaling, and blue/green deployments
- Azure SQL Database: managed SQL Server — connection resiliency with EF Core, elastic pools, and geo-replication
- Azure Database for PostgreSQL: managed PostgreSQL for open-source database preference
- Azure Cache for Redis: managed Redis for distributed cache and session storage
- Azure Service Bus: MassTransit with Azure Service Bus — queues, topics, and sessions for ordered processing
- Azure Storage (Blob, Queue): file storage and background job queues from ASP.NET Core
- Azure Key Vault with Managed Identity: accessing secrets without storing credentials — zero-secret deployments
- Microsoft Entra ID: enterprise authentication — OAuth2/OIDC with ASP.NET Core, app registrations, and B2C for customer-facing apps
- Azure API Management: API gateway for ASP.NET Core — throttling, transformation, and developer portal
- Azure Front Door and CDN: global load balancing and static asset delivery for Angular SPA
- Infrastructure as Code with Bicep: provisioning the entire stack declaratively
- Azure DevOps Pipelines: enterprise CI/CD for .NET — build, test, SAST scanning, and multi-environment deployment
- Azure Monitor and Application Insights: distributed traces, custom metrics, live metrics stream, and smart detection
- .NET Aspire on Azure: deploying an Aspire application to Azure Container Apps with Aspire Azure hosting libraries
Many enterprise .NET teams run on AWS — particularly those that have standardised on AWS across multiple technology stacks. Same depth as the Azure track, covering every major AWS deployment option for ASP.NET Core.
- AWS Elastic Beanstalk for .NET: managed deployment for ASP.NET Core — the simplest AWS deployment path
- ECS Fargate: containerised ASP.NET Core — task definitions, service auto-scaling, and rolling deployments
- AWS Lambda with .NET: the aws-lambda-dotnet runtime, Minimal API on Lambda via Lambda Web Adapter, and SnapStart
- AWS RDS (PostgreSQL and SQL Server): managed databases — EF Core connection resiliency and RDS Proxy for Lambda
- ElastiCache for Redis: managed Redis for ASP.NET Core distributed caching
- Amazon SQS and SNS: MassTransit with SQS transport — decoupled messaging for ASP.NET Core microservices
- Amazon MQ (RabbitMQ): managed RabbitMQ for teams using MassTransit with RabbitMQ
- AWS S3: file storage from ASP.NET Core using the AWS SDK for .NET — presigned URLs and multipart uploads
- AWS Secrets Manager and Parameter Store: secrets injection into the ASP.NET Core configuration pipeline
- Amazon Cognito: user pools and identity pools for ASP.NET Core — OAuth2/OIDC integration
- Infrastructure as Code with AWS CDK (C#): writing infrastructure in C# — the most natural IaC experience for .NET teams
- GitHub Actions for AWS: CI/CD pipeline — build, test, push to ECR, deploy to ECS/Lambda
- CloudWatch with structured logs: ingesting Serilog output, custom metrics from OpenTelemetry
- AWS X-Ray: distributed tracing for ASP.NET Core — integrating with the OpenTelemetry .NET SDK
Enterprise .NET systems increasingly run as collections of services rather than monoliths. Patterns, communication protocols, and infrastructure for building a production .NET microservices system.
- Microservice decomposition: identifying service boundaries from a domain model — bounded contexts and the anti-corruption layer
- gRPC in .NET: protobuf service definitions, generated C# clients and servers, and streaming patterns
- gRPC-JSON transcoding: exposing gRPC services as REST/JSON endpoints for browser clients
- YARP (Yet Another Reverse Proxy): Microsoft's .NET-native reverse proxy and API gateway
- Service discovery: .NET Aspire service discovery and Consul integration
- Dapr (Distributed Application Runtime): sidecar-based service invocation, pub/sub, state management, and bindings — infrastructure-agnostic distributed system building blocks for .NET
- Event-driven architecture with MassTransit Sagas: modelling complex business processes as state machine sagas
- Event sourcing with Marten: PostgreSQL-backed event store — appending events, projecting read models
- Apache Kafka with Confluent .NET client: high-throughput event streaming — producers, consumers, and exactly-once semantics
- Transactional outbox with MassTransit: guaranteed event publishing without dual-write inconsistency
- Distributed caching with Redis: shared cache across service instances with cache invalidation
- Testing microservices: contract testing with PactNet, integration testing with testcontainers-dotnet
Microsoft's Semantic Kernel is the official AI SDK for .NET — positioning ASP.NET Core as a first-class platform for building enterprise AI applications. Integrating AI capabilities into production .NET systems with Microsoft's tooling and the broader LLM ecosystem.
- Microsoft Semantic Kernel: the official .NET SDK for LLM integration — kernels, plugins, functions, and planners
- Semantic Kernel with OpenAI and Azure OpenAI: connecting to GPT-4o via public API and Azure-hosted endpoints
- Semantic Kernel with Anthropic Claude: using the Claude connector for Semantic Kernel
- Kernel plugins: wrapping C# functions as AI-callable tools — native functions and semantic functions
- Semantic Kernel planners: automatic function orchestration — letting the LLM decide which plugins to call
- Chat completion services: building multi-turn conversational interfaces in ASP.NET Core
- Streaming completions: token-by-token streaming from Semantic Kernel to SignalR clients in Angular
- Embeddings with Semantic Kernel: generating embeddings and storing in PostgreSQL with pgvector
- Semantic Kernel Memory: the abstraction layer over vector databases — pgvector, Azure AI Search, and Qdrant connectors
- RAG pipelines in C#: document ingestion, chunking, embedding, vector storage, and retrieval in ASP.NET Core
- Azure AI Search: enterprise-grade vector and hybrid search — the recommended vector database for Azure .NET applications
- Microsoft.Extensions.AI: the unified AI abstraction layer stable in .NET 10 — provider-agnostic AI client interfaces
- Prompt management in C#: versioned prompt templates with Semantic Kernel's YAML prompt format
- AI safety and content filtering: Azure OpenAI content filters and application-level guardrails in ASP.NET Core
- ML.NET: training and serving custom machine learning models within the .NET ecosystem — without Python
For teams where Next.js is preferred over Angular, or students who want to offer both frontend options to clients — this add-on replaces the Angular frontend with a full Next.js 15 implementation consuming the same ASP.NET Core API.
- Next.js 15 App Router: server components, client components, streaming, and layouts
- TypeScript API client generation from the ASP.NET Core OpenAPI spec using openapi-typescript
- Authentication with NextAuth.js v5: integrating with ASP.NET Core Identity JWT tokens and cookie auth
- TanStack Query: data fetching, caching, and optimistic updates against the ASP.NET Core API
- SignalR client in Next.js: real-time updates from ASP.NET Core SignalR hubs
- Form handling: React Hook Form with Zod, mirroring FluentValidation rules from the backend
- Tailwind CSS v4 and shadcn/ui: building enterprise UI components with accessibility built in
- Next.js deployment: Vercel with environment-based configuration for the ASP.NET Core API URL
📅 Schedule & Timings
Weekday Groups
Weekend Groups
📍 Location: In-house training, F-11 Markaz, Islamabad · 📱 Online option available for out-of-city participants