namespaces allows to structure the project into meaningful . where as Assembly contains collection of compiled .net code that can be DLL or .EXE files
Acc to me : namespace can use within an application. if you want to use it in diffrent other application you have to make an assembly of that.
namespaces are logical name for hierarchy of classes. Assembly name is simple file name of DLL like we have for any word or excel file.
A namespace is a logical naming scheme for types in which a simple type name, such as MyType, is preceded with a dot-separated hierarchical name. Such a naming scheme is completely under control of the developer. For example, types MyOffice.FileAccess.A and MyOffice.FileAccess.B might be logically expected to have functionally related to file access. The .NET Framework uses a hierarchical naming scheme for grouping types into logical categories of related functionality, such as the ASP.NET application framework, or remoting functionality. Design tools can make use of namespaces to make it easier for developers to browse and reference types in their code. The concept of a namespace is not related to that of an assembly. A single assembly may contain types whose hierarchical names have different namespace roots, and a logical namespace root may span multiple assemblies. In the .NET Framework, a namespace is a logical design-time naming convenience, whereas an assembly establishes the name scope for types at run time.