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
Registration & Breakfast
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
Managing Cloud Storage Accounts using Logic Apps
Viknaraj Manogararajah
Data visualization using Python
Sekhar Srinivasan
Going Cross platform with AR Foundation
Vivek Sharma
Keynote
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
Lunch
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
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
Tea Break
Introduction to PowerBI
Aakash Maurya
Build Advanced SPFx solutions with React and Graph API
Siddharth Vaghasia
Build Business Intelligence Analyst (BIA) Skills
Sundaram Subramanian
Deep dive of Power Platform – AI BUILDER
Prasham Sabadra
Panel 1
What's new in SharePoint development
Vipul Jain
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
Deploying serverless API's with .Net core 3.0 on AWS & Azure
Amey Vartak
Panel 3
Blockchain with .NET Core (Ark)
Anshu Kumari
Closing Note & Prize Distribution
Dev Track
Cloud Track
Architecture Track
Emerging Tech Track
Registration & Breakfast
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
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
Keynote
.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
Lunch
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
Speed up your .Net Core Website
Sourabh Somani
Azure
Magnus Mårtensson
Demystifying Open Distro for Elasticsearch
Suman Debnath
Future of Data
Shivam Ahuja
Tea Break
gRPC with C# and .Net Core
Mangesh Gaherwar
Panel 1
Essentials of Cloud security
Parveen Malik
Power platform and Dynamics 365
Deepesh Somani
Microservices - the gRPC Way
Viswanatha Swamy
Panel 2
Reserved
Reserved
Closing Note & Prize Distribution
Optimizing JSON Response Size with System.Text.Json Source Generators
JSON is convenient, readable and well supported across modern applications, but its flexibility can create unnecessary network traffic. Repeated property names, null values, verbose identifiers and oversized nested objects all add bytes to an API response. For Australian users working across Sydney, Melbourne, Brisbane or regional areas, those bytes can affect mobile performance, cloud egress costs and perceived responsiveness.
System.Text.Json source generators help .NET applications serialize known data contracts with less runtime reflection and more predictable behaviour. They do not automatically remove fields from a payload, so the best results come from combining generated serialization metadata with carefully designed DTOs, naming policies, omission rules and HTTP compression.
| Approach | Main effect | Best use | Important trade-off |
|---|---|---|---|
| Source-generated metadata | Reduces reflection and startup overhead | High-volume APIs and serverless apps | Does not inherently reduce every JSON byte |
| DTO projection | Sends only required fields | Public APIs and mobile clients | Requires maintaining response models |
| Ignore null or default values | Removes empty properties | Sparse records and optional fields | Clients must handle missing properties |
| Shorter property names | Reduces repeated key overhead | Very bandwidth-sensitive APIs | Less readable payloads and harder debugging |
| Brotli or gzip | Compresses the wire representation | Internet-facing APIs | Adds CPU cost and does not change raw JSON |
| Pagination and selective fields | Limits the amount of data returned | Large lists and rich resources | More client requests or API complexity |
Why Source Generation Matters
Traditional JSON serialization can inspect types at runtime to discover properties, constructors and converters. That reflection-based process is flexible, but it can increase startup work and memory usage. It can also make trimming and ahead-of-time deployment more difficult, which matters for containers, Azure Functions and other workloads where cold-start time is visible.
System.Text.Json source generation moves much of that metadata work to build time. A Roslyn generator produces strongly typed serialization information for the models included in a JsonSerializerContext. At runtime, the application can use that generated metadata instead of discovering the same information repeatedly.
The distinction between performance and payload size is important. A source-generated serializer may produce the same JSON shape as a reflection-based serializer. The response becomes smaller when the generated configuration is paired with decisions such as ignoring null values, using compact DTOs or avoiding unnecessary object graphs.
For a consultancy in Melbourne or a product team serving customers through the NBN and mobile networks, this separation makes performance investigations clearer. CPU savings, allocation reductions and fewer transmitted bytes are related goals, but they should be measured independently.
Design A Response Contract That Travels Light
The most effective optimisation usually happens before serialization. Returning an entity with every database column, audit field and navigation property exposes implementation details and creates a larger contract than most clients need. A response-specific DTO gives the API control over field names, nesting and optional data.
public sealed record ProductResponse(
int Id,
string Name,
decimal Price,
string Currency,
string? ThumbnailUrl);
A product listing probably does not need a full description, supplier address, inventory history and related reviews. Those details can be provided by separate endpoints or expanded only when requested. This approach also reduces accidental circular references and makes versioning more manageable.
Property names are repeated for every item in an array, so naming decisions become significant in large collections. thumbnailUrl is clear and conventional, while an aggressively shortened name such as tu saves only a few bytes and makes the contract harder to use. Australian government and enterprise systems often need long-lived integrations, so a modest reduction should not compromise clarity or accessibility.
Flattening can help when a response contains deeply nested single-use objects, though it should reflect the domain rather than exist solely for byte reduction. Pagination, server-side filtering and field selection generally provide larger gains than micro-optimising individual property names.
Configure Generated Serialization Metadata
A source-generated context defines the types that the application serializes. The GenerationMode can be set to metadata, serialization or the default mode, depending on the .NET version and the desired balance between generated code size and runtime work.
using System.Text.Json;
using System.Text.Json.Serialization;
[JsonSourceGenerationOptions(
PropertyNamingPolicy = JsonKnownNamingPolicy.CamelCase,
DefaultIgnoreCondition = JsonIgnoreCondition.WhenWritingNull,
WriteIndented = false)]
[JsonSerializable(typeof(ProductResponse))]
[JsonSerializable(typeof(IReadOnlyList<ProductResponse>))]
public partial class ApiJsonContext : JsonSerializerContext
{
}
The context can then be supplied to the serializer:
var json = JsonSerializer.Serialize(
products,
ApiJsonContext.Default.IReadOnlyListProductResponse);
In ASP.NET Core, generated metadata can be registered with the MVC or minimal API JSON options. The precise registration method depends on the target .NET release, but the principle remains the same: register the context and ensure the endpoint uses System.Text.Json rather than a different formatter.
WhenWritingNull is useful for optional fields such as a missing thumbnail or secondary contact number. WhenWritingDefault can remove values such as 0, false or empty defaults, but it must be applied carefully. A zero balance may be meaningful, and a false feature flag may be required by the client. Omitting a property changes the API contract, so document the behaviour and test deserialisation.
Source generation also improves trimming compatibility. That is valuable for containerised workloads running in Azure Australia East or Australia Southeast, where fast deployment and predictable memory usage can matter across many small instances.
Control Collections, Polymorphism And Converters
Large collections amplify every inefficiency. A response containing 10,000 records repeats property names 10,000 times, so pagination is often more valuable than any serializer setting. Returning 50 or 100 records per page, with stable ordering and continuation information, keeps response sizes predictable and reduces the chance of timeouts on slower connections.
Polymorphic models require extra care. If a collection contains several derived types, the serializer may need discriminators and metadata to determine each object’s shape. Those fields add bytes, while an overly broad base type can expose properties that clients do not use. Explicitly registering derived types in the source-generation context makes supported cases visible and helps avoid runtime surprises.
Custom converters are appropriate for compact representations, such as a domain value object or a fixed-format identifier. A date that always uses ISO 8601 can remain standard and interoperable; a custom converter should have a measurable purpose rather than simply making the code more clever. Shortening dates or encoding multiple values into a string can make the contract difficult for JavaScript, mobile and integration clients to consume.
For Australian businesses integrating with banks, insurers or public-sector platforms, interoperability often has greater value than shaving a few bytes from a stable field. Keep compact formats for internal or tightly controlled APIs, and use explicit versioning when a representation changes.
Compress The Bytes Sent Over HTTP
Source-generated JSON still contains text that can compress extremely well. Enable Brotli for clients that support it and gzip as a broadly compatible fallback. ASP.NET Core response compression middleware negotiates the encoding through the Accept-Encoding header, allowing browsers and mobile clients to receive an appropriate representation.
Compression is especially effective for repeated property names and similar records. A raw response of several hundred kilobytes may become a much smaller wire payload, although the exact ratio depends on values, nesting and repetition. Measure the compressed response rather than assuming that a reduction in characters equals the same reduction in network traffic.
Compression has a CPU cost. For a high-throughput API, Brotli at an aggressive quality level may consume more processing time than is justified. A balanced setting is commonly preferable for dynamic JSON, while pre-compressed static content can use a different policy. Watch server CPU, latency and response size together.
This matters for users travelling between Perth and regional Western Australia, or accessing services on congested mobile networks. It also matters financially: reducing egress from an Azure-hosted service can lower recurring costs, while a smaller payload makes APIs more forgiving when connectivity is variable.
Benchmark The Full Delivery Path
A useful benchmark compares the same DTO and data set under several configurations: reflection-based serialization, source-generated serialization, source generation with omitted nulls, and compressed HTTP delivery. Record serialization duration, allocations, raw JSON length, compressed length and end-to-end latency.
Benchmark representative data rather than a tiny example. Include records with optional fields populated and absent, long names, Unicode text, nested collections and realistic list sizes. A local test on a developer workstation will not reflect every production condition, particularly when clients are distributed across Australian cities and regional locations.
Tools such as BenchmarkDotNet can measure serializer performance in isolation. HTTP-level tests should use a representative ASP.NET Core host and inspect response headers, including Content-Encoding and Content-Length where available. For streamed or chunked responses, capture the received byte count instead of relying on a single header.
var options = new JsonSerializerOptions
{
TypeInfoResolver = ApiJsonContext.Default
};
var payload = JsonSerializer.Serialize(
products,
ApiJsonContext.Default.IReadOnlyListProductResponse);
Console.WriteLine(payload.Length);
The final decision should be based on an agreed budget, such as a maximum uncompressed response size for a listing endpoint or a latency target for a mobile workflow. Source generation is valuable when it reduces runtime overhead and strengthens deployment compatibility, while DTO design, omission rules, pagination and compression determine how much data actually crosses the network.
1, CBD, Maharaj Surajmal Road, Near Yamuna Sports Complex, Delhi, 110032
GENERAL QUERIES
Manish Tewatia
manish@csharpcon.com
+91-9718-431-042
TICKET QUERIES
Atul Gupta
conference@csharpcon.com
+91-9910-125-804