What does it mean by logical grouping of modules in assembly? Can anyone please explain how .NET's CLR works with assembly ?
A dotNet Assembly is the container for all your executable code. The package that contains the executable code for your program in other words. Your question seems to be confusing a Microsoft term with another term perhaps. Can you clarify your question.
You can organise modules using Namespaces. With Namespaces you can make one for each logical grouping of modules within your assembly.
So if you have a Utlity assembly with some string helpers and some file helpers you could put the string helper modules in a Namespace called Utility.StringHelper and the file helper modules in an Namespace called Utility.FileHelper.
I think you may be confusing an assembly (which is Microsoft.NET terminology for a DLL or EXE file - a binary package of compiled code) with assembly language (the low-level programming languages based on symbolic representations of underlying machine code instructions)
In the context of Microsoft .NET assemblies, logical grouping of modules means organizing your code namespaces according to the role it performs - such as System.Data.SqlClient
vs. System.Data.OledbClient
- and organized into assemblies (usually .DLL files) so that each assembly forms a cohesive, clearly-defined collection of functions and classes.
For example, all Microsoft's library code for dealing with HTTP, HTML and other Web technology is packaged in the System.Web
DLL - and within this DLL there are multiple namespaces so you can selectively including various parts of this technology. This minimises the number of physical DLL files you need to manage, whilst keeping the various responsibilities within those DLLs clearly separated using namespaces.