建议你看一下MSDN,搜索N-tier,里面又很详细的介绍。

解决方案 »

  1.   


    go to see,...
    http://www.iwizard.com.cn/docc/fx.htm
      

  2.   

    在传统的Client / Server应用中,也存在着上述同样的问题,多层结构的应用正是在对C/S 结构的总结基础上产生的,并且也已经扩展到了B/S应用开发领域。 即将应用划分为三层(可以有更多层,但三层最常见): 用户界面层,商业逻辑层,数据库层。 用户界面层负责处理用户的输入和向用户的输出,但并不负责解释其含义(出于效率的考虑,它可能在向上传输用户输入前进行合法性验证),这一层通常用前端工具(VB,VC,ASP等)开发;商业逻辑层是上下两层的纽带,它建立实际的数据库连接,根据用户的请求生成SQL语句检索或更新数据库,并把结果返回给客户端,这一层通常以动态链接库的形式存在并注册到服务器的注册簿(Registry)中,它与客户端通讯的接口符合某一特定的组件标准(如COM,CORBA),可以用任何支持这种标准的工具开发;数据库层负责实际的数据存储和检索。 有了这样的结构,上面的问题迎刃而解:还是以考试系统中的合格标准为例,在客户端所有需要显示合格人员名单的地方,调用这样一个函数GetQualifiedList,至于这个函数如何编写,如何与数据库打交道,以至访问的是何种数据库都与其无关(你一定有过这样的经历,在一种数据库系统上运行得很好的SQL语句,有时换到另一种数据库系统上必须加以修改); 在中间层DLL中实现这个GetQualifiedList函数,如果用户对"合格"的定义变了,只需要修改这个函数就可以了,只要此函数的入口参数和返回内容不变,在客户端不需作任何改动。在这里,我们看到了面向对象编程的特性之一封装性的优点,而这一点在开发大型应用时尤其有用--我们可以把开发人员分成两组,一组负责开发界面层,另一组负责开发商业逻辑层,双方只要按照事先商定的函数接口,并行地开发就可以,而不必向从前那样,后面的工作必须等前面的工作完成后才能开始。当然,这样的开发模式需要很好的项目协调和文档作支持。   你也许会问,如果我把这些函数些在一个单独的文件中,再在需要调用的地方把它包含进来,不是同样能达到目的吗? 第一,这种方法效率不高,无论你把这些函数分散到多少个文件中,当你需要调用其中一个时,总会包含进一些实际上并不需要的函数,这无疑加重了服务器的负担,对服务器性能要求较高的Web应用尤其如此。 而DLL只在需要时才调入内存且只调入需要的函数,并且多个应用程序实例可以共享同一个DLL实例;第二,设想一个员工,有20个属性(工号,姓名,年龄,性别......),现在给定某工号,要求返回此员工所有信息。此时如果单纯用函数,只能定义20个全局变量,在函数中改变这些变量值,或者定义一个有20个传参(by reference)参数的函数。显然,第一种方法很麻烦而一旦增加一个属性后一种方法就需要更改函数接口。而在一个对象里,既包含成员方法(即函数和过程),也包括成员属性。如果我们采用对象的方法,则在函数中只需要改变对象的属性,在函数外可以直接引用改变了的对象属性值。 这种方法有些类似第一种方法,但1.属性值无需在函数外逐一说明;2.这些属性值只属于对象,与对象无关的代码不会无意地改变属性值;3.一旦对象被释放,这些值会被一起释放。
      

  3.   

    看了 g8341(幄天) 我觉得很有道理~~~我觉得你自己有点把自己弄晕的感觉~~所谓的3层结构也是一些人的经验的归纳,不是说就是定律了
    当然,我觉得这样划分有其科学性~~~
    1、用户界面 
    负责使程序人性化,傻瓜化~~(只有极少的界面美化,控制语句)
    2、业务层 
    主要对用户输入的数据进行合法性验证、对数据根据业务需要整合~(注意:这时如果你直接在这个模块下对数据源访问就会造成重复建设~~因为这样的对数据库的访问是非常频繁的,所以把类似的对数据库的访问功能 放在类里,或模块里一个小小
    那以后频繁的业务层对数据的访问就通过这些 类,模块来完成,这就引出了数据层
    这些 专门直接和数据库打交道的模块的集合~~~
    3、数据层
    任何的业务层对数据库的访问都通过特定的接口,访问数据层的模块~ 由数据层直接对数据库操作,这样也就是形象的把数据层看做是个公共通道~~~你说数据都走一个大通道 是不是既方便了数据的管理,同时又节省了,资源,少了重复建设呢?个人理解回答问题:
    1 “如果是这样的话,数据层是不是很像存储过程”
    答:不是~~数据层里,不仅仅是个存储过程 这里应该包括了一切对数据库的操作~
    包括存储、查询、修改、删除等等
    2 “VB中的数据识别类分为数据源和数据使用者,大家平时用不用它们来做三层的结构”
    这句话,我没理解你的意思
    3 “业务层中如果生成了大量的查询结果,大家是怎么将数据返回到用户界面层?用数组?还是对象?”
    答:这要看的啊,你应该尽可能用vb的对数据控制比较好的控件啊~~这样就不用单个操作了~~~如果确实遇到要一个一个数据的操作,可以考虑放数组里啊 不过一般你可以用记录集,可以对 记录集里的一个一个列值进行控制,还是比较方便的OK~~~就写到这里,我回石器去了,嘿嘿