• 单用户blog系统(一)


    收到一个朋友blog的系统升级的要求很久了,一直没有动手。现在觉得是应该做做了,否则真的都不好意思面对了。
    本着就在原系统的基础上升级的原则,那么我所要作的,就是尽量减少朋友的部署成本和我的开发成本。
    因此,本单用户blog系统本身对你或者没有任何帮助,我只是尽力把自己觉得涉猎的技术都引入到这个系统中来。也当自己练习练习。毕竟好久都没有做整套的东西!

    想把一个东西,按照系统化的东西,按照程序去做出来,还是需要时间和精力的。所以,这讲是一个系列的随笔。

    因此,本周的开始的任务,必定还是用户需求的收集。这个我想每个人每个系统都有自己的特点,因此这个就省略。因为对于我,我只需要从前台往后台一步步完成即可。
    因为,对于这个小系统,架构的设计,以及在这次的实施的过程中,对以后的个人知识系统的完善和个人工具的完善,才是我最关注的.

    开发环境:Windows XP + .Net Framework2.0 + Visual Studio 2008 + IIS5.1 + Access + Visio

    架构设计:

    典型的三层架构。我只是自己在加了一个common层,用来放类的定义和一些通用的接口之类。当然这个层的东西,都是要跨层使用的。对于web部分,我还是要在app_code下建立一个针对web的通用的方法或者类。本来还是应该再加一个测试的层的,可惜的是,我对测试不熟悉,即使2008已经加入了很方便的功能,就目前来说,我个人还是不喜欢测试,这个可能算是目前已知的一个遗憾吧。还有应该就是后续的层了,那就是加入一个WebServices的层,提供相应的服务

    我的过程是:
    在Common层,先完成一个类的定义。

    在DataAccess层,完成相应的DataAccess中的类。这个类主要与数据库打交道完成以下任务
    以Category为例
    ---SELECT---
    GetCategories
    GetCategoryById
    GatCategoryByName

    ---ADD---
    AddCategory

    ---UPDATE---
    UpdateCategoryById
    UpdateCategoryByName

    ---DELETE---
    DeleteCategoryById
    DeleteCategoryByName

    当然,本身由于blog系统的数据库类型已经为Access,所以自己建立一个AccessHelper这个类是必定的。这个类的作用是干啥,以及需要写什么东西,我觉得就不要罗嗦了。参照微软的Application Block或者Enterprise Library去写一个同样的东西就行了。

    在BizLogic层。把DataAccess层过来的数据,转换为相应的对象
    比如:
    GetCategories ---> List<Category> GetCategories
    GetCategoryById ---> Categroy GetCategory

    最后,在Web这个层。
    你知需要和对象打交道了。要什么就抓什么好了。
    本层要设计的的技术的应用:asp.net theme, asp.net master page, asp.net webparts, ajax, 静态化htm,UrlRewrite, Img的Handler, 很多很多

    -----------------当你写完一个类的时候,你要是再想写的时候,是不是觉得自己需要做很多重复工作啊,这个时候,代码生成需要派上用场了。因为,建立一个自己的代码生成工具,很有必要的。这个才是今天这篇post的主题。
    代码生成工具:Access2Objects
    功能描述:
    1 根据链接字符串,获取所以表对象
    2 根据表,生成相应的类
    3 为每个类,生成DataAccess, BizLogic代码
    目前就这样,这个小程序,争取拿一周的时间来完成。

    相关知识:
    使用Ado.net获取数据库架构信息:Access数据库架构信息的获取也可以通过下面的方法来完成

    1private DataTable GetMdbSchemaUsingOleDbConnection(string connString)
    2{
    3     OleDbConnection myConn = new OleDbConnection(connString);
    4     myConn.Open();
    5     DataTable table1 = myConn.GetOleDbSchemaTable(OleDbSchemaGuid.Columns,null);
    6     myConn.Close();
    7     return table1;
    8}

    2 从表去获取表的详细信息,你可以根据上面的这个table中的数据来,也可以通过DataReader来推断

    1OleDbCommand cmd = new OleDbCommand("Select * from Category",myConn);
    2myConn.Open();
    3OleDbDataReader dataReader = cmd.ExecuteReader(CommandBehavior.SchemaOnly);
    4table1 = dataReader.GetSchemaTable();
    5dataReader.Close();


    3 。。。暂时想到这里了。。。

     

  • 相关阅读:
    MySQL decimal unsigned 更新负数不报错却为0
    centos 安装jdk
    CentOS7安装docker
    Cron 时间元素
    PHPStorm
    日志习惯
    HTTP幂等性
    navicat for mysql 10.1.7注册码
    localStorage、sessionStorages 使用
    FreePascal
  • 原文地址:https://www.cnblogs.com/yang_sy/p/1087913.html
Copyright © 2020-2023  润新知