一些关于系统架构实现的胡言乱语

原创 2003年06月10日 11:18:00

前一阵子在写一个通用属性管理器,用于我们系统框架内的组件属性的管理。写着写着,忽然冒出了一些想法,在这里贴出来,希望大家能够来探讨。

首先准备只是写一个普通的属性管理器,通过关键字来获得某一个属性的值,就像COM+里面的SPM。这样我们可以通过一个集中的界面来维护整个框架内的组件属性。可以管理一些共享的属性,比如连接字符串、公司名称、WEB界面的缺省CSS文件名之类的。

<Step(“进化”)>设计的时候,觉得如果属性很多,管理起来不方便,后来决定使用命名空间来区分。于是变成了一个支持命名空间的属性管理器。后来发觉组件并不一定知道别的命名空间,这样访问一些共有的变量就很麻烦(不能在VS.NET的智能列表里面列出系统已注册的属性空间,需要程序员自己记住这些变量的命名空间),而这是我们开发的初衷。而且属性的安全也是一个问题,一个恶意的组件可以破坏掉整个系统。

<Step(“第二次进化”)>自然而然的,我想到了属性的权限,组件只能在自己的命名空间里面读写,只有一些拥有特殊权限的组件才能够读写整个命名空间。考虑了半天,准备使用windows的安全机制来实现。只有指定的用户才能够激活一些全局管理类实例(幸好VB.NET在这方面比较方便)。呵呵,是不是觉得很复杂了?我也这样想。对于全局属性,我决定使用继承来实现,也就是命名空间级别的继承,子空间自动只读继承父空间的所有属性,这样一些共有属性就可以很方便的管理和读取了。

<Step(“新的想法”)>写到这里,我忽然有了一个新的想法。既然属性可以这样自动化继承,类是不是也可以呢?其实现在这样的属性管理,只要类通过申明处于不同的属性空间,就可以得到不同的配置属性,来实现不同的特征。比如订单类,订单组件通过读取当前属性来构造自己。这样通过处于不同的属性空间层次,就可以得到不同的订单特征。我觉得这是一个很有意思的想法,我更希望类能够直接被继承,通过一些特殊的配置,让类具备新的行为。在命名空间内,通过装配和继承,可以实现很多新的特征和功能。在完美的世界里,可以不需要修改代码,就直接修改商务流程。在这个时候,属性的功能被扩大了,属性必须包括Overrideable,NotOverridable之类的特征。

<Step(“细节”)>出于这个目的,我看了SQLServerMetaDataService。很可惜,这个东西似乎与可以实现我的想法,可是资料却极少,MS自从2002后就没有更新过,看上去像被放弃了。

我的最终目的是实现这样一个系统:

1.  框架系统提供基本的服务,包括所有基本类型的实现(数据库访问,基本数据类型,通讯,一些通用商务对象…….的实现)

2.  开发人员可以通过一个GUI管理器来派生和扩展这些类,来得到符合自己要求的对象。当然,作为一个程序员,可以把自己写的类型插入到系统,来得到额外的功能。(这里面涉及到一个类型之间交互的问题,我还没有好的想法)

3.  业务顾问在Visio里面画出业务流程图,然后开发人员可以把最终商务类和这些流程联系起来(呵呵,受Biztalk影响)。

4.  系统引擎知道如何处理派生类,并且流程能够在商务流程变动的时候,重新编译。(这句话可能比较模糊,因为我发觉自己也很难把确切的想法表述出来)

5.  所有的类型,都可以实现安全管理。通过类型命名空间和安全命名空间的映射来实现权限继承和管理

<Step(“补充”)>当然,需要一个强大的缓存管理器来解决由此带来的性能冲击,这个缓存管理器我已经有了一些想法,不过已经超出了本文的范围,以后再讲吧。

<Step(“结束”)>对于这样的一个框架系统,我只是有一些朦胧的想法,还没有完全可行的方案。只是趁着自己还没有完全忘记,把它写下来,希望能够抛砖引玉,和大家一起探讨。

我在VB.NET版,叫做bucher(无人永生)

计算机复试

英语复试表面上看考察的是专业应用和口语方面的基本能力,实则希望考察学生对专业英语或者专业方向的基本理解,因为我们也不是英语专业毕业的,英语水平也高不到哪里去,所问的问题其实大多是与专业相关的问题,更多...
  • kc8912
  • kc8912
  • 2010年04月03日 12:49
  • 148

关于QQ一些功能的实现

学习了,首先感谢作者。 Update:代码已经全部重构 2013-1-11         在网上搜了很久关于腾讯的接口, 但资料很有限, 绝大部分都是重复的, 由于想实现一些比较好玩的应用,...
  • u014180504
  • u014180504
  • 2015年11月25日 10:47
  • 561

关于团队管理的胡言乱语

我们项目不算复杂,一个项目经理,一个美工,两个页面,一个应用程序,这些都工作在.net平台,然后在加上一个linux平台的小组长,四个linux平台的开发,一名专职测试。十个人的班子就这样搭建起来了。...
  • qqqee
  • qqqee
  • 2009年07月16日 18:06
  • 214

关于系统架构的一些思考

一个灵活的架构可以快速应对多变的业务需求。 系统架构可以分为两种: 一种是软件设计的架构——针对业务需求的 一种是技术本身的架构——针对技术实现的 要认真思考研究每一个项目的框架结构,并总结优...
  • neusoft06
  • neusoft06
  • 2014年02月21日 11:11
  • 838

一些时间类型的总结

1. 系统时间函数         在编程时,时间函数不可避免的会被使用。linux系统下相关时间的数据结构有time_t,timeval,timespec,tm,clock_t; windows下...
  • pud_zha
  • pud_zha
  • 2013年10月01日 01:52
  • 830

关于 PK 的胡言乱语

关于 PK 的讨论经常会发生,可惜每次都草草结束。每次我都要不厌其烦的推荐大家先上 gamasutra 看看相关的文章,把问题搞得更清楚一些再来谈。个人认为,下面这篇文章是必须一读的。在我看来,这篇文...
  • zhjhe
  • zhjhe
  • 2004年09月04日 09:59
  • 801

对时间的一些操作总结

由于项目要对时间进行一些数学运算,要使用 access 数据库交互一些时间的信息,于是乎便有了下文。。。 CTime Comparison OperatorsBOOL operator ==( CTi...
  • xum2008
  • xum2008
  • 2010年09月08日 17:15
  • 464

关于一些初级ACM竞赛题目的分析和题解(一)。

关于一些初级ACM竞赛题目的分析和题解(一)   故事发生在在2017年年底,受我的室友cy1999巨巨的影响下,第一次接触到ACM竞赛,也是作为一名编程小白,第一次感受到编程语言的魅力。用竞赛这种...
  • monster_ayb
  • monster_ayb
  • 2018年01月27日 14:10
  • 101

胡言乱语

怎可奈,听得雨声,不见残荷? 
  • huayanghao
  • huayanghao
  • 2007年01月26日 23:31
  • 366

php (十六)常见关键字

1. Final 关键字  PHP 5 新增了一个 final 关键字。如果父类中的方法被声明为 final,则子类无法覆盖该方法。如果一个类被声明为 final,则不能被继承。  语法: ...
  • bao990423420
  • bao990423420
  • 2013年11月20日 16:22
  • 875
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:一些关于系统架构实现的胡言乱语
举报原因:
原因补充:

(最多只允许输入30个字)