最近在开发一个通用增删改的通用项目,主要是实现Excel信息和后台数据库作交互的功能,类似“勤哲”软件的设计思路。开发过程中,碰到个非常棘手的难题,在此请问各位高手:程序分
    表现层( 若干FORM,或者Excel)
           |
           |
           |         
     逻辑层(负责通用增删改查,独立DLL)                              特殊逻辑层(当表单打开时、保存事务开启前、保存事务提交前等时候自动激活,独立DLL)
           |
           |
           |
           |
      数据处理层(数据库链接,SQL执行等,独立DLL)
 表现层、逻辑和数据处理层都已经OK了,现在难题就在特殊逻辑层,
特殊逻辑层的目的,就是当通用系统中,实在无法处理某些特殊操作时,追加一个专门类,该类自行融入框架中,并在合适的时机被调用。
举个简单的例子:
如果我需要在表单保存后,能够update 其中一个标志字段 ,就希望能激活 特殊逻辑层中 EndSave函数,并执行Update tablea set flag=-1 where keyid=1111
所有业务逻辑,都调用一个数据链接,在同一个事务中执行。之所以要将特殊逻辑剥离开,是因为特殊操作事先不可预知,我希望项目在分发给客户运行后,如果需要扩展功能,只需要提供一个单独的DLL文件,放到安装目录下,功能就自然实现了。反射机制我有所了解,但不太喜欢用,效率太低了。特殊DLL类 最好能在进程刚运行时加载,有就加载,没就忽略。希望论坛中高手们能指点一二,在此先谢了,总分不多,才42分,望请见谅。

解决方案 »

  1.   

    方便扩展 第1选择是WEBSERVICE。方便好用
    但是安全性难以保证 
    COM+吧。。安全和扩展性都强········你的软件已经向COM软件靠拢……那个东西很复杂……
      

  2.   

    您误会我的意思了。
    其实我的意思说白了很简单,
    一个EXE文件,下属三个DLL文件,运行一切正常,我的意思是,如果删除掉一个DLL文件,EXE仅仅是减少部分功能,但运行一切照旧,最理想的状态,EXE甚至都不知道跑丢了个DLL。
    三个DLL最好都不要用动态加载等方式。WebService我用过,常用了。但眼下设计的框架是C/S的,需要处理的表单信息,少则数十,多则数百。
      

  3.   

    其实,完全的通用软件是不存在的,能通用个八九成就相当成功了,我的想法就是如何尽量设计成开发式的模式。通用模块,负责完成绝大部分的常规操作,一些特殊的、不可预测的古怪需求,则归并到独立的DLL中,这样既实现了通用,又解决了扩展问题。
      

  4.   

    插件系统...但是“三个DLL最好都不要用动态加载等方式”那是不可能的...
      

  5.   

    我知道这是一厢情愿,只是理想状态而已。那请问如果我在数据层中,定义了个静态对象  static DataDB,动态加载的DLL内,能否也调用这个静态对象? 毕竟我希望所有的操作,都能在一个事务中运行。
      

  6.   

    C/S框架网 - 基于.Net快速开发平台 www.csframework.com