路过秋天

同样的3年,有的人从学生到当了MVP了,而我却在原地,卖弄当年的代码,秋天的风,有点凄,有点凉!

最近花了几个夜晚帮师妹整了一个企业网站

背景:

话说年前有个师妹泪眼汪汪,楚楚动情地找我帮她弄个企业网站。

不过那时候,每天都苦B地闪着:“加班中,相信不用多久升职加薪,当上总经理,出任CEO,迎娶白富美,走上人生巅峰,想想还有点小激动呢”。

所以每夜都懒懒地累到不想动,一直拖延到年后,回到广州才动有了写代码的冲动。

想想毕竟是自家师妹,承诺过的还是要还的,所以打算认真负责的花些时间把它整出来。

 

技术选型:

1:时间考量: 

首先这是一个义务型的网站,所以会考虑时间不能占用太多, 尽量满足基础功能,比较异想天开的功能先忽略。

整体前后沟通和小调整,历长1-2周,实际编码时间,大概24小时内,换算起时间,那也是三个工作日,六个夜晚啊。

2:技术选型:MVC还是WebForm:

A:时间不能占用过多,开发周期不能拉长。

B:个人能临时提供的服务器是2003,只有.NET 2.0,后期可能会转移到对方购买的虚拟主机,所以部署要方便。

C:友好的URL并不是对方在乎的。 

所以综合考虑:WebForm。

像MVC,它的优点是:提供简单友好的URL,对外是一个好的唬头,MVC架构分层思想对新手是一种引导。 

3:数据库选型:MSSQL?Access?Sqlite?

用MSSQL,在这种简单的企业站里,大财小用了。

Access:拥有最弱的并发限制,64K,这个在我以前QBlog系列文章里,把它优化上天了,后来还是离开了。

Sqlite:这个需要最高的信任权限,某些虚拟主机商可能会不支持,而且并发能力和Access差不多一个级别。

 

以我多年的实战经历,这里我选择文本数据库,这里有几个重要思考因素。

1:数据量少:少到可以预估的时间内,文章不会超过1千。

2:占用资源少:目前VPS就1G内存,数据库免费跑上了sql2000,而且服务器上跑了好几个项目,不适合把这外部的数据放置到自己的项目中。

3:性能要高,抗并发要强:服务器本身配置很低,如果不能抗并发,随便用我提供的分布式压力测试就能搞掉的话,那不坑我自己的服务器。

4:数据的安全性隐私木有要求:这些数据都是可公开的。

综合上面的考虑,MSSQL,虽然能抗并发,这个吃内存,不行,而Access和Sqlite不抗并发,如果选择了它们,意味着我必须考虑到整个缓存机制或生成静态页面机制,这无疑会加长我的开发时间。

 

好在我发现发了文本数据库:刚好满足以上的条件,而且文本数据库一直在应用,基本上这个企业站也不在话下,所以最后是用上了CodeFirst方式的文本数据库。

而选择文本数据库,经压力测试,几千上万个并发也不是问题,它天然的内存数据库机制本身就是缓存机制,一次开发,就可以收工了。


实战开发:

1:美工的界面来源: 

首先,她不是美工,我也不会美工,所以,网站需要有参考,好在她给了一款参考网站。

所以,以我的经验,把对方网站那点皮肤弄下来不是什么问题,所以美工的问题看似就解决了,具体看一眼下图,发现是很清秀简洁的:

 2:代码编写:

由于数据库选项是文本数据库,所以基本上就是CodeFirst,定义好业务实体,什么分层,在这里就是浮云:

 

Web.Config就这么一行了:

<connectionStrings>
        <add name="Conn" connectionString="txt path={0}App_Data\db;ts=0"/>
    </connectionStrings>

 

具体运行后产生的数据存储,就在App_Data下的db文件夹下了,一个表就对应一个文本数据了。

另外考虑到文章的字节大,就单独隔离出来一个body文件夹来存放文章,代码也很简单:

public class ArticleBody
    {
        public static void Set(int id, string body)
        {
            string path = AppDomain.CurrentDomain.BaseDirectory + "/App_Data/db/body/" + id + ".body";
            File.WriteAllText(path, body);
        }
        public static string Get(int id)
        {
            string path = AppDomain.CurrentDomain.BaseDirectory + "/App_Data/db/body/" + id + ".body";
            if (File.Exists(path))
            {
                return File.ReadAllText(path);
            }
            return string.Empty;
        }
    }

 

