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

Mastering Distributed Transactions with System.Transactions in .NET

Distributed transactions sit at the heart of any system that must keep data consistent across more than one store. In a typical enterprise application you might write to SQL Server, then push a message to a queue, then call a partner API, and expect all three steps to either succeed together or roll back together. The .NET Framework shipped a dedicated namespace, System.Transactions, precisely to make those guarantees practical without forcing every developer to think about XA openers, recovery logs and phase boundaries. When that layer is configured correctly, business code stays clean; when it is misconfigured, the same code produces silent corruption that is painful to diagnose months later.

For developers across Sydney, Melbourne, Brisbane, Perth and the regional hubs, the pressure to get this right has intensified. Major Australian banks, the Australian Taxation Office, the superannuation clearing platforms that sit behind the ASX, and the logistics stacks behind national retailers all rely on coordinated writes that span databases, message brokers and partner endpoints. A small team in Surry Hills or Docklands writing a payments microservice inherits that responsibility, which is why a working knowledge of System.Transactions remains useful even as cloud-native alternatives grow in popularity.

Foundations of Distributed Transactions in .NET

A transaction is a unit of work that follows the familiar ACID guarantees: atomicity, consistency, isolation and durability. When the work touches a single resource, the resource manager itself can honour those guarantees and developers rarely think twice. A distributed transaction, by contrast, spans two or more resource managers and needs an external coordinator to decide whether every participant commits or aborts. The standard protocol for that coordination is the two-phase commit, which begins with a prepare phase where each manager locks its data and acknowledges readiness, followed by a commit phase that finalises the decision.

System.Transactions was introduced in .NET 2.0 as a unified programming model on top of lower-level providers such as MSDTC and, later, the Lightweight Transaction Manager. Its purpose is to remove the boilerplate around manual enlistment while still exposing an escape hatch for advanced scenarios. Instead of asking developers to create OLE Transactions or XA handles directly, the framework exposes a small set of types, including Transaction, TransactionScope, CommittableTransaction and DependentTransaction, that cover almost every realistic case. Those types form the public surface that most production code interacts with, regardless of which underlying coordinator the runtime ends up selecting.

TransactionScope and the Implicit Programming Model

The TransactionScope class is the workhorse of the namespace and the one most Australian teams reach for first. You instantiate it, run the body of the work inside a using block, and call Complete only when every step has succeeded. If an exception escapes the block, or if Complete is never called, the framework aborts the transaction and the underlying resource managers undo their work. The benefit is that the code reads almost like sequential logic, even though the runtime may be coordinating multiple durable stores.

TransactionScope also enables an ambient transaction, meaning any connection opened inside the block automatically enlists with the current scope. A developer in a Brisbane-based fintech team can open a SqlConnection, send a Service Bus message and call a stored procedure on a remote linked server, and all three operations will share the same logical transaction. The implicit model is convenient, but it has subtleties. Nested scopes, async continuations and ambient flow across threads all deserve attention, which is why documentation and code reviews treat the boundaries of a TransactionScope with care. Setting TransactionScopeOption carefully and avoiding scope nesting without a clear reason are two habits that pay off the first time a production incident is traced back to a stray ambient transaction.

Lightweight Transaction Manager vs MSDTC

Behind the scenes System.Transactions chooses between two implementations: the Lightweight Transaction Manager (LTM) and the Microsoft Distributed Transaction Coordinator (MSDTC). The LTM runs entirely in process, performs well and avoids any network round-trips. It is the default whenever the scope enlists a single durable resource, such as one SQL Server 2016 or later database. The moment a second durable resource enlists, the LTM will request a distributed transaction identifier from MSDTC and promote the scope.

Feature Lightweight Transaction Manager MSDTC
Process boundary Single process Cross-machine, cross-process
Network traffic None XA prepare and commit calls
Configuration Out of the box Requires MSDTC service and firewall rules
Typical latency Microseconds Milliseconds plus network hop
Recovery Built into the resource manager Distributed recovery log and coordinator
When chosen Single durable resource Two or more durable resources, or durable plus non-durable enlistments

Understanding the promotion boundary saves a team from the most common production surprise: a transaction that performs brilliantly in development because everything talks to one database, then suddenly degrades the day it connects to a second store and starts hitting MSDTC. Profiling tools and SQL traces make the escalation visible, and architecture reviews in Melbourne user groups frequently cite that gap between local and integrated environments.

Promotion, Escalation and Resource Managers

Promotion is the act of handing an in-progress transaction from the LTM to MSDTC so that more participants can join. It is triggered by the framework, not by the developer, and it usually happens silently. The common triggers include opening a second SqlConnection inside the same scope, enlisting an explicit resource manager such as a WebSphere MQ queue, or calling EnlistDurable on a custom resource manager. Once a transaction is promoted, it stays promoted until it commits or aborts, which means a single second connection can change the lifetime cost of an entire workflow.

Resource managers are the durable endpoints that participate in the protocol. SQL Server, Oracle, Azure Service Bus and a handful of other technologies ship with their own resource managers, while teams that need to wrap a legacy mainframe link or a file-based queue can implement IEnlistmentNotification and provide their own. Australian teams that maintain payroll integrations with legacy IBM systems in Perth often rely on these custom enlistments to keep the mainframe step inside the same atomic boundary as the SQL Server write that feeds it. The trade-off is that custom resource managers inherit responsibility for recovery, so writing them well requires a clear understanding of the two-phase protocol and the in-doubt callback contract.

Handling Failures, Retries and Idempotency

Distributed transactions are fragile by nature because more moving parts means more ways to fail. A network blip during the prepare phase, a deadlock on the second database, or a queue that returns a transient timeout can all leave the coordinator unsure of the final state. Recovery is automatic in well-configured environments: when MSDTC comes back online it replays its log and resolves any in-doubt transactions, but the calling application still sees an exception and must decide whether to retry. Without a clear policy, retries pile up, queues overflow, and what looked like a small hiccup becomes an outage.

Idempotency is the property that makes retry safe. Each operation inside a transaction must produce the same effect whether it is executed once or many times, which is why database writes typically rely on natural keys or upsert statements and why messages usually carry a deduplication identifier. Australian developers working on ATO integrations, where retry storms during BAS season are notorious, lean heavily on idempotency tokens and pattern-based deduplication to keep the system stable under load. Compensation patterns complement this approach by recording what was attempted so that a subsequent manual or automated process can undo the partial work if the recovery log itself fails. The combination of idempotent steps, transient-fault retry policies and clear compensation is what separates a robust distributed transaction from a brittle one.

Modern Patterns with Cloud and Microservices

Cloud platforms and microservice architectures have reshaped how teams think about transactions. Many Azure services, including Azure SQL, Service Bus and Cosmos DB, support transactional outbox patterns and saga coordinators that push the boundary away from a single heavyweight scope. The classic two-phase commit still has its place, especially when the participants are mature enterprise systems with strong ACID support, but greenfield designs in Sydney and Melbourne increasingly favour eventual consistency, choreography and compensating actions over a single System.Transactions boundary.

Even so, the namespace remains a useful tool in a modern toolbox. A service that needs atomic writes across a relational database, an on-premises mainframe and a Kafka topic can still benefit from TransactionScope, and the pattern is well documented in training material covered at events such as the csharpcon event site. The skill is knowing when to reach for it, when to substitute a saga, and how to instrument the choice so that the next on-call rotation in Adelaide or Hobart understands the trade-off that was made.

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