-1

当我们开发人员编写数据访问代码时,如果应用程序应该很好地扩展并处理负载/命中,我们应该真正担心什么。

鉴于这个简单的问题,您将如何以可扩展的方式解决它。

1.ProjectResource是一个类(封装分配给一个的资源Project

2.分配给项目的每个资源都是User

3.eachUser中的Project也有ReportingHeadProjectManager谁也是的实例User

4.最后有一个Project包含项目细节的类

使用的类图例

  • 用户

  • 项目

  • 项目资源

表格图

  1. 项目资源

    • 资源 ID

    • 项目编号

    • 用户身份

    • 报告主管

    • 专案经理

类图

  1. 项目资源

    • ResourceId : 字符串 / Guid

    • 项目:项目

    • 用户:用户

    • 报告头:用户

    • 项目经理:用户

笔记:

所有用户信息都存储在 User 表中

所有项目信息都存储在项目表中

这是问题所在

当应用程序请求以下项目中的资源操作时

  • 首先获取项目的记录

  • 获取 UserId ,发出请求(使用Users DAL)以获取用户实例

  • 获取ProjectId,请求(使用Projects DAL)获取项目信息

  • 最后分配UsersProject实例ProjectResource

很明显,您可以看到3 Db Calls这里是为填充单人而制作ProjectResource的,但关注点和管理对象的人已明确定义。这是我计划的方式,因为connection poolingSql Server&ADO.net

还有另一种方法,使用 Table Inner Joins 然后填充来一次性检索所有详细信息。

我应该采取哪种方式,为什么?

附加功能:

.NET 2.0、ASP.net 2.0、C#、Sql Server 2005、DB 在同一台机器上托管应用程序。

4

1 回答 1

1

为了获得最佳性能和可扩展性,您应该尽量减少到数据库的往返次数。为了向自己证明这一点,只需运行一些基准测试即可;它很快变得清晰。

单次往返的一种方法是使用连接。另一种是返回多个结果集。后者有助于消除可能的重复数据。

于 2012-01-07T09:20:16.280 回答