c#Struts框架理念和自制Struts框架上 简单版(2009-06-10)

引言:为什么我要研究框架?
将主要的时间投入到最重要的工作上才是最最高效率的工作方式(也是最最高效率的编程方式)。为什么要说这句话?不知道,我只是希望将每天的8小时甚至更长的工作时间放到4小时甚至1小时里。(当然不工作也不行,没人给银子嘛)。总之工作的时间越少越好呀!但是时间少不代表工作的内容少,如何能把应该8小时的工作缩短呢?说句废话:“效率高”。如何效率高呢?再说句废话:“方法好”。对方法好就有了一个思考,什么叫做方法好?
我是搞编程的,当然拿编程说事情。一开始,我写代码,有兴趣、不怕苦,刚工作兴奋嘛,可以理解。但是渐渐的我发现来个新任务就要辛苦一次,来个新任务就要辛苦一次,我又不是跑马拉松出身的,渐渐觉得自己有点累了,于是我的观念也随着改变了。我不是仙人能“一劳永逸”,但是我又思想,我相信我能“一劳永易”。
我仔细算计一下也上了1年班了,搞编程也将近10个月了,我发现一个可能只有我才会去抽风想的事情(别人也可能像,我不知道,抽风是说我自己的)。什么是编程?不知道读者您想过没有,先说什么是编程?下面是我对编程的个人理解:
编程就是编写程序。什么是程序?
程序就是命令的集合。什么命令?
命令就是告诉计算机做什么。
那么我就将编程总结为:写一些让计算机做事情的命令,然后不管它,让它自己抽风(执行)去 。
我认为这只是字面的肤浅意思,再怎么说我也做了10个月的编程了,我个人是这样认为的:编程就是将电脑可以认识的信息转换成用户可以认识的信息。使得用户操作电脑可以认识的信息,进行信息的处理。
好现在我知道我在做什么了(编程)。我还要知道我为什么这么做?目的是为什么?我是搞软件开发,所以就缩小点范围,我是为了开发,目的是拿开发出来的项目为公司挣钱(这话纯粹是废话)。
好我知道我工作的目的了,那么什么叫做方法好?我的回答就是:越快速出项目的方法就越好。如何才能快速出来呢?为了说明这个问题,我们先扯一段闲话。
我最早学习的编程语言是大学学的C语言,说实话,和没学一样,不怎么会。只是知道,输入一串命令就可以显示我想要的结果。渐渐的认为那就是编程,后来最毕业设计学习了C#语言,但是也是限于输入一串命令就可以显示我想要的结果。我没想过写完了怎么办,能不能都不知道。后来上班了,通过学习才知道自己以前都是面向过程编程。公司要做项目,我就开始做加班、熬夜,发现我写的代码很多,但是真正用到的很少,做了给多的无用功。而且最最致命的是,现在的写完的代码修改和维护起来实在是不敢恭维,说实话有时候我自己都看不懂我写的东西,更别说别人了。后来在做项目是我发现,我应该学习的不是编程技术,而是编程理念。渐渐我开始从面向过程编程发展到面向字符串编程,认为也很好使。但是发现写完的代码修改和维护起来还是费劲。于是我又更新一下自己的“软件”(这里的软件指的是编程理念),我发现我将传递的字符串改为传递对象更加方面。后来证实现这个叫做面向对象编程。恩,我发现很好,我现在修改和维护起来也方面的多了。可能是不甘于现状的缘故,我还是有顾虑,要是加新内容,改新对象怎么办,我发愁了。因为自己发现想不出什么好办法了。如何能让自己的代码可维护的同时还要可复用、可扩展、灵活性好。郁闷死我了。就在这个时候,一个急于出东西的新项目出现了。
组里出人和外公司合作了一个项目,要求用eclipse开发,我和另一个同事被派了过去。(我感觉:这对我的编程理念有了一定质的转变)。短短一个多月出一个系统,一切从头来,我们该怎么办呢?能不能出来?我满头的疑问。
新来的同事带来一个新的东西——框架。
“框架”我以前从来没有考虑过这个问题,也没用过。我用了一天的时间看看、问问、学学。突然间我的头脑里出现了想法,在这个框架里写程序很爽。我来说说为什么,我以前写程序都是想一步写一步,就算预先想到的问题充其量也就是看到现在写程序的下一步,到头了,但是现在不同了。
现在有了框架,我发现在没写程序之前,我们已经将这个项目从头到尾走完了,每一步做什么很清楚,各个函数各尽其责就可以了。说实话就好像菲迪皮得斯(在公元前490年,希腊在马拉松河谷与波斯皇帝派来的大军展开了激烈的战斗,雅典军队在外无救兵的情况下,团结一心,运用正确的战术技巧,以少胜多,打败了波斯侵略军,取得了辉煌的胜利。当时担任传令兵的菲迪皮得斯奉命将这一胜利消息尽快告诉雅典居民,让受难同胞早些分享这胜利的喜悦。他顾不得路途遥远,一口气从马拉松跑到雅典——距离为42.195公里,到达雅典时他已累得精疲力竭,只说一句“我们胜利了”就倒在广场,闭上了双眼。)一样。如果菲迪皮得斯知道他可以直接打一个电话告诉雅典居民“我们胜利了”的话。仔细想想吧。我要是菲迪皮得斯说什么也要从墓地里跑出来掐死发明电话的人。现在的我就认为和框架相见恨晚了。

