разделения монолитной ASP-страницы
Вам, вероятно, интересно будет взглянуть на то, что станет с обычной ASP-страницей, переработанной по описанным методикам. Вот "притянутый за уши" пример:
Монолитный ASP-файл: showcustomers.asp | Разделенные файлы: | |
<%@Language=JScript%> <html> <head> <title>Customers</title> </head> <body> <% dtBefore = Session("Date_Before"); dtAfter = Request.Cookies("Date_After"); if ((dtBefore==null) (typeof(dtBefore)=="undefined")){ // use default value if empty dtBefore = "01.01.2200"; } if ((dtAfter==null) (typeof(dtAfter)=="undefined")){ // use default value if empty dtAfter= "01.01.1950"; } %> <h4>All Customers between <%=dtAfter%> and <%=dtBefore%> </h4> <% objADOConn = Server.CreateObject("ADODB.Connection"); objADOConn.Open("dsn=DSN_DBSAMPLE;"); rst = objADOConn.Execute(" \ select FIRST_NAME, LAST_NAME \ from CUSTOMER \ where REGISTER_DATE <= "+dtBefore+" \ and REGISTER_DATE >= "+dtAfter+" \ order by LAST_NAME, FIRST_NAME \ ");%> <table><tr><td>First Name</td> <td>Last Name</td></tr> <% while (!rst.EOF) { %> <tr><td><%=rst.Fields("FIRST_NAME").Value%></td> <td><%=rst.Fields("LASE_NAME").Value%></td></tr> <% rst.MoveNext(); } %> </table> <% rst.Close(); objADOConn.Close(); %> </body> </html> | showcustomers.asp | |
<%@Language=JScript%> <!--#include file="/libs/Core.inc"--> <% dtBefore = Core.getSession().getDate("Date_Before", "01.01.2200"); // default value if empty dtAfter = Core.getSession().getDate("Date_After", "01.01.1950"); // default value if empty objEM = Core.getEntityManager(); iter = objEM.selectSet("Customer","AllBetweenDates", dtAfter, dtBefore); %> <!--#include file="_t_showcustomers.htm.asp"--> <% Core.close(); %> |
||
HTML-шаблон: _t_showcustomers.htm.asp | ||
<html> <head> <title>Customers</title> </head> <body> <h4>All Customers between <%=dfAfter%> and <%=dfBefore%> </h4> <table> <tr><td>First Name</td> <td>Last Name</td></tr> <% while (!iter.eof()) { %> tr><td><%=iter.sFirstName%></td> <td><%=iter.sLastName%></td></tr> <% iter.next(); } %> </table> </body> </html> | ||
SQL-шаблон (INI format): /entities/Customer/select/ AllBetweenDates.ora8 |
||
[Params] name=AllBetweenDates type=select entity=Customer INnames=dtAfter,dtBefore INtypes=d,d OUTnames=sFirstName,sLastName OUTtypes=s,s [SQL] select FIRST_NAME, LAST_NAME from CUSTOMER where REGISTER_DATE <= ::dtBefore and REGISTER_DATE >= ::dtAfter order by LAST_NAME, FIRST_NAME |
Допустимо считать, что три простых файла, с явно выделенной функциональностью, поддерживать значительно проще, чем один сложный. Однако, конечно же, все зависит от конкретного проекта и его задач.