0% found this document useful (0 votes)
29 views2 pages

dotnetcoding

The document outlines tasks for implementing a custom middleware in ASP.NET Core for logging HTTP requests and measuring performance, including details on thread safety and error handling. It also describes the creation of a thread-safe singleton pattern in C# without explicit locks, and a custom LINQ extension method for processing collections in batches. Additionally, it includes string operation functions for removing duplicates, checking for anagrams, and determining if a string is a palindrome.

Uploaded by

Raid Rab Nawaz
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as TXT, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
29 views2 pages

dotnetcoding

The document outlines tasks for implementing a custom middleware in ASP.NET Core for logging HTTP requests and measuring performance, including details on thread safety and error handling. It also describes the creation of a thread-safe singleton pattern in C# without explicit locks, and a custom LINQ extension method for processing collections in batches. Additionally, it includes string operation functions for removing duplicates, checking for anagrams, and determining if a string is a palindrome.

Uploaded by

Raid Rab Nawaz
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as TXT, PDF, TXT or read online on Scribd
You are on page 1/ 2

Task: Implement a Custom Middleware for Request Logging and Performance Monitoring

Objective: Develop a custom middleware in ASP.NET Core that logs incoming HTTP
requests and measures the time taken to process each request. The middleware should
log the following details:

HTTP method (e.g., GET, POST)


Request path
Query parameters
Response status code
Processing time in milliseconds

Requirements:

Middleware Implementation:
Create a class named RequestLoggingMiddleware that handles the logging
logic.
Implement the InvokeAsync method to capture request and response details.

Performance Measurement:
Record the time taken to process each request using a high-resolution
timer.

Logging:
Use ASP.NET Core's built-in logging framework (ILogger) to log the
information.
Ensure that logs are written in a structured format for easy analysis.

Registration:
Configure the middleware in the ASP.NET Core request pipeline within the
Startup class.

Considerations:

Thread Safety: Ensure that the middleware handles concurrent requests


appropriately.
Error Handling: Log exceptions without disrupting the request pipeline.
Performance Impact: Minimize the overhead introduced by the logging mechanism.

======================
1. Implement a Thread-Safe Singleton Pattern

Task: Design a singleton class in C# that ensures thread safety without using
language-level constructs like lock. The implementation should be lazy-initialized
and performant.

Requirements:

Ensure that only one instance of the class is created, even in a multithreaded
environment.

Avoid using explicit locking mechanisms.

Demonstrate the usage of the singleton instance in a multithreaded scenario.

Purpose: This exercise evaluates the candidate's understanding of design patterns,


thread safety, and efficient resource management in .NET.

=====================
Develop a Custom LINQ Extension Method

Task: Create a LINQ extension method named Batch that processes a collection in
batches of a specified size. The method should yield each batch as an
IEnumerable<T>.

Requirements:

The method should be an extension of IEnumerable<T>.

It should accept an integer parameter batchSize indicating the number of items


per batch.

Implement the method using yield return to facilitate deferred execution.

Example usage

var numbers = Enumerable.Range(1, 10);


var batches = numbers.Batch(3);

foreach (var batch in batches)


{
Console.WriteLine(string.Join(", ", batch));
}
========================
String Operations

Create a function to receive a string from console and then remove duplicate
characters from the string and reprint the unique string

Eg. tessst -> test

Create a function which receives two strings and find if they are anagrams

Create a function which receives a string and return if it is a palindrome or not

You might also like