1、在petshop4.0中分几个数据库,为什么这样做?这样做有什么好处?在什么时候把系统分成几个数据库好?如何在多数据库中保持数据的完整性??
2、设置页面的EnableViewState="false"后,在客户端仍然少量的viewstate代码,为什么?有什么作用(这是一个面试的题目)

解决方案 »

  1.   

    .NET Pet Shop 中使用的数据库架构是直接从 Java Pet Store 移植而来的。 Java Pet Store 支持几种数据库供应商格式,因此选取了 Sybase 应用程序的架构,并在一个 Microsoft SQL Server 2000 实例中创建。 这不需要改变 Sybase 版本的架构。 而创建 Oracle 版本的 .NET Pet Shop 时,直接采用了 Java Pet Store 数据库原来的 Oracle 实现。
    在 .NET Pet Shop 版本 2 中,应用程序改为要创建一个方案,其中完成定单处理必须使用分布式事务。 为了适应分布式事务方案,Orders、OrderStatus 和 LineItem 表都分到不同的可能安装在不同机器上的数据库实例。 我们在 .NET Pet Shop 的第三版中保持了这个分布式设计模式。
      

  2.   

    1、petshop4.0中有5个数据库;至于为什么要这样,我想不应该是提高性能的考虑,可能有写其它的原因,如楼上所说。
    2、页面本身将 20 字节左右的信息保存在 ViewState 中,用于在回传时将 PostBack 数据和 ViewState 值分发给正确的控件。因此,即使该页面或应用程序禁用了 ViewState,仍可以在 ViewState 中看到少量的剩余字节。WEB窗体(FORM)的设置为runat="server",这个窗体(FORM)会被附加一个隐藏的属性_VIEWSTATE。_VIEWSTATE中存放了所有控件在ViewState中的状态值,要想<input type="hidden" name="__VIEWSTATE" value="...">消失的无影无踪,最干净的方法是去掉<form runat=server> 表单。
      

  3.   

    Petshop 4.0是asp.net 2.0的吧?asp.net 2.0新增一样东西叫做ControlState,其实就是ViewState,不过不能关闭,用于保存控件必须跨页面保存的信息。所以用asp.net 2.0的话,也就有一部分ControlState是必须存在的。