您的位置:首页 > 其它

最近一个小Web开发项目的总结

2010-04-28 23:04 363 查看
一直以来很少写Web开发的具体代码,以前是专门有人写这些,我只管管就行了。后来呢,也很少做Web类型项目了,最近有两个项目,牵扯到Web开发,而现在一个人单干,也找不到人来写这些了,只得自己憋手蹩脚的摸索。下面是这段时间的摸索总结。

一、代码生成器确实好用

以前是很反代码生成器的,但真的使用过后觉得很好用——简单、直接且控制力强。我用的是园子里李天平(http://ltp.cnblogs.com/)的动软代码生成器。在此,先感谢一下。不过,在感谢李天平之前,我必须先感谢一下郭嘉。

动软的好处是简单、直接、开源。针对我的应用,我做了以下改进:

(1)Image的处理问题。代码生成器生成的操作Image部分的代码有小问题,不能插入全部的Image对象,这个手动修改了下。

(2)生成的代码没有 partial 关键字,不方便扩展。我修改成产生的所有类都是partial类。这样做有什么好处呢?就是对于每个类,你可以在不修改生成的源文件的情况下,申明某个类实现了某些接口,以对代码进行复用。

例如,假设Album、News、Knowledge这三个类都具有某些相同的属性(ID,Title,AccountId,ViewCount,CreateTime,UpdateTime,等),在代码生成器生成的文件之外,另建一个目录,放一个Interface.cs的文件:

Controls_NewsList

1 public partial class Controls_NewsList : BaseListControl
2 {
3 private Int32 m_categoryId = -1;
4 public Int32 CategoryId
5 {
6 get { return m_categoryId; }
7 set { m_categoryId = value; }
8 }
9
10 protected override Orc.Util.AspDotNet.PagerControl GetPager()
11 {
12 return this.pager;
13 }
14
15 protected override int GetResultCount()
16 {
17 return NewsService.SelectCount(null, this.Mark, this.Mode, this.CategoryId, this.InDays);
18 }
19
20 protected override void BindData(int page)
21 {
22 this.rpList.DataSource = NewsService.SelectData(null, this.Mark, this.Mode, this.CategoryId, this.InDays, this.OrderBy, this.PageSize, page);
23 this.rpList.DataBind();
24 }
25 }
这样一封装就超级好用,可以显示pager也可以不显示,可以用在分页里,也可以用在栏目的首页,且代码量几乎降低到最低,而性能几乎提高到最高,还可以根据各种参数进行缓存。

四、抱怨

尽管使用了这些技巧,Web开发还是太累。一个月坐下来还没做其它项目三五天赚的钱多,并且技术支持比其它类型项目难得多。做一个Web项目后悔一次,今后,尽量不做了,除非价格很高或自己用。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