现在我知道框架的好处了,可以做到对一个项目的未雨绸缪。知道框架重要性以后下面我就来说说我这次要说的框架Struts。在我们做的这个项目中包括业务层(M)、展示层(V)、控制层(C)
在M层下包括下面几个层:
action:控制表单的路径(或者说跳转)。
dao:DAO是Data Access Object数据访问接口,数据访问:故名思义就是与数据库打交道。夹在业务逻辑与数据库资源中间。
data:对象数据结构对应层。
form:用来映射表单对象。
lbean:用来做数据处理。
在V层下Jsp页面层:
在C层下Strints页面层:
我操作一个表单数据的整体流程(包括操作):
1、将表单上的数据映射成一个对象,set进这个对象。
2、页面提交表单submit(看成对象)。
3、在structs中配置好action对应的页面,以及路径的名称。
4、在提交时做action.do操作,进入action,进行lbean的调用将返回的data对象装入request(或者session等等),返回指向路径。
5、进行lbean后调用进入dao进行数据访问。
6、进入dao后查询数据,返回data对象。
7、在structs中查找对应的路径并进行跳转。
我在前面说过了,这个项目是个java,但是我平时主要的开发是用C#开发,如何将其移植到C#中去呢。我现在急于将我手头的项目进行修改,进行框架的后序调整,真的是很想尽量快的用到structs框架的好。但是,现在的structs是不能进行移植的,因为中间有着一些必须要解决的所谓“难题”。
首先我来摆摆困难:
1、从java编程转换到C#编程
2、我要修改的目标项目是C#的Client/Server,但是我能学习的项目是Browser/Server。
第一条没什么,我在以前的博客“Structs框架使用心得”提过编程重要的是理念和语言关系不大。
重点在第二条,在Browser/Server情况下Structs框架是通过控制表单对象里的内容来控制页面所要展示的数据。但是在Client/Server各个窗体虽然都是对象,可窗体的对象都是不同的。
我在上面曾经说过一次自己对编程概念的理解:编程就是将电脑可以认识的信息转换成用户可以认识的信息。使得用户操作电脑可以认识的信息,进行信息的处理。那么我们可以根据应用项目的特点在做一次转义:编程就是将数据信息、文件信息等一些信息,转换为客户可以接受的友好界面显示出来。所以我在Client/Server和Browser/Server之间找到了共同点,都是将信息友好的显示出来,无非就是显示的形式不同罢了。
所以说我要解决的问题变成了显示方式的问题,和数据处理方面没有必要进行改动,我的设计是只需要在显示数据的时候进行处理即。
我将显示一个界面归纳为4个流程:为了方便读者看明白我举个例子,现在我要将一个数据库中的列表取出来并且显示,列表中包含人名、年龄、性别三个字段。表如下:人名 年龄 性别
赵某 35 男
张某  24 男
孙某 26 女

我要将“年龄在25岁以下所有姓张的男性的用户列表”显示到一个列表框里,我现在用倒序的方法讲解我设计框架的工作流程:(流程的名字有些沿用博客“Structs框架使用心得”中Structs框架中的一些名词)
流程1、如果我要显示“年龄在25岁以下所有姓张的男性的用户列表”,那我就要查询出“年龄在25岁以下所有姓张的男性的用户列表”。那么先假设我已经有了“年龄在25岁以下所有姓张的男性的用户列表”,我只需要显示就可以了。我用已经查询出来的数据填充到显示列表中去。这个层次是显示层次,我把它叫做view,它只管将 “年龄在25岁以下所有姓张的男性的用户列表”(对象集合)填充到窗体中即可。
对象1、我们需要创建一个后缀为“Resultform”的对象传递给流程1,它里面有一个属性是“年龄在25岁以下所有姓张的男性的用户列表”。
流程2、上面我假设我已经有了“年龄在25岁以下所有姓张的男性的用户列表”,现在我就来解决这个对象集合,我需要有“年龄在25岁以下所有姓张的男性”这三个条件进行查询。所以这个后缀为“Lbean”的流程2,定义为数据处理流程,它的作用是将对象2进行数据处理,得到对象1。
对象2、我们需要创建一个后缀为“Conditionform”的对象传递给流程2,它里面有三个属性是“年龄在25岁以下”、“所有姓张的用户”、“男性的用户”。
好,我现在对上面倒叙方法讲解的流程再给读者正着屡一遍。
1、 首先我先点击查询按钮,触发一个Action请求。
2、 将Conditionform条件对象填充好。
3、 从Action中带着Conditionform参数调用Lbean中,进行数据的处理,生成所要显示的Resultform。
4、 从Action中带着Resultform进入窗体,窗体进行展开。
在这里我将这个框架暂时取个名字叫“zjy框架”吧,这里介绍的是个“简单的zjy框架”,后面还会说到“复杂的zjy框架”。

后续 c#Struts框架理念和自制Struts框架下 复杂版

posted on 2012-02-02 17:11  张隽永  阅读(379)  评论(0编辑  收藏  举报