zoukankan      html  css  js  c++  java
  • 假如我是海洋

    我对金色海洋的“框架”的最大批评是它的紧耦合。有没有可能即便捷、又松耦合呢?

    先整理下海洋的目前需求:

    (1) 尽量用鼠标拖拉,操作尽量简单

    (2) 要集成权限管理,不同的权限看到的项不一样,能进行的操作也不一样

    (3) 要集成验证

    (4) 要有一个TreeView类似的控制板

    (5) 要有一个List模式的项列表,要有分页

    (6) 要有一个DetailList或FormView模式的单项查看、修改、插入的东东

    (7) 强大的搜索选择框

    (8) 客户需求发生变化了,要能够很方便的更改

    在此基础上我再加几条:

    (1) 要松耦合

    (2) 要分层

    假如我是海洋,我会这样设计这个系统。纸上谈兵,莫怪,没时间编码,我没那么复杂的需求,现有Asp.Net控件已经够我用了,我也没动力去编码实现。

    系统结构:

    clip_image002

    系统分为四大View,要自己开发,与现有的那些Asp.Net 的View类似。具体功能在后面描述、

    职责划分:

    (1) Filter 负责权限控制。这个权限控制,分三方面:

    a) 控制ListView中显示那些条,不同人看到的条数不一样,这是第一步过滤

    b) 控制实体属性对用户的可见性,这是第二步过滤

    c) 控制用户的行为,过滤四大View的几个标准行为

    (2) DataSource负责提供数据和标准行为,DataSource的另一个责任是为IDE提供实体的元数据,这样方便IDE生成View部分的代码

    (3) View就是显示了

    (4) Database,linq2sql就不说了

    下面说四大View:

    (1) Dynamic View

    这个类似于FormView,只是可以根据Filter动态生成。实质上就是一个FormView加上一步遍历Filter,找到那些没有授权的属性对应的子控件,把它从DynamicView中去掉。

    (2) ListView

    这个也就是现有的ListView加上一个Filter。

    (3) TreeView

    得新开发一个。设计一种树型数据结构的标准接口,然后再用Filter过滤节点,最后生成UI端的可见界面。

    (4) SearchOptionsView

    这个数据源就是实体类,根据Filter显示给用户一些可填项。然后动态的构造查询表达式。(貌似用linq有些困难,不熟悉linq,可能这里有点技术风险,实在不行,可以用上动态编译技术)。

    下面来看看需求的实现情况:

    l 尽量用鼠标拖拉,操作尽量简单: 数据库建模->biu的一下就生成数据库了->VS里拖一下,biu的一下就生成linq层了,然后拖DataSource,拖View,biu的一下又生成了。Filter也可完全由数据库权限表来生成。上面控件,全部都可以biu的一下生成。

    l 要集成权限管理,不同的权限看到的项不一样,能进行的操作也不一样: Filter来负责

    l 要集成验证:这个前面没讲,看加到哪一步吧,或者直接在实体上配置属性。

    l 要有一个TreeView类似的控制板:有了

    l 要有一个List模式的项列表,要有分页:有了

    l 要有一个DetailList或FormView模式的单项查看、修改、插入的东东:可以

    l 强大的搜索选择框:可以

    l 客户需求发生变化了,要能够很方便的更改

    加字段—写条sql语句,扔进数据库;给实体类加个属性,匹配一下,搞定;

    删字段—改数据库,改实体类

    改字段名字—该实体类的属性

    ……

    l 要松耦合:是

    l 要分层:是

    几点评价:

    (1) 对比金色海洋的原架构可能略微复杂一点点,仅靠鼠标也基本可以完成主要操作,但弹性要大太多太多了。各大View可以想怎么玩就怎么玩,而原架构UI层的限制性过大。

    (2) 解耦比较彻底,分层比较清晰,这好处谁用谁知道啊。并且,这样解耦和分层,并不会增加什么工作量。都是 biubiubiu的就搞定了。(奥特曼!)

    (3) 职责清晰,好维护

    (4) 数据分离——数据库就是数据库,元数据就是元数据,UI数据就是UI数据,不混在一起,这样,搞什么不同语言的版本也好,搞什么别的花样也好,都留够了足够的空间

    (5)4大View也可以分开用,适用性广了很多

    那么,四大View之间关系怎么协调呢?写几个Mediator,实现最常用的几个场景即可。

    上面这些话说起来轻巧,实现起来可不轻巧。:P

    版权所有,欢迎转载
  • 相关阅读:
    azure虚拟机创建后如何ssh私钥连接
    VisualStudio在本地创建新解决方案后如何推送到devops
    【转载】sar命令详解
    【转载】Redis【入门】就这一篇!
    【转载】算法复杂度解析,何为O()
    centOS data格式文件
    linux centOS命令整理
    机器学习中评估计算:PR,ROC,AUC计算方法
    Python中中文输出显示以及列表初始化坑坑
    SKLearn中模型持久化
  • 原文地址:https://www.cnblogs.com/xiaotie/p/1512963.html
Copyright © 2011-2022 走看看