-- 系列文章与Stella Forum v2.0搭配使用效果更好 --

下面开始,我们一起来做一个论坛吧。
其实很简单嘛,先分好论坛的页面(注册,发帖,帖子浏览等等),然后就开始写代码。比如我们做这个注册的页面:
1.在dreamweaver中画好页面
2.复制主要代码到visual studio .net 2003中,拖两个textbox,一个button到页面上。
3.双击button控件,开始写button1_onclick方法。
4.在方法中要写得东西:用户输入验证、检查输入的用户名和email是否已经存在、用户密码加密、存入到数据库...好多啊,写完后,看着长长的代码,我自己都晕了,幸好我这个人意志比较坚定,哈。

好,写完一个页面了,感觉不错,其他的页面如法炮制。漫长的写代码的旅程........

几 天之后,被一个个几百行代码的视图折磨的快吐血的我终于写完了一些主要的页面。来运行一下吧,我小心翼翼地打上网址http: //localhost/stella2/default.aspx,default.aspx主要是显示所有的板块和一些统计信息,漫长的等待后……出 错了!!真晕啊,幸好有出错提示,我打开vs的相应页面代码看看...又是漫长的等待,我的机器是p42.0+256m的,又在vs上装了一个 Broland together 2.0,我还顺便开了QQ和winamp,因此现在要打开这个几百行代码的文件真是有些困难,好在终于打开了,设断点,调式,又是等待....哦,原来是 数据操作那里把一个表名写错了,赶紧改过来,再运行,还是出错...55555,要在那么多代码中设置合适的断点可不容易啊,再调试,等待....等 待....等待....好像vs死掉了哎...
于是我做了一个决定,把所有的和数据访问相关的代码写到另一个项目中, 然后在web项目中引用这个项目,以达到简化代码和方便调试和修改的作用。经过几天的奋斗,终于整理好了这个东西。现在那些页面的代码看上去清楚多了, (虽然还是很多,因为一些数据处理和验证都放在那里),再运行...又出错了,不过这次提示一看就知道是数据操作那里出问题,好办,打开数据操作的项目中 的相关文件,修改之,而web项目那里完全不需要改动,真是舒服啊...
可是舒服的日子过了没几天,问题又来了,网上有朋友说,小n,你那个论坛的用户密码修改和取回应该这么这么做,我一听,果然有道理,于是就找到相应的页 面,找到相关的代码,修改之,然后又有朋友说,小n,你的论坛的错误信息显示应该那么那么做,我一听,果然有道理(...),于是就找到相关的页 面....这次是错误信息显示啊,这页面可多了去了,于是又开始了漫长的修改、出错、调试、又出错....好容易改完了,网上传来了消息..著名的某某某 密码术被破解,现在连初上网的小朋友都可以解开加密的代码...会不会这么巧?我就是用的那个加密算法啊,于是又....
经过这么几次折腾,我一见QQ上有头像在动,就感到晕:不会又有新主意和新消息了吧?好的建议不能不接受,可是从页面代码中找逻辑处理的代码并修改的痛苦我实在是受不了了....
于是我又做了个决定:把数据处理和业务逻辑处理相关的代码写到一个单独的项目中,这样,web项目那里只是负责显示和获取数据,新建的这个项目负责处理数据,最后由这个项目把合适的数据送到数据操作项目或者web项目。把这个分离页面显示和数据处理的工作完成后,页面的代码看起来更清楚了,而且数据处理的方法如果有变,也不需要再动web页面了。
这次改动完成后,我没有立刻写代码,而是整理了一下整个论坛的结构
1.发现有很多代码都是重复使用的,比如加密操作,比如错误日志记录工作...于是我又做了一个决定,把这些重复性的东西放到一个单独的项目中去,以后修改就只动这个项目,避免大动干戈的到处乱翻...
2.发现很多地方对论坛设定的使用都是直接使用了数字,比如说一个页面显示15个主题,论坛发帖的间隔时间是30秒,等等,这样以后要是想修改的话就很麻烦了,于是我又做了一个决定,把这些设定都用单独的类乘放,为了清晰结构,把这些负责设定的类放到一个单独的项目中,以后修改就只动这个项目,避免大动干戈的到处乱翻...
3.用户输入检查也需要整理,因为今天你想让用户名不能包含中文字符,但是说不定后天就想使用中文字符...为了避免像一开始那样从代码堆中找逻辑的痛苦,我又做了一个决定(好多决定了...),把用户输入检查单独放到一个项目中,以后修改就只动这个项目,避免大动干戈的到处乱翻...

今天先写这么多,大家看得时候可以对照着论坛架构图。剩下的部分包括webcomponents、interface、factory、services,这些东西放到下一篇文章中介绍。

