系统有一个子系统“系统管理子系统”,在它其中有两个类。一个是“SystemUersManage(系统用户管理类)”实现增、删、改、查“系统用户”的功能。一个是“ExpertManage(专家用户管理类)”实现增、删、改、查“专家用户的功能”。问题一:“SystemUersManage(系统用户管理类)”和“ExpertManage(专家用户管理类)”这两个类应该用在“三层”(UI、BLL、DAL)的那一层???为什么???现在想为“系统管理子系统”定义一个接口,通过这个接口,“其它子系统”可以访问“系统管理子系统”中的“SystemUersManage(系统用户管理类)”和“ExpertManage(专家用户管理类)”,并实现对应的“增、删、改、查”的功能。(子系统间通过接口相互访问)

问题二:应该怎样定义接口,才可以将“SystemUersManage(系统用户管理类)”和“ExpertManage(专家用户管理类)”发布出去,让“其它子系统”可以访问???问题三:定义的接口应该用在那一层???
谢谢大家,尽量详细点哈。

解决方案 »

  1.   

    我觉得lz先把三层的概念搞清楚了 
    也不用我们说 自己知道怎么放了三层就是层与层的 分工你说的是业务 还是 数据访问?  抑或 UI?问问题的基础是 你对问题的 认识
      

  2.   

    ++
    先学懂三层的概念很重要!
    另外给楼主推荐两个链接
    http://www.cnblogs.com/gaoweipeng/archive/2009/01/18/1377855.htmlhttp://wenku.baidu.com/view/35c91d8884868762caaed5b5.html
      

  3.   

    涉及直接数据的操作都在数据层(DAL)
    你的其他子系统是什么意思?暴露的接口形如:C# code    public interface ExpertManageOperation { IExpertManage Get(object query); void SaveOrUpdate(IExpertManage obj); void Delete(IExpertManage obj); }上面的接口声明也用在 DAL 层;同时在 DAL 层声明 IExpertManage 作为实体的接口然后在 BLL 层来提供具体实现 IExpertManage 的类
      

  4.   

    LZ,看样子你对分层还没有理解!
    上面你说的只是功能模块的划分,与层次没关系的!
    UI,业务,数据等的关系现在整清楚再考虑分层吧
      

  5.   

    LZ同样的回复发了多少贴了,郁闷,,,
    http://topic.csdn.net/u/20110921/21/057a6fed-25be-44c0-b5e5-9921be3e5244.html
      

  6.   

    问题一:如果是实现增删改查的功能:SystemUersManage,ExpertManage在业务逻辑里实现。没有为什么,只不过这样分层的话到时候维护方便,清晰!
    问题二:在这里说下接口的意义:接口简单理解就是一种约定,你要定义什么样的接口你自己决定,然后让继承接口的类去实现就可以了。比如你定义一个IFly接口,直接下面继承这个接口的爱怎么飞就怎么飞。
    问题三:你可以建立一个类库,专门用于存放接口。 记住接口就是一种约定。个人建议:继承,抽象类,接口这些东西一定搞明白。说白了就是面向对象。
      

  7.   

    在纠正一下我刚才对问题一的回复,SystemUersManage,ExpertManage 增、删、改、查的功能要放在数据访问层。
      

  8.   

    而传统的软件开发三层分别是UI、BLL、DAL,他们分别代表表示层、逻辑层(应用层)、数据访问层。随着需求繁多,项目越来越复杂,于是把项目中大家都会用到的方法类放到一起,这就形成了common层,即共通层。为了安全有效的在各层间进行数据传输又出现了model即实体层,用来保存传输的数据
      

  9.   

    没了解三层的作用,才会有滥用的趋势,但是又想要用,变成所谓“强用”。
    简单的举例:
    UI层,显示当前用户,并告诉BLL层,我需要修改这个用户的密码
    BLL层,获得UI层传入的用户,检查相关权限或者关联数据,通过dal层提交到数据库。然后返回给UI层。
    UI层,获得结果后,重新刷新用户,或弹出提示。
      

  10.   

    UI层,显示当前用户,并告诉BLL层,我需要修改这个用户的密码
    BLL层,获得UI层传入的用户,检查相关权限或者关联数据,传入相关参数到dal层
    dal层,数据提交到数据库。然后返回给UI层。
    UI层,获得结果后,重新刷新用户,或弹出提示。