最近要弄Remoting三层架构, 
请熟悉这块的朋友,介绍下主要区别,谢谢

解决方案 »

  1.   

    Remoting由服务器端执行(代理的组件),而普通的CS是由客户端执行(不是绝对,如存储过程).
    如果代理组件为数据帮助组件,则要注意事务问题,即Remoting注册方式,否则会出错或造成事务阻塞等.不建议用数据帮助组件做为代理.如果要用的话可以让事务在服务器端运行,客户只提交Sql而不执行,让服务器自动执行和提交.
      

  2.   

    在三层架构体系中,应用表示层(客户端)和商业逻辑层(中间层)及数据层之间可能位于不同的网络端,因此他们之间的通讯、调度就会变得很困难,而且在中间层广泛使用的组件之间的事务也会变得错综复杂,为此,微软提供了解决这些问题的系统方案,其中具体实现技术/工具主要包括:MS Remote Data Services、MS Transaction Server、COM/DCOM/COM+等。
    在客户端,通过 RDS 来远程创建中间层的数据服务组件。
    在中间层的 Transaction Server 运行时环境中运行 RDSServer.DataFactory 或自定义业务对象时,共享机制产生作用。只使用数百个而不是上千个数据库连接仍然可以支持上千个客户端。这是 Microsoft Transaction Server 中 ODBC 资源分配器的功能。
    在中间层和数据层之间可通过ADO来连接,实现数据读写操作。
    ?
    使用 RDS 可以有三种方式将 Recordset 从服务器返回给客户端。这三种方式分别为: 
    (一)、使用自动调用 RDSServer.DataFactory 对象的 RDS.DataControl 方法和属性。
    (二)、手工调用 RDSServer.DataFactory 对象。
    (三)、创建执行数据访问功能的自定义 ActiveX DLL。
    在此,我们的客户端使用自行定义的中间层对象(DCOM/COM+),来处理商业逻辑并访问数据。
    首先,让我们来看看基本的 RDS 编程模型:
    RDS 为在如下环境中存在的应用程序确定地址:客户应用程序指定将在服务器上执行的程序,并指定用来返回相应信息的参数。服务器上被调用的程序访问指定的数据源,检索信息,对数据进行相应处理,然后将结果信息按易于使用的格式返回给客户应用程序。 具体的实现模型如下列表。
    (1)、指定在服务器上被调用的程序,并得到从客户端引用该程序的途径。(该引用有时称为“代理”,它代表远程服务器程序。客户应用程序象调用本地程序一样“调用”代理,但实际上调用的是远程服务器程序。)
    (2)、调用服务器程序。将参数传送到标识数据源及所要发布命令的服务器程序。(服务器程序实际上使用 ADO 访问数据源。ADO 与所给参数中的一个建立连接,然后发布在其他参数中指定的命令)。
    (3)、服务器程序从数据源获得了 Recordset 对象。可以选择在服务器上处理 Recordset 对象。
    (4)、服务器程序将最终的 Recordset 对象返回客户应用程序。
    (5)、在客户端,Recordset 对象被转换成为便于可视化控件使用的格式。
    (6)、任何对 Recordset 对象所作的修改都将返回给服务器程序,服务器程序用这些修改来更新数据源。 
    ?
    对应其上的编程模型如下(RDS 提供执行以下动作序列的途径),编程模型是指为完成这个目的所必需的活动序列: 
    (1)、指定在服务器上被调用的程序,并获得通过客户端调用该程序的方式(代理)。(RDS.DataSpace)
    (2)、调用服务器程序。将参数传递给标识数据源及所要发布的命令的服务器程序。(代理或 RDS.DataControl)
    (3)、服务器程序从数据源获得 Recordset 对象(一般通过使用 ADO)。可选择在服务器上处理 Recordset 对象。(RDSServer.DataFactory)
    (4)、服务器程序将最终的 Recordset 对象返回客户端应用程序。(代理)
    (5)、在客户端,Recordset 对象被转换成可视控件能方便使用的格式。(可视控件和 RDS.DataControl)
    (6)、对 Recordset 对象所作的更改被返回服务器并用于更新数据源。(RDS.DataControl 或 RDSServer.DataFactory) 
    以上是微软提供的标准三层架构编程解决方案,事实上我们可利用自行实现的中间层来替代RDSServer.DataFactory,而自行定制的各种Active Control/DLL则完全可替用RDS.DataControl。合理定制符合我们要求的组件将大大模块化整个系统,并使得客户端变得逻辑简单、易于移植。
    本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/SW515/archive/2003/01/17/8464.aspx