红色那一块是后台,由于偷工减料,所以就不方便公开名称。


3:技术点需要思考的地方:

整个网站,基本上都是简单类似以下的代码:

public partial class ArticleCate : System.Web.UI.UserControl

    {
        protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)
            {
                BindList();
            }
        }
        void BindList()
        {
            using (ArticleClass a = new ArticleClass())
            {
                a.Select("order by orderNum asc").Bind(rptList);
            }
        }
    }

不过也有一些需要费点脑的:

3.1:左侧的分类列表,有的点击是直接进入到文章详细,有的点击是直接进入列表界面:

面对这个问题,有着最开始的设计思维:

A:分类名称难道是文章的名称(因为见过的很多基本上都是同名) ?

B:那么要区分显示在列表还是单独的,要在文章里加个字段以区别?

中间的过渡思维:

A:分类名称就是分类名称?

B:分类名称上加个字段,以区别点击是进入指定的某个文章?

最后的决定性思维:

A:分类名称还是分类名称。

B:当分类名称只有一条文章时,地址变为直接指向那篇文章。

 

3.2:文本编辑器的引入:

一开始我是很偷懒的,用一个文本框来发文章,就想了理了。

后来想想不能懒到这程度,毕竟人家是师妹啊,何况我还单身,所以引入文本编辑器升级一下档次也是有必要的。

网上可选的编辑种类很多,FCK,King等网上一搜一个堆,不过我还是思考了一下,如果用上这些:

第一,重,随便一个都几M起步;

第二,图片上传需要自己再折腾,如果运气不好,研究+实现可能会花上一天时间。

第三:我太懒了,我想最多1小时以内就把它给换完。

 

我想到以前QBlog里我写过一个编辑器(改来的),于是直接弄过来,发现原来的代码和QBlog的开发模式有点结合。 

花了几分钟,改了点代码,基本上就能用了,而且重点是文件上传,基本上小改几分钟也适合着用了,省了不少时间。

 

 

3.3 产品中心lightBox.js的引入:

这一块就没什么好说的了,就是那种一点图片出来一遮照层,整个背景黑的那种,06年就开始流行的,没想到现在还用的上。 

关于后台:

对于后台,一开始打算用QBlog那种后台方式,或者像EasyUI那种前端,然后搞个CodeSmith批量生成一样,不过一想到这CS不知道放哪了,光找出来就要不少时间,再说它也不支持我的文本数据库。

虽然CodeFirst也支持多种数据库,改个数据库链接就可以转移到其它数据库,然后再借CS去生成,不过感觉这转来转去的麻烦。 

于是,心一横,就那几个表,也就几个界面,还不如手工来的快,于是一个木有样式,惨不忍睹的界面,只有最简单的增删改查逻辑的后台就出来了。

由于后台界面这一块太丑,就不截图了,免的亮瞎了大伙的眼睛。

 

网站预览:http://paileju.com
至于源码,想要来学习的也可以Q我,随便给。

总结:

到此,基本上就算完工了,搞完之后,收到了师妹寄来的零食,也算是一种回报了,虽然大部分零售是辣的不合我口味,不过还是有不少零售味道还是不错的,像那个1块钱1个的肉松饼就很好吃,可是,为啥只买了一个,纳尼?

 

秋色园是QBlog的官方站点,由路过秋天创建,基于cyqdata数据层框架开发的支持多用户、多语言、多数据库(access,mssql,oracle)、目录级url等功能强大的博客系统
新浪微博粉丝精灵,刷粉丝、刷评论、刷转发、企业商家微博营销必备工具"

2014/2/28 17:44:47 | 记录点滴 | |

