Design plays a key role in any software application development process. Proper design is a major factor that contributes to the scalability and performance of any application.

Efficient Resource Management

Resources are very critical for the existence and survival of any application. Examples of resources include objects, files, connections, handles, streams and so on. Hence proper handling and cleanup of such resources is critical for the better performance of a system.

Here are points to consider:

Considerations for Crossings the Application Boundary

Applications live and run in their own territory defined by the machine, process or Application Domains they are hosted in or deployed on. In other words, if two applications communicate with each other across machines, processes or app domain then there is a significant impact or improvement in the performance of the application.

Single Large Assemblies or Multiple Smaller Assemblies

In .NET the assembly is the unit of deployment; an application existd in the form of an assembly only. For any application you have built, compilation only produces an assembly. All the DLLs your project refers to are .NET Assemblies only.

When working on designing and architecting a solution it is critical to consider that the various functionalities, classes and interfaces and so on should be a part of one single chunky assembly or should be divided across multiple smaller assemblies.

Here are points to consider:

Code Refactoring by Logical Layers

You can read my article on Logical and Physical Separation here

Code refactoring suggestions are the most common comment developers receive during their code review. Hence, we usually follow the best practices of Separation of Concerns and so on. .

Here are points to consider:

Threads are a Resource worth Sharing

Many application use threads internally and behind the scenes, that is good and doesn't cause much noise. The problem starts when we take control in our own hands and don't follow the right practices.

Here are points to consider: