You do not have a clear idea of how the workflow works. Essentially, a new instance of your class is created for each thread. Thus, your class should not be thread safe and not really thread safe.
Just to be clear, you understand that private / public fields and thread safety are not quite right (I don't believe). Therefore, in this context, you should not think of them as such.
An instance is created on the heap and all threads running in w3wp.exe have access to the FirstName and LastName properties of the client object.
No, not all threads. Each thread will receive its own instance. I assume that you are creating an instance of your client on a page or controller? Think about it this way, each request that your application receives is a stream, and since a new instance of the page (or controller) is created for each request, any objects you create on the page or controller also belong to this stream and therefore for the most part parts you are safe. Of course, if you do something that you did not mention, or you do not create instances of your client object on the page or controller, then you will need answers to all other questions / scripts before you get an answer.
I wrote a blog post explaining how it all works. The purpose of the publication is different, but I believe that what you learn will help you better understand how IIS and Worker work, and how they interact with your ASP.NET application.
ASP.NET Performance-Instantaging Business Layers
source share