DUWAMISH? 7 is a Microsoft's ASP.NET-based distributed application example. ?
???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????
Due to the work of work, I have to study it. I have a personal experience, I don't dare to share it, so I share it with the public. One and discuss ASP.NET, Wan Wang people will be enlightened,. ?
???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????
?? BTW? There is a structure and process in msdn.net, and I summarize my experience on this basis, and make a supplement on it. If you have any questions, you can check it. ?
???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????
?? Duwamish's core file:?
???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????
?? systemframework / applicationassert.cs? //? Verify data legitimacy?
?? systemframework / applicationconframework.cs? //? Define the framework for reading and writing?
?? CommON / duwamishconfiguration.cs? //? Read and write configuration (via ApplicationConfiguration)?
???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????
?? The above is the core of the entire application, and there is an ApplicationLog.cs, a role, and configure. ?
???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????
?? Web / web.config? //? Application Profile?
?? Web / pagebase.cs? //? Web Forms page Base class for ASPX derived, which define data shared between the page (such as user, order information, definition with attributes)?
?? Web / modulebase.cs? //? Web control base class for module / *. ASCX derived, defined all of the application paths and other shared information required for all modules (definition)?
?? DUWAMISH? 7 is a small application (relative to more business applications), but Microsoft still defines its structure, framework, and hierarchy, making it sincere advice:? P?
???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????
?? Is it complicated? It is not difficult to master. ?
???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????
?? User interface --Web?
?? Business appearance --BusinessFacade?
?? Business rules --BusinessRules?
?? Data Access - DataAccess?
???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????
This is like this, a rigorous, clear, and easy-to-maintain web application. We use a user login process as an example to explore its data flow. ?
???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????
?? Web / Secure / Logon.aspx accepts user login form submission, triggers the Logon.logonButton_Click event (204 lines in web / secure / logon.aspx.cs)?
???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????
?? WEB / Secure / Logon.aspx.cs 243 lines:?
???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????
?? CustData? =? (new? Customersystem ()). getCustomerbyemail (LogoneMailTextBox.text, logonpasswordtextbox.text);?
???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????
?? BusinessFacade (Business / Facade / Customersystem.cs) implements "User Account Access Interface" logic?
???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????
?? Where businessFacade.getcustomerbyemail () (45 lines in Business / Facade / Customersystem.cs) defines the "Read User Information" interface through the EMAIL?
???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????
58 lines in Business / Facade / Customersystem.cs:?
???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????
?? using? (DataAccess.customers? CustomersDataAccess? =? new? dataaccess.customers ()) ??? {?
??? DataSet? =? CustomersDataAccess.loadCustomerbyemail (emailaddress);?
??}?
???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????
?? DataAccess (DataAccess / Customers.cs) implements "User Account Data Access" logic?
???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????
?? Where Customers.LoadCustomerbyemail () (217 lines in DataAccess / Customers.cs) Defines the "Read User Information" interface through the Email - By accessing the SQL? Server stored procedure "getCustomerbyemail"?
???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????
?? 227 lines in DataAccess / Customers.cs:?
???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????
?? DSCommand.selectCommand? =? getloadCommand ();?
???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????
?? DataAccess.customers.getLoadCommand () Initialize the stored procedure and parameters and returns its interface (112 lines in DataAccess / Customers.cs)?
???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????
?? 119 lines in DataAccess / Customers.cs:?
???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????
?? LoadCommand? =? new? SQLCOMMAND ("getcuStomerbyemail", new? sqlconnection? (duwamishconfiguration.connections);?
???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????
?? Initialize the storage process. Its database connection is obtained by the CONNECTIONSTRING attribute in Common.duwamishConfiguration. ?
???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????
?? CommON DuwamishConfiguration.cs defines the access interface of the application configuration information (by accessing the properties of the class)?
???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????
?? Where the duwamishconfiguration.connetionstring property provides the "Database Connection String Access" interface?
???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????
?? 151 lines in Common / DuwamishConfiguration.cs:?
???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????
?? public? static? String? Connectionstring?
?? {??
??? get?
??? {?
??? Return? dbconnectionstring ;?
???}?
??}?
???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????
?? 107 lines in Common / DuwamishConfiguration.cs "Database Connection String" in the Default Value:?
???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????
?? dbconnectionstring? =? dataaccess_connectionstring_default;?
???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????
107 lines in Common / DuwamiSHConfiguration.cs are set by the "Database Connection String" in the "Application Profile":?
???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????
?? dbconnectionstring? =? ApplicationConfiguration.readsetting (settings,? dataaccess_connectionstring,? dataaccess_connectionstring_default);?
???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????
?? The ApplicaitionConfiguration class in SystemFramework defines the configuration read and write interface (SystemFramework / ApplicationConfiguration.cs)?
???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????
?? Where ApplicationConfiguration.ReadSetting defines the "Read Configuration" interface ????
?? 190 lines in SystemFramework / ApplicationConfiguration.cs:?
???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????
?? public? static? String? Readsetting (NameValueCollection? settings,? string? key,? String? defaultValue)?
?? {??
??? TRY?
??? {?
??? Object? Setting? =? Settings [key];?
???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????
??? Return? (setting? ==? null) ??? defaultValue?:? (String) setting ;?
???}?
??? carat?
??? {?
??? RETURN? DefaultValue;?
???}?
??}?
???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????
At this point, a channel from the interface to the database is successfully opened. User account data is returned to the interface by one layer and is derived by the logic destination defined by the interface. ?