As the name implies, it is like an application, it can be accessed like a website, but once you change it, if you change a piece of logic, you have to recompile it to see the effect of the change when the website is accessed.
In my recent internship, I used a web application to do the design of the control, and then generated the dll file, copying the dll file to the bin below the website, so the role of this web application is only designed as the entire website. A small part, just like an application module.
For the namespace problem, webApplication will automatically put the class under the applicationname namespace, no matter what the file is under, can refer to each other no problem. It is said that some people have deleted the designer and used it as a website to cause some namespace errors. They have not tried it.
By the way, when you generate the dll, please pay attention to the version of .Net FrameWork, which matches the configuration of the website. Otherwise, the error "Unable to load the assembly" appears.
For namespaces, try many ways to find that classes can only be referenced elsewhere in App_Code, but namespaces defined outside of App_Code can't be referenced, and there may be other ways to solve them. . .
App_Code can have units in different languages, but need to be placed in different folders and registered in the webconfig file of the root directory.