通过使用JavaScript执行多重生存周期 ID cookies来获得ASP更多功能。
建立良好客户端功能的基础
当我很小的时候,父亲是一名建筑工人。在夏天,我偶而也会充当一名小伙计,从事住宅建设工作。通过仔细观察,我掌握了一些建筑的基本概念。这些观点同样也可适用于程序设计中。其中最重要的观点莫过于所有的建筑都依赖于一个优质的基础。这一观点无论对于盖房子来说还是对于应用软件来讲都一样正确。如果基础是薄弱的,那么所有的上层建筑都将坍塌。
由于MSC是 以cookie为基础的,因此JavaScript 的cookie 功能是基础的第一层。这些功能可在特定的数值上建立cookie;得到一个现存的cookie数值;删除一个现有的cookie——因此他们的名称依次为:setCookie, getCookie, 和deleteCookie.。这些功能与标准JavaScript cookie功能是一样的,每个人都可以用它来处理cookie的基本任务。这其中只有一个例外,即getCookie功能使用的是常规表达式。
基础的第二层是二分法搜索(binary search)。它可被更高级的函数调用来搜索某一特定的生存周期 ID于MSN中。对于那些在计算机课上打盹的伙计们来说,二分法不失为一种搜索排序数组的有效方法。由于数组已被排序,因此不需逐一检查每个条件匹配要素。取而代之的是,数组可被一分为二,之后检验其中间的要素。如果它比搜索关键字大的话,程序将会重复以上步骤并使用数组第一部分重新检验;如果它比搜索关键字小,则数组的第二部分将被用来搜索。程序会重复这一步骤直到找到匹配条件,或匹配条件根本不存在。匹配条件一旦被发现,程序会返给调用函数一个匹配要素索引;反之,返回-1。
基础的第三层是实用程序(utility)功能,它的目的是在MSC中查找一个特定的周期 ID并将它返回给呼叫者。Find周期将MSC拆分为单独的周期 ID, 并进一步将其拆分为独立的ID子系统。这些ID子系统之后将被传递至对分搜索(binarySearch), 再由其向呼叫者返回一个数值。
基础的第四层是dotNet功能,它用来判断当今的页面是classic ASP 还是 ASP.NET,这在决定周期 ID cookie格式并因此获知需要搜索的内容时会有差别。
在classic ASP中,周期 ID式样如下:
ASP sessionIDGQQGQGCS=JHMBOBKCBINEHLPKJHOPABBE
注:只有在ASP周期ID部分中,周期与周期之间保持一致。
在ASP.NET中,周期 ID式样如下:
asp.net_session id=jhmbobkcbinehlpkjhopabbe
注:只有cookie数值不断变化。
基础的最后一层是destroy周期功能。它破坏当今的周期 ID cookie, 并使ASP给客户一个新的周期 ID.这一过程由搜索document.cookie通过查找dotNet指定的周期 ID cookie完成。一旦cookie的名字被找到,它就会传递给deleteCookie, 再由其将该cookie破坏。