Stella 知识库--解析论坛的架构(1)相关推荐

  1. AlphaFold2源码解析(4)--模型架构

    AlphaFold2源码解析(4)–模型架构 我们将Alphafold的流程分为一下几个部分: 搜索同源序列和模板 特征构造 特征表示 MSA表示与残基对表示之间互相交换信息 残基的抽象表示转换成具体 ...

  2. 关于地铁ATS系统列车进站时间的解析与服务架构

    关于地铁ATS系统列车进站时间的解析与服务架构 思路: 1.分析ATS系统原始数据 2.清洗并转换数据 3.将数据存入Mysql 4.构建数据接口 5.生成Jason格式字段 6.前台调用 第一章 分 ...

  3. 深入解析ffmpeg-(1)基础架构

    深入解析ffmpeg-(1)基础架构 本文编写时使用的最新ffmpeg4.4版本,与ffmpeg3.x会存在一些区别. 一.主要模块 主要模块: libavcodec 提供格式编解码服务 libavf ...

  4. shell脚本 一键部署 Lnmp 及社区论坛 服务架构

    shell脚本 一键部署 Lnmp 一键部署 Lnmp 一键部署 注:亲,记得把所需要的软件包,先放到/opt目录中:以及该机子的内存大小.核数先设置好! #!/bin/bash #先配置好yum e ...

  5. java 移动支付接口开发,移动支付平台间接口报文解析技术核心架构实现、及平台交易处理项目全程实录教程...

    课程介绍:本课程抛开理论.以项目为驱动,适用于初次接触报文收发.组装解析以及交易分发的同学或开发人员.从报文规范的阅读.需求提炼.到架构实现,做到由浅入深的讲解.涉及到的内容或技术有:使用JAXB转换 ...

  6. Stella 知识库--模型类的设计

    -- 系列文章与Stella Forum v2.0搭配使用效果更好 -- 这里的模型类,在有些地方也叫"业务实体"等名字,一句话,是一些代表了软件世界需求的剥离了行为的类. 没有了 ...

  7. 骁龙AR2平台解析:分布式架构开启轻量化AR眼镜新时代

    在今天的骁龙峰会2022上,高通面向轻量化AR眼镜推出了专属SoC:第一代骁龙AR2平台,这套方案将骁龙XR1.骁龙XR2的单片式方案,改为多芯片分布式SoC方案,同时融合了分离式渲染,实现一整套的A ...

  8. 万字长文解析:分布式架构、SOA、微服务架构、API网关、ESB服务总线架构之间的关联及演进

    1架构演进 架构十五年:改变的是形态,不变的是目的 业务驱动架构形态变化 过去十几年,随着互联网发展以及业务的多样化,系统的架构也在不断发生变化,总体上来说大体经历了从单体应用架构-垂直应用架构-分布 ...

  9. 阿里巴巴资深架构师深度解析微服务架构设计之SpringCloud+Dubbo

    微服务 软件架构是一个包含各种组织的系统组织,这些组件包括Web服务器,应用服务器,数据库,存储,通讯层),它们彼此或和环境存在关系.系统架构的目标是解决利益相关者的关注点. ​ 编辑切换为居中 添加 ...

最新文章

  1. Android使用ksoap2-android调用WebService学习
  2. Apache用户目录枚举工具apache-users
  3. e.printStackTrace()会导致锁死?这仅仅是打印,怎么可能?
  4. d盘莫名其妙被占空间 win10_Win10不好用?你不可不知的Win10技巧
  5. python列表间隔合并_Python使用zip合并相邻列表项的方法示例
  6. hadoop 部分问题
  7. java 打开sql数据库_idea 使用Java连接SQL Server数据库教程
  8. 支付宝个人账单出来了,这里有最全的查看攻略!
  9. telnet到设备里 php_金融行业思科设备典型网络故障案例:76系列典型案例(一)...
  10. java学习(18):巩固练习
  11. Java中操作Excel的3种方法,太好用了!
  12. Java系列笔记(3) - Java 内存区域和GC机制
  13. 数据库mdf和ldf文件_如何将SQL数据库文件(MDF和LDF)移动到另一个位置
  14. 数据库问题6-將系統資料表對應至系統檢視
  15. 恩佐盒子服务器维护,恩佐宝盒有苹果版吗
  16. 3dmax2020渲染器下载3dmax2020渲染器VRay4.2下载安装教程
  17. 浏览器的历史浏览记录_如何在任何浏览器中清除历史记录
  18. linux安装字体文件怎么安装路径,Linux安装字体文件
  19. 关于Chrome浏览器主页被2345篡改
  20. 【js获取当天时间0点和23点59分59秒】

热门文章

  1. Python中对象是否可以迭代iterable
  2. 云计算与云原生技术系列文章
  3. 4G EPS 中的无线资源类型
  4. Ceph 的用户管理与认证
  5. yii2-wx / 微信二维码接口
  6. linux基本命令之rsync
  7. JAVA NIO之Direct Buffer 与 Heap Buffer的区别?
  8. Android NDK JNI WARNING: illegal start byte 0x
  9. SQLSERVER DISTINCT的反例
  10. CCNP第四天(2) 配置、校验OSPF特殊区域类型-完全Stub区域