New to site?


Lost password? (X)

Already have an account?


(X)

Presents

#CSHARPCON20

The C# Corner Annual Conference 2020 is a three-day annual event for software professionals and developers.

3
DAYS
72
SPEAKERS
65
SESSIONS

Magnus Mårtensson
Microsoft Regional Director, Azure MVP, CEO Loftysoft

Avirag Jain
Director & CTO R Systems

Mahesh Chand
Founder C# Corner, CEO Mindcracker

Chris Gali
CEO & Co-Founder Graphite

Subinder Khurana
Chief Architect StoryProcess, Founder NASSCOM DeepTech Club

Bryan Rishforth
Investor, Chairman Graphite

Bryn Everson
Director Biz Dev Graphite

Raj Tiwari
Digital Transformation Leader, Futurist and Visionary

Joseph Guadagno
Microsoft MVP, Lead Quicken Loans

Nikita Sachdev
Entrepreneur, Blockchain Enthusiast & Advisor, Social Media Influencer

Doug Wagner
COO & Founder Adapt Technical Group

Ritesh Modi
Architect, Senior Evangelist, Cloud Architect

Crystal Wenrick
Director Communications Mindcracker

Allen O’Neill
Microsoft MVP, Consulting Engineer/Architect

Praveen Kumar
CEO MCN Solutions

Chris Love
Founder Love2Dev, Microsoft MVP, Author

Sanjay Vyas
Microsoft Regional Director, Microsoft MVP, Founder & CEO SkillLabs Technologies

Veena Sarda
Deep Learning Consultant, Author

Sekhar Srinivasan
C# Corner MVP, Microsoft Certified Trainer, Pluralsight Author

Lalit Bansal
Founder & CEO - EIY SYS

Navdeep Garg
CEO Revinfotech

Prakash Tripathi
Tech Manager/Leader, Microsoft MVP, Blogger

Bhavna Jain
Breakthrough Consultant

Naveen Sharma
Enterprise Architect, Leadership Coach, Author

Vidya Vrat Agarwal
Principal Architect, Microsoft MVP, Author

Sheetal Agarwal
Founder Clownselors, Medical Clown, Trainer

Abhishek Kant
Founder GTM Catalyst

Vishnu Saran
Founder & CEO VoiceQube

Sandeep Soni
Founder & CEO Deccansoft, Microsoft Certified Trainer

Parveen Malik
AVP InfoSec & Vulnerability Management, Information Security Expert

Nitin Pandit
Microsoft MVP, Developer Evangelist, Author

Niloshima Srivastava
C# Corner MVP, Tech Architect, Trainer, Blogger

Bala Chirtsabesan
Senior Software Engineer at Microsoft, Author

Manoj Mittal
Sr. Technical Architect, C# Corner MVP, Author

Chandni Di
Co-Founder Voice of Slum

Vithal Wadje
Technical Lead, Microsoft MVP, Author

Shivam Ahuja
Founder SkillCircle, Business Mentor

Chervine Bhiwoo
Solution Architect, Microsoft MVP, Author

Saurabh Jain
Vice President Paytm, Founder Fun2Do Labs, Author

Vinay Solanki
Head IoT at Lenovo, Founder IoT-NCR

Anshu kumari
Founder Blockchainkids, Inventor, Trainer

Amit Singal
CEO Startup Buddy

Dev Pratap
Co-Founder & CEO Voice of Slum

Amey Vartak
Technology Consultant, Full Stack Developer, C# Corner MVP, Author

Viswanatha Swamy
Principal Software Engineer, C# Corner MVP, Author

Sanket Verma
Research Engineer @ Ballistics (Forensics) and Chair, PyData Delhi

Sourabh Somani
Lead Developer, Microsoft MVP, Author

Abhishek Mishra
Software Architect, C# Corner MVP, Author

Siddharth Vaghasia
Technical Consultant, C# Corner MVP, Blogger

Bassam Alugili
Senior Software Specialist, Database Expert

S Ravi Kumar
Solution Architect, C# Corner MVP, Author

Sundaram Subramanian
Full Stack Developer, C# Corner MVP, Speaker

Deepesh Somani
Solution Architect, Microsoft MVP, Author

Debasis Saha
Technical Project Manager, C# Corner MVP, Blogger, Author

Vipul Jain
Software Architect, C# Corner MVP, Author

