博客风的程序
不知道这边有没有朋友玩asp.net开发的……身边找不到什么人交流asp.net……郁闷哪……
原文网址:http://www.blogwind.com/Wuvist/comment.aspx?Article_id=4801
博客风现在系统终于能够让我自己有点满意……当然还有无数的东西可以做……
从技术的角度来说说博客风……
整个网站是使用asp.net + MS SQL 2000开发的……编程语言使用的是VB.net……C#的开发速度比起VB来,是要慢很多的……老实说,到目前为止整套系统都不算复杂,我不需要也不会使用.Text那样的程序设计……
博客风其实有两个域名,一个是 http://www.blogwind.com 另一个是 http://blog.xinchaoliu.net 后者是一开始还没有申请独立域名的时候使用的,一直保留至今,一方面是在主域名解析出问题的时候可以拿出来应急,一方面是某些搜索引擎,比方说百度对blog.XXX.xxx的域名里面的内容比较感兴趣些……
在用户申请新的blog时,系统自动在根目录下添加与用户ID一致的新目录,同时根据用户选择的模板复制进相应的default.aspx, usercate.aspx, comment.aspx三个文件。建立新目录是为了让用户可以使用 www.blogwind.com/ID 的方式访问自己的博客,复制进新的文件,是为了实现模板的功能。
这个三个文件其实差别不大,或者,可以这样子理解,default.aspx显示多篇blog的内容,usercate.aspx显示多篇blog的标题,comment.aspx显示单篇blog的内容以及相应的blog回复。
坚决使用codebehind,三个文件的里面顶多只是使用<%=XXX%>以及各个repeater控件来显示内容,所有的数据处理在独立的.vb codebehind文件里面完成。所有的博客页面都是调用同样的codebehind文件的,这是用asp.net的优势。
因为三个文件纯粹负责数据显示,这使得实现博客模板替换非常之简单,用户换新的模板,系统只是替换掉这三个文件而已……
如果让用户自由编辑这三个文件内容的话,是可以实现让用户完全自定义模板的……这也是要在各个用户目录里面复制新的文件,而不是读取同样的文件,虽然暂时不提供完全的自定义模板功能,但是要给将来发展留余地。
各个模板使用样式表、图片等则就使用相同的了。
保存新的blog回复一开始是做在comment.aspx里面的,这会造成用户刷新页面时重复提交表单,重复保存回复。后来便,统一将保存blog回复交给savecomment.aspx了……savecomment.aspx是唯一的,接受所有blog提交的新回复,处理之后自动转跳回提交表单的页面。
三个页面中均有相同的“侧栏”,显示用户的资料、链接、网志分类、存档等……
从一开始就一直在考虑是否要将这个“侧栏”给独立出来做user web control。最终还是决定不要,这就造成在三个页面的codebehind文件中有大量重复的代码去处理“侧栏”中的内容。同样的,这也是为了将来的发展考虑……“侧栏”也不一定是要在一边……在某些模板设计中,也许用户要把它放在左右两边,一边显示资料,一边显示链接什么的……
虽然,到目前为止,还没有这样的模板……
当然,我也可以把学csszengarden把整个页面都给图层化,然后纯粹使用样式表来实现模板……只是,有功力编写这样样式表的人不多……抄起新模板来会痛苦很多很多……
不过,“侧栏”中的当个内容则渐渐做成了user web control……比方说,用户登陆的那块……那块东西的排版,如输入框高宽、按钮颜色等是纯粹用在不同模板中样式表里定义。
终极目标是让用户可以把这些control拖来拖去,自己决定是否要显示以及显示的位置……poco早就实现这一点了……新出来的wallop、MSN space甚至dotnetnuke 3.0也是有这样的功能……还没来得及去研究它们的程序,将其“参考”过来……
default.aspx底部的翻页链接,也是一个user web control……哇咔咔……这算是我比较满意的设计技巧了……有谁考虑过将显示“上一页”、“下一页”的东西也做成user web control呢?似乎没有……default.aspx本来是没有翻页功能的,做成user web control后,给原有模板添加翻页功能时代码修改量非常非常的少……
用户写blog的编辑器有两个……一个是最简单的multiline textbox,一个则是freetextbox 1.63破宝汉化+我自己修改版……有点不好意思其实……我给FTB修改的地方很少……只是修改了它的图片管理文件,让各个用户可以在不同目录下管理各自的图片……还有,就是自己写多了一个emot.html方便用户在freetextbox里面插入QQ表情等小图片……这部分是纯粹用javascript实现的……自己写javascript跟asp.net控件交互操作我觉得是用asp.net网站的基本功……只是,好像很多人都忽略了……
整个博客风系统,我都尽可能的兼容各种浏览器……但是,我优先保证在IE下的显示……电脑上装有IE/firefox/Opera……每添加新页面的时候都会自己先在这三个浏览器中跑一遍……我得出来的结论是:Opera是垃圾。
一直想把freetextbox升级到2.0以上,因为1.63版不支持mozilla/firefox……只是,我编写的emot.html在2.0以上的freetextbox中使用不了……得修改现有的javascript……曾经折腾了一个下午没有折腾出来,便没有去先不去管它了……毕竟,用IE的人还是多……
整个系统使用存储过程到了歇斯底里的地步……往往连异常简单的一句sql select语句都要写成存储过程……有两个原因……第一,当时刚刚学会编写存储过程,像show off……第二,方便给系统做小调整……整个网站是用VS.Net 2003开发的,所有的类都编译到了一个dll文件里……如果为了修改一个sql语句而重新把整个网站编译一次未免太傻了……
用户密码是经过md5 hash之后再储存进数据库里面的……如果用户登陆时选择使用cookie保存登陆信息,则是将密码hash值转成文本后保存在cookie里面……转换的过程有点“错误”……因为当初在做的时候还不懂得如何完美的在bytes跟string之间做转换……后来懂了,但是,懒得去改……保留这样的“错误”也可以防止人窃取cookie然后使用暴力法破解密码……
暂时就想到这么多了……
原文网址:http://www.blogwind.com/Wuvist/comment.aspx?Article_id=4801
博客风现在系统终于能够让我自己有点满意……当然还有无数的东西可以做……
从技术的角度来说说博客风……
整个网站是使用asp.net + MS SQL 2000开发的……编程语言使用的是VB.net……C#的开发速度比起VB来,是要慢很多的……老实说,到目前为止整套系统都不算复杂,我不需要也不会使用.Text那样的程序设计……
博客风其实有两个域名,一个是 http://www.blogwind.com 另一个是 http://blog.xinchaoliu.net 后者是一开始还没有申请独立域名的时候使用的,一直保留至今,一方面是在主域名解析出问题的时候可以拿出来应急,一方面是某些搜索引擎,比方说百度对blog.XXX.xxx的域名里面的内容比较感兴趣些……
在用户申请新的blog时,系统自动在根目录下添加与用户ID一致的新目录,同时根据用户选择的模板复制进相应的default.aspx, usercate.aspx, comment.aspx三个文件。建立新目录是为了让用户可以使用 www.blogwind.com/ID 的方式访问自己的博客,复制进新的文件,是为了实现模板的功能。
这个三个文件其实差别不大,或者,可以这样子理解,default.aspx显示多篇blog的内容,usercate.aspx显示多篇blog的标题,comment.aspx显示单篇blog的内容以及相应的blog回复。
坚决使用codebehind,三个文件的里面顶多只是使用<%=XXX%>以及各个repeater控件来显示内容,所有的数据处理在独立的.vb codebehind文件里面完成。所有的博客页面都是调用同样的codebehind文件的,这是用asp.net的优势。
因为三个文件纯粹负责数据显示,这使得实现博客模板替换非常之简单,用户换新的模板,系统只是替换掉这三个文件而已……
如果让用户自由编辑这三个文件内容的话,是可以实现让用户完全自定义模板的……这也是要在各个用户目录里面复制新的文件,而不是读取同样的文件,虽然暂时不提供完全的自定义模板功能,但是要给将来发展留余地。
各个模板使用样式表、图片等则就使用相同的了。
保存新的blog回复一开始是做在comment.aspx里面的,这会造成用户刷新页面时重复提交表单,重复保存回复。后来便,统一将保存blog回复交给savecomment.aspx了……savecomment.aspx是唯一的,接受所有blog提交的新回复,处理之后自动转跳回提交表单的页面。
三个页面中均有相同的“侧栏”,显示用户的资料、链接、网志分类、存档等……
从一开始就一直在考虑是否要将这个“侧栏”给独立出来做user web control。最终还是决定不要,这就造成在三个页面的codebehind文件中有大量重复的代码去处理“侧栏”中的内容。同样的,这也是为了将来的发展考虑……“侧栏”也不一定是要在一边……在某些模板设计中,也许用户要把它放在左右两边,一边显示资料,一边显示链接什么的……
虽然,到目前为止,还没有这样的模板……
当然,我也可以把学csszengarden把整个页面都给图层化,然后纯粹使用样式表来实现模板……只是,有功力编写这样样式表的人不多……抄起新模板来会痛苦很多很多……
不过,“侧栏”中的当个内容则渐渐做成了user web control……比方说,用户登陆的那块……那块东西的排版,如输入框高宽、按钮颜色等是纯粹用在不同模板中样式表里定义。
终极目标是让用户可以把这些control拖来拖去,自己决定是否要显示以及显示的位置……poco早就实现这一点了……新出来的wallop、MSN space甚至dotnetnuke 3.0也是有这样的功能……还没来得及去研究它们的程序,将其“参考”过来……
default.aspx底部的翻页链接,也是一个user web control……哇咔咔……这算是我比较满意的设计技巧了……有谁考虑过将显示“上一页”、“下一页”的东西也做成user web control呢?似乎没有……default.aspx本来是没有翻页功能的,做成user web control后,给原有模板添加翻页功能时代码修改量非常非常的少……
用户写blog的编辑器有两个……一个是最简单的multiline textbox,一个则是freetextbox 1.63破宝汉化+我自己修改版……有点不好意思其实……我给FTB修改的地方很少……只是修改了它的图片管理文件,让各个用户可以在不同目录下管理各自的图片……还有,就是自己写多了一个emot.html方便用户在freetextbox里面插入QQ表情等小图片……这部分是纯粹用javascript实现的……自己写javascript跟asp.net控件交互操作我觉得是用asp.net网站的基本功……只是,好像很多人都忽略了……
整个博客风系统,我都尽可能的兼容各种浏览器……但是,我优先保证在IE下的显示……电脑上装有IE/firefox/Opera……每添加新页面的时候都会自己先在这三个浏览器中跑一遍……我得出来的结论是:Opera是垃圾。
一直想把freetextbox升级到2.0以上,因为1.63版不支持mozilla/firefox……只是,我编写的emot.html在2.0以上的freetextbox中使用不了……得修改现有的javascript……曾经折腾了一个下午没有折腾出来,便没有去先不去管它了……毕竟,用IE的人还是多……
整个系统使用存储过程到了歇斯底里的地步……往往连异常简单的一句sql select语句都要写成存储过程……有两个原因……第一,当时刚刚学会编写存储过程,像show off……第二,方便给系统做小调整……整个网站是用VS.Net 2003开发的,所有的类都编译到了一个dll文件里……如果为了修改一个sql语句而重新把整个网站编译一次未免太傻了……
用户密码是经过md5 hash之后再储存进数据库里面的……如果用户登陆时选择使用cookie保存登陆信息,则是将密码hash值转成文本后保存在cookie里面……转换的过程有点“错误”……因为当初在做的时候还不懂得如何完美的在bytes跟string之间做转换……后来懂了,但是,懒得去改……保留这样的“错误”也可以防止人窃取cookie然后使用暴力法破解密码……
暂时就想到这么多了……
在网上,没有人知道我是一头猪还是一只猫