A friend said that a general structure should be written. It makes sense to think about it, so let me introduce you to DotNetNuke's execution process. Basically, I'm just copying his basic ideas.
A site, no matter how rich the content, channels, columns, and so no matter how many, its final form of expression is a page. The system directly to deal with the page, as to what the content on the page, this does not matter, put what module, what is presented content. and the traditional CMS system "home", "List page", "Terminal page" of the three categories are completely different, we think, whether it is the home or list page, it is nothing more than a "page." And as long as it is a page, it must have the following characteristics: There are several areas above, each area to display a number of content. In this system, if the "article List module" is loaded then the list page, if the "article module" is loaded, then the Terminal page.
Characteristics
One, the entire site has only one page. Very easy to centralize management.
Second, all functional modules can be unrelated to each other. Easy to expand.
Site main information in the database centralized storage, the page information is also unified management, and even the generation of all URLs are also concentrated in a management, very convenient for late urlrewrite processing.
Basic process of system operation
The system first requests a unique page/default.aspx.
According to the parameter tabid= to determine which page is requested.
Permission to judge. Redirect to the login page if the permissions are not met.
Read page information. Determine which page should load the skin and load it.
The page skins load the function module according to the page module information.
Each function module executes its own logic and ultimately displays the final results of the page rendering in the/default.aspx page.
/default.aspx execution ended, one request ended.
Basically DotNetNuke's mentality is these, you have to say what unfathomable technology is not, the key is the skin part, and the implementation step part has many improvement space.
DotNetNuke's discomfort.
1, skin creation problem. It uses the Td,div tag as a container. This results in a lot of id= "Ctl000_xx" on the final page. These tags may be in the time and the artist to write the CSS response.
My solution for this is to use placeholder as a container so that there is no extra ID on the page.
2, permission issues. This thing was really troublesome when it was deployed, so I paid special attention to this problem.