Akshay Patel
Technical Architect, Microsoft Certified Trainer, C# Corner MVP, Author

Stephen Simon
RPA Developer, Evangelist, Author

Vivek Sharma
Founder Kingster636, AR/VR Specialist

Jeetendra Gund
Technical Lead, C# Corner MVP, Author

Sujal Beniwal
AI Enthusiast, Student

M Viknaraj
Microsoft MVP, Azure Architect, Author

Prasham Sabadra
Software Architect, C# Corner MVP, Trainer, Author

Aakash Maurya
Senior Developer, C# Corner MVP, Speaker

Ankit Sharma
Senior Software Engineer, C# Corner MVP, Author

Mangesh Gaherwar
Team Lead, C# Corner MVP, Author

Viral Jain
Technical Consultant, C# Corner MVP, Author

Bhasker Das
Solution Architect, Evangelist

Manish Dwivedi
Associate Project Manager

Ck Nitin
Programmer, Author

Rohit Gupta
Technical Trainer, Author

Manish Tewatia
Full-stack Marketer, UX Designer

Bhavya Gaur
Technical Illustrator

Rohit Tomar
SEO/SMO Expert

Web Track

Cloud & Data Track

Dev Track

8am-9am

Registration & Breakfast

9am-10am

Future of Desktop Apps with JS (ElectronJs)

Nitin Pandit

Building Serverless Microservices Using Microsoft Azure

Vithal Wadje

Innovating RPA: A Robot for Every Person

Stephen Simon

10am-11am

Managing Cloud Storage Accounts using Logic Apps

Viknaraj Manogararajah

Data visualization using Python

Sekhar Srinivasan

Going Cross platform with AR Foundation

Vivek Sharma

11am-12pm

Keynote

12pm-1pm

Managing your Azure dependencies in ASP.NET Core apps using VS

Bala Chirtsabesan

Securing Applications on Intelligent Azure

Abhishek Mishra

Getting started with Blazor the Framework of Future

S Ravi Kumar

1pm-2pm

Lunch

2pm-2:45pm

Build Progressive Web Apps using Angular 9

Debasis Saha

Build and deploy to any platform using Azure DevOps

Chervine Bhiwoo

Deep Dive in Azure Service Bus

Akshay Patel

2:45pm-3:45pm

Build a Native Mobile Application using React Native and JavaScript

Joseph Guadagno

Making sense of Web Job, Web Job SDK and Functions in Azure

Prakash Tripathi

CloudFront Distribution in AWS

Viral Jain

3:45pm-4pm

Tea Break

4pm-4:30pm

Introduction to PowerBI

Aakash Maurya

Build Advanced SPFx solutions with React and Graph API

Siddharth Vaghasia

Build Business Intelligence Analyst (BIA) Skills

Sundaram Subramanian

4:30pm-5pm

Deep dive of Power Platform – AI BUILDER

Prasham Sabadra

Panel 1

What's new in SharePoint development

Vipul Jain

5pm-5:30pm

Build a SSO (Single Sign On) based Native JavaScript application with Microsoft Identity within 10 minutes

Manoj Mittal

Panel 2

Applications and working of AI

Veena Sarda

5:30pm-6pm

Deploying serverless API's with .Net core 3.0 on AWS & Azure

Amey Vartak

Panel 3

Blockchain with .NET Core (Ark)

Anshu Kumari

6pm-6:30pm

Closing Note & Prize Distribution

Dev Track

Cloud Track

Architecture Track

Emerging Tech Track

8am-9am

Registration & Breakfast

9am-10am

Creating Full-Stack Web Apps Using Server-Side Blazor

Ankit Sharma

Real time face recognition with MS Cognitive Services

Niloshima Srivastava

Building Scalable APIs with GraphQL

Jeetendra Gund

Future of development with AI and Blockchain

Navdeep Garg

10am-11am

Debugging Tips and Tricks with Visual Studio 2019

Joseph Guadagno

Azure Containers

Abhishek Kant

Enterprise Architecture

Naveen Sharma

Bot Framework - learn it fast and look like a boss!

Allen O’Neill

11am-12:30pm

Keynote

12:30pm-1:30pm

.Net Core & C# 8 Performance

David McCarter

Working with Azure kubernetes services

Ritesh Modi

Becoming an Architect