#34moonfeeling2017/3/15 13:19:26
慕名而来,今天刚注册贵网站,可否发份源码以供欣赏,邮件:xu_yanbin2005@126.com
#33游客[注册][182.139.134.*]2017/2/16 9:42:34
还没用过文本当做数据存储来用,求源码,2293009260@qq.com
#32游客[注册][36.5.157.*]2016/11/29 11:58:28
求源码,598326371@qq.com,大谢
#31游客[注册][58.20.54.*]2016/11/14 17:22:56
求份源码学习下,谢谢。 3132629604@qq.com
#30游客[注册][43.229.118.*]2016/8/11 11:37:48
求分享,给个代码看看 2407981054@qq.com
#29游客[注册][222.76.241.*]2016/7/7 9:51:39
不错,还没弄过文本数据库,给个代码看看 121838109@qq.com
#28游客[注册][125.104.64.*]2016/6/19 20:28:46
博主,求源码,627842318@qq.com
#27游客[注册][69.165.77.*]2016/6/2 18:15:02
求源码,谢谢xxxx0107@qq.com
#26我是茶壶矮又肥[116.21.188.*]2016/3/29 23:56:43
真没想过文本也能当数据存储,求源码,1656078722@qq.com
#25heimalang2015/11/16 9:25:08
嘿嘿 还没有整过文本数据库,愿楼主分享一下 谢谢 512742341@qq.com
#24liupeng616242015/11/13 10:48:43
我是菜鸟,虚心请教学习,想楼主源码学习一下, 1013630498@qq.com 谢谢!
#23游客[注册][114.218.95.*]2015/10/1 22:22:40
能把源码邮件一份吗?谢谢 2752611183@qq.com
#22游客[注册][122.228.229.*]2015/6/27 22:36:54
如果可以,能把源码邮件一份吗,谢谢!2644783865@qq.com
#21游客[注册][122.228.229.*]2015/6/27 22:36:31
如果可以,能把源码邮件一份吗,谢谢!
#20游客[注册][218.64.89.*]2015/2/10 9:11:02
求份源码学习下,谢谢。 17983244@qq.com
#19游客[注册][111.85.212.*]2015/1/28 23:25:55
亲,能发给我邮箱969309817@qq.com么?最近毕设想参考一下,谢谢哈
#18游客[注册][218.4.136.*]2015/1/21 9:20:51
304889295@qq.com
如果可以,能把源码邮件一份吗
#17jeffiy2015/1/5 9:16:44
求份源码学习下,谢谢。 zhangmin6105@qq.com
#16游客[注册][218.64.89.*]2014/12/19 16:26:05
能不能把源码给我一份,我最近在写一个小项目不知道怎么做。找不到您QQ 能发我邮箱里么?
17983244@qq.com
#15游客[注册][113.108.103.*]2014/12/18 11:08:19
你好,可不可以麻烦你抽空发一份源码给我,麻烦了。670708633@qq.com
#14游客[注册][58.251.80.*]2014/9/3 10:11:40
博主文章叙事比较喜欢,另外文本数据库比较感兴趣,求源码一份 137197216@qq.com
#13chenxzlyd[61.142.245.*]2014/8/21 13:59:19
居然是佛山的,离我这很近
#12游客[注册][183.152.25.*]2014/8/3 0:27:14
非常不错,就是后台略微简单了一点,如果再强大一点,再换个百度编辑器啥的就更好了。
#11游客[注册][58.212.0.*]2014/7/15 23:29:50
楼主爱折腾,实在佩服,让我想起以前看到的一个笑话:一个IT男送女友礼物,礼物是一块固态硬盘。。。
从过程来说,我是欣赏楼主的态度的
从结果来说,不如用cms改一下效果来的好,妹子一定更喜欢
#10游客[注册][219.239.227.*]2014/7/14 10:21:18
还没用过文本当做数据存储来用,求源码,329773763@qq.com
#9游客[注册][112.90.37.*]2014/6/13 16:30:30
wyxzhsh@163.com

源码?
#8游客[注册][171.216.111.*]2014/6/11 14:13:02
对你的文本数据库非常感兴趣,能否发一份源码学习,谢谢!
14016931@qq.com
#7游客[注册][112.251.215.*]2014/6/2 20:18:16
找个PHP的CMS改改,写写前端调用,后台填填内容就完了
#6sj28602014/5/14 16:26:20
能不能把源码给我一份,我最近在写一个小项目不知道怎么做。找不到您QQ 能发我邮箱里么?
87719349@qq.com
#5test32014/4/28 20:29:49
#4test32014/4/28 20:28:58
#3游客[注册][116.22.232.*]2014/4/10 17:54:15
using (ArticleClass a = new ArticleClass())
{
a.Select("order by orderNum asc").Bind(rptList);
}
}

你说数据使用纯文本,那这里的order by 是几个意思? 能放出ArticleClass类的代码吗

如果可以,能把源码邮件一份吗,谢谢! ouyang90@yeah.net
#2游客[注册][119.101.98.*]2014/3/1 23:06:07
真折腾。。。随便一个cms。做出这个站来。三小时内完工的吧。。。。
#1游客[注册][27.188.15.*]2014/3/1 17:23:37
不错!
  • 发表评论