小编max*_*max的帖子

面向对象的n层设计.我抽象的太多了吗?还是不够?

我正在构建我的第一个企业级解决方案(至少我试图使其成为企业级).我正在尝试遵循最佳实践设计模式,但我开始担心我可能在抽象方面走得太远了.

我正在尝试将我的asp.net webforms(在C#中)应用程序构建为n层应用程序.我使用XSD强类型数据集创建了一个数据访问层,该数据集与SQL服务器后端连接.我通过我以1:1为基础创建的一些业务层对象访问DAL到数据集中的数据表(例如,数据集中用户数据表的UsersBLL类).我正在BLL中进行检查,以确保传递给DAL的数据遵循应用程序的业务规则.这一切都很好.我遇到困难的地方是将BLL连接到表示层的点.例如,我的UsersBLL类主要处理整个数据表,因为它与DAL连接.我现在应该创建一个单独的"用户"(Singular)类来映射单个用户的属性,而不是多个用户?这样我就不必在表示层中搜索数据表了,因为我可以使用在User类中创建的属性.或者以某种方式尝试在UsersBLL中处理这个更好?

很抱歉,如果这听起来有点复杂......以下是UsersBLL的代码:

using System;
using System.Data;
using PedChallenge.DAL.PedDataSetTableAdapters;

[System.ComponentModel.DataObject]
public class UsersBLL
{
    private UsersTableAdapter _UsersAdapter = null;
    protected UsersTableAdapter Adapter
    {
        get
        {
            if (_UsersAdapter == null)
                _UsersAdapter = new UsersTableAdapter();

            return _UsersAdapter;
        }
    }


    [System.ComponentModel.DataObjectMethodAttribute
        (System.ComponentModel.DataObjectMethodType.Select, true)]
    public PedChallenge.DAL.PedDataSet.UsersDataTable GetUsers()
    {
        return Adapter.GetUsers();
    }

    [System.ComponentModel.DataObjectMethodAttribute
        (System.ComponentModel.DataObjectMethodType.Select, false)]
    public PedChallenge.DAL.PedDataSet.UsersDataTable GetUserByUserID(int userID)
    {
        return Adapter.GetUserByUserID(userID);
    }

    [System.ComponentModel.DataObjectMethodAttribute
        (System.ComponentModel.DataObjectMethodType.Select, false)]
    public PedChallenge.DAL.PedDataSet.UsersDataTable GetUsersByTeamID(int teamID)
    {
        return Adapter.GetUsersByTeamID(teamID);
    }


    [System.ComponentModel.DataObjectMethodAttribute
        (System.ComponentModel.DataObjectMethodType.Select, false)]
    public PedChallenge.DAL.PedDataSet.UsersDataTable GetUsersByEmail(string Email)
    {
        return Adapter.GetUserByEmail(Email); …
Run Code Online (Sandbox Code Playgroud)

c# asp.net oop class-design

7
推荐指数
1
解决办法
1226
查看次数

标签 统计

asp.net ×1

c# ×1

class-design ×1

oop ×1