Vidyavrat Agarwal

Why Techies Need to Learn Product Management

Saurabh Jain

1:30pm-2:30pm

Lunch

2:30pm-3:30pm

Build a rules engine in .Net Core

Sanjay Vyas

Building CI and CD Pipeline using Azure DevOps

Sandeep Soni

Entity Framework Core - Tips and Tricks, Performance Optimization, and Tuning

Bassam Alugili

Hacking your way into Data Science

Sanket Verma

3:30-4:15pm

Speed up your .Net Core Website

Sourabh Somani

Azure

Magnus Mårtensson

Demystifying Open Distro for Elasticsearch

Suman Debnath

Future of Data

Shivam Ahuja

4:15pm-4:30pm

Tea Break

4:30pm-5:15pm

gRPC with C# and .Net Core

Mangesh Gaherwar

Panel 1

Essentials of Cloud security

Parveen Malik

Power platform and Dynamics 365

Deepesh Somani

5:15pm-6pm

Microservices - the gRPC Way

Viswanatha Swamy

Panel 2

Reserved

Reserved

6pm-6:30pm

Closing Note & Prize Distribution

CQRS in .NET with MediatR

Command and Query Responsibility Segregation (CQRS) gives .NET applications two deliberate paths for handling work. A command expresses an intention to change state, while a query asks for information without changing it. Keeping those responsibilities apart can make complex business rules easier to enforce and high-volume reporting easier to optimise. CQRS does not require event sourcing: many implementations use relational databases, domain events and read-model projections without storing an event log.

MediatR is a .NET mediator library that connects requests to handlers through dependency injection. Controllers, background workers or service layers publish IRequest and INotification messages, while specialised command handlers and query handlers perform the work. This in-process messaging style removes direct handler lookups from application code and creates a useful seam for validation, logging, authorisation and transaction boundaries.

For Australian development teams, the pattern is relevant wherever products combine transactional APIs with dashboards, mobile clients and operational reporting. Banks, health providers, logistics firms, retailers and mining businesses often operate across Sydney, Melbourne, Brisbane and Perth, so system boundaries and data visibility matter as much as raw throughput. A measured CQRS design can improve those workloads while remaining grounded in Australian privacy, security and cloud-residency expectations.

Why CQRS fits complex .NET systems

A conventional ASP.NET Core controller commonly calls one application service, which both mutates entities and returns data. That arrangement works well for modest CRUD applications, but it tends to pull a large object graph, authorisation rules and reporting concerns into the same path. As a system grows, queries may accidentally track entities, lock rows or return more fields than a client needs.

Separating commands from queries creates explicit boundaries. The write side validates a command, loads aggregate state, enforces invariants and commits a change. The read side retrieves purpose-built records shaped for a screen or integration. Each side can then evolve independently: commands can become richer domain workflows, while queries can use indexed tables, caches or search indexes optimised for retrieval.

This separation does not automatically reduce complexity. Teams need two models, projection logic and a strategy for stale data. It is most valuable when read and write pressures genuinely differ; a small application with one workflow can often remain simpler without CQRS. In Australian enterprise systems, the trade-off becomes easier when a reusable platform pattern serves several products rather than one bespoke API.

Commands, queries, and the domain model

Start with language that reflects business intent. A PlaceOrderCommand can carry an order identifier, customer details and line items, while RenameProductCommand carries the product identifier and new name. Handlers own the transaction and return a small result, such as an order number or failure reason. A command should not double as a general-purpose data container, because that weakens the boundary between intent and persistence.

Queries should return immutable response records rather than tracked EF Core entities. For example, OrderSummaryResponse can expose an order date, status and total, while SalesByRegionResponse contains only the fields needed by a chart. Read handlers can use AsNoTracking, projection-to-DTO queries, pagination and cancellation tokens. This prevents a view endpoint from accidentally invoking domain behaviour or triggering a lazy database query.

Aggregate changes can publish domain events inside the write transaction. Those events may update local projections, feed search indexes or communicate with external systems. Australian geographical scale makes delivery semantics important: a warehouse team near Perth may lose connectivity while a customer in Brisbane completes an order. Retrying, idempotent consumers and an outbox reduce the risk of lost work or duplicate effects when networks are unreliable or teams work in different time zones.

MediatR registration and request pipelines

