To create quality software many things have to be taken into consideration outside of the algorithms within the source code. One of the most important aspects of quality software development is organization. This series of posts will deal with the main organizational concepts within the ProTrans software world, including but not limited to the web folder structure, the solution and project structures, and even the naming conventions used. If everyone assists in keeping the software-related objects organized it will increase the efficiency in which we code, as well as improve on the readability and therefore maintenance costs associated with development.
First, we will discuss the ProTrans website folder structure. Before I get into the structure too deep, I should mention that a few decisions were made prior to coming up with this folder structure.
The decision to place all of our web applications (for the time-being) into one project was a conscience decision based on the fact that the negative aspects of if we start splitting them up, the management of the configuration files as well as the increased difficulty that comes with deployment out-weighed the benefits. You might have noticed that previously developed web applications such as AccountingReports and OperationReports, are no longer being used, and the web pages inside of these projects have been migrated inside of the ProTransWeb project. There are some costs associated with this decision, such as not having the ability to segregate the web applications on the server into separate application pools, we are opening ourselves up to the ProTransWeb dll growing to be too large. These costs are manageable and can be dealt with later, but in order to get us moving in a positive direction without the added complexity of dealing with multiple projects and solutions, we decided to group all web apps into ProTransWeb.
Now onto the folder structure itself. There is not much to discuss here, other than show the skeleton that we have (which can be downloaded at
http://indypro2/PTDev/Shared%20Documents/Enterprise/Architecture/Coding%20Standards/ProTransWeb%20-%20FileSystemStructure.doc). The main points are that there are three levels of presentation pages...public, customer-based, and internal. This is going to help in how we secure our site as well (which I'll discuss in a later post), because our security model is folder based (meaning that there is no security on stuff inside of public, you have to be signed in to get to stuff inside of customer-based, and you have to be signed in and a member of an internal role to be authorized to view a page within the internal node of pages). Inside of the internal folder there are all of the business unit folders. Inside of these business unit folders you should try and group certain multi-page projects, and put reports in the reports folder, etc. When thinking of were to place projects and pages, just think of what is the most simple and intuitive place to put it, and discuss it with your co-developers a little. There are also other system folders to hold things like UserControls, Masterpages, scripts, etc.
If you have any questions about the folder structure or you have a better idea of how to organize it, please let me know.
Thanks