zoukankan      html  css  js  c++  java
  • 关于DotNETStruts

    架构名称 DotNETStruts
    ______________________________________________
    暂时还不能称的上是架构
    之所以命名为 DotNETStruts,是因为我看了Java的Struts觉得很好,但是Java的IDE不敢恭维,所以我就想用DotNET来实现Struts架构,故命名为

    DotNETStruts,

    版权唠叨:
    ______________________________________________
    本程序不受任何法律保护,只希望我们中国的程序员来积极做DotNET上的开源,做DotNET上的架构.
    只希望保留其名称DotNETStruts,作者 哈哈

    简介
    _______________________________________________
    类似与Java的动态Bean,这里的实体类使用了动态属性,其属性用配置文件
    DBSchema记录.该配置文件中记录数据库的数据库信息,如是否主键,是否为空等
    例如数据库中有一个表 Teacher(ID,Name,Gender,Class),其中ID为主键且自动增加值
    则可以通过如下方法使用该类
    Dim te as New Entity("Teacher")
    te.property("ID") = 10001
    te.Property("Name") = "ZhangSan"
    te.Property("Gender") = "F"
    '' te.property("Age") = 23 该句出现异常,因为配置文件(即数据库纲要)中,表Teacher
    '' 没有Age字段
    '' 下面是一些操作
    te.Insert() te.Update te.Delete te.Select()
    其中 Insert 操作忽略自动增加值的字段(Indentity)
                Insert Teacher(Name,Gender) values('ZhangSan','F')
         Update 操作将主键作为where的条件. 即生成的Sql为
                Update Teacher Set Name = 'ZhangSan',Gender = 'F' where ID=10001
         Delete 操作将忽略出主键外的任何属性,Sql为
                Delete From Teacher where ID = 10001
         Select 操作利用"和"运算筛选记录,Sql为
                Select * from Teacher where ID = 10001 and Name = 'ZhangSan' and Gender = 'F'
    主从表操作
    '' 打印编号为10001教师的所以学生的姓名
    Dim St as Entity
    If te.HasChilds("Studnet") Then
     For each st In Teacher.GetChilds()
      Console.Write(st.Get("Name"))
     Next
    End If
    '' 打印学生编号为 102 的教师的名字
    Dim St as New Entity("Studnet")
    St.property("ID") = 102
    If St.HasParent() Then
     Console.Write(St.GetParent.Get("Name"))
    End If

    对于 Asp.NET 的支持
    增加记录
    Teacher_Insert.htm的主要内容
    ....
    ....
    <Form name="form1" action="do.do"> // 该Url do.do 通过web.config 映射到 Navigation 类
     <Input type=hidden name="[[Table]]" value="Teacher" />
            <Input type=hidden name="[[Operation]]" value="insert" />
            <Input type=hidden name="[[Forward]]" value="Teacher_list.aspx" />
     <Input type=text name="Name" />
     <Input type=text name="Gender" />
     <Input type=text name="Class" />
     <Input type=submit name=submit />
    </Form>
    写完这个静态文件,不用写任何代码,就可以将该记录插入到数据库中,
    其中3个隐藏域含义为
    name="[[Table]]" value="Teacher" 表示要操作的实体类为 Teacher
    name="[[Operation]]" value="insert" 表示实现的操作为插入操作,支持的操作为 Insert,Update,Delete,Select
    name="[[Forward]]" value="Tacher_list.aspx" 表示插入成功后跳转到 Teacher_list.aspx

    数据库的配置文件可以通过 DBSchema 提供的WriteXml()方法从SqlServer提取出来


    希望扩充的功能
    ____________________________________________________
    add,list,upate,view 等htm或aspx页面生成(正在写,写成WinForm形式)
    包括客户端的数据验证,提供一些样式可以选择

    权限系统,对每个表的各种操作实现权限限制,通过配置文件进行配置

    模板系统,美工在页面中使用一些"标签",如 teacher.Name,程序可以将数据库的信息替换到这里,生成html静态页面
    或者将该嵌入有特殊"标签"的模板文件生成可执行的aspx文件,比生产静态页面难度大哦
    支持分页

    兼容现在的Asp.Net控件
    现在这种结构很想asp或是jsp的结构,现在asp.NET 的优势是实现类似与WinForm的交互.
    怎样把Asp.NET的这种优点利用起来,现在思路还不是很清晰

    商务逻辑的实现
    现在只是硬邦邦的实现了针对于单表增删查改.
    下一步还想通过配置文件实现商务逻辑

    **************************************************************************************************
    **************************************************************************************************
    本贴会持续更新,我把现有代码整理一下,过几天贴出来.希望每个看到此帖的DotNET爱好者把它收藏起来
    希望的后续发展:
    开通网站和论坛,开源,由广大爱好者共同发表意见,规划它的结构,每个人都写一点(目前有点乱,说实在的,我UML不好)
    希望三个中国人一条龙,共同把它象Linux一样发展起来(不能和它比哦.嘿嘿...)

  • 相关阅读:
    LINQ 笔记
    关于:last-child的一点见解
    webpack 配置IP 和端口号
    echarts.制作中国地图,点击对应的省市链接到该省份的详细介绍
    关于offsetWidth innerWidth的使用
    关于mobiscroll插件的使用
    关于取url或者微信中参数的js
    上传图片
    使用默认图片替代某张图为空时的情况
    在数组中计算和的最大最小值
  • 原文地址:https://www.cnblogs.com/MyFavorite/p/247209.html
Copyright © 2011-2022 走看看