MediatR keeps dispatch explicit without coupling callers to concrete handlers. Register the assembly containing requests and handlers with the service collection, resolve IMediator or ISender in the caller, and send a request. The caller knows the message, not the implementation. Keep controllers thin by translating HTTP input into a command or query, then map the result to an HTTP response. Background workers can publish the same request types through the mediator.

Concern Conventional .NET handling CQRS with MediatR
Request shape One service performs the operation Separate command and query messages
Write path Entities are tracked and saved A command handler owns the transaction
Read path The same model supplies entities A query handler returns tailored records
Optimisation Read and write demands are coupled Queries can use projections, caches or search
Consistency Often immediate for every operation Write consistency and read freshness are explicit
Complexity Lower initial setup Greater modelling and operational overhead

With a shared persistence model, the write handler may use EF Core to load and save entities, while the query handler selects directly into response records. Separate DbContext instances and read-only queries make the distinction visible. When the workloads diverge, the read handler can target a denormalised projection or cache instead. Each handler should have one clear reason to exist rather than becoming another arbitrary service layer.

MediatR pipeline behaviours provide a cross-cutting place for validation, authorisation, logging, metrics and exception mapping. A validation behaviour can reject malformed commands before a handler runs, while an audit behaviour records who initiated a sensitive change. Register behaviours in dependency-injection order and use scoped services where DbContext or tenant context is required. Cancellation tokens should flow through Send, handlers and database calls so abandoned requests stop consuming resources.

Designing reliable read models

A reliable write path should commit the domain change and any outgoing message atomically. The transactional outbox pattern stores integration events in the same database transaction as the aggregate update. A background publisher then sends pending events to a broker and records their delivery. Consumers must be idempotent because an at-least-once broker can redeliver a message after a timeout. Deduplication keys and versioned projections make replay safe.

Read models can be updated synchronously for simple cases, but asynchronous projection is common when reporting needs differ from transactional data. Consumers apply events in sequence, store a checkpoint and rebuild projections when the model changes. Until the projection catches up, users may see a slightly older state. Product interfaces should make that delay acceptable or offer a freshness indicator, and support staff need a way to inspect lag rather than infer it from user reports.

Performance tuning belongs on both sides. Batch projection updates, avoid unbounded event handlers and keep read queries selective. A read replica or Azure-hosted projection can reduce pressure on the primary database, especially for high-volume dashboards. Choosing the Australia East, Australia Southeast or Australia Central region can keep compute and data closer to users and regulated workloads, although residency does not remove the need for contractual controls, monitoring and a documented recovery strategy.

Testing, security, and operations

Testing CQRS is simpler when each request has a narrow contract. Unit tests can exercise command handlers with a focused test double for the repository, while query tests verify filters, authorisation and DTO mapping. Integration tests using a real database through Testcontainers can catch translation mistakes that mocks miss. Contract tests are valuable for events and external consumers, since a renamed property can otherwise break a projection several releases later.

Security checks belong in the command path and must also constrain read access by tenant, role or purpose. Australian organisations subject to the Privacy Act 1988 must align collection, use, disclosure and security with the Australian Privacy Principles; APP 11 addresses security and APP 12 requires a privacy policy. The ASD Essential Eight provides another practical baseline for patching, access control, logging and backups. Legal and compliance teams should confirm how cloud telemetry, support access and cross-border processing fit those obligations.

Operations need visibility across both paths. Carry a correlation identifier from ASP.NET Core request to handler, database command, outbox message and projection, then export traces and metrics through OpenTelemetry. Alert on command failures, outbox age, projection lag and dead-letter volume. At the edge, apply ASP.NET Core rate limiting before requests reach MediatR, protecting shared infrastructure without embedding throttling rules inside domain handlers.

Adopt the pattern incrementally. A single bounded context can begin with separate command and query handlers over existing tables, then gain projections only when evidence supports them. MediatR provides the dispatch and pipeline mechanics, but sound aggregates, explicit contracts, resilient messaging and disciplined observability determine whether the resulting architecture is dependable.

The Leela Ambience Convention Hotel

1, CBD, Maharaj Surajmal Road, Near Yamuna Sports Complex, Delhi, 110032

KNOW MORE

GENERAL QUERIES


Manish Tewatia

+91-9718-431-042

TICKET QUERIES


Atul Gupta

+91-9910-125-804