다음을 통해 공유


연습: ASP.NET에서 데이터 액세스 및 비즈니스 논리 계층 만들기

업데이트: 2007년 11월

ASP.NET에서 데이터로 작업하는 경우 공통된 소프트웨어 패턴을 사용하면 이점을 얻을 수 있습니다. 이러한 패턴 중 하나는 데이터에 대한 액세스를 제어하거나 다른 비즈니스 규칙을 제공하는 비즈니스 논리 코드를 데이터 액세스 코드와 분리하는 것입니다. 이 패턴에서 이러한 두 계층은 웹 사이트 사용자가 데이터를 보거나 변경하기 위해 액세스하는 페이지로 구성된 프레젠테이션 계층과 분리되어 있습니다.

ASP.NET에서는 데이터 액세스, 비즈니스 논리 및 프레젠테이션을 다양한 방식으로 분리합니다. 예를 들어 LinqDataSourceObjectDataSource 컨트롤 같은 서버 컨트롤이 포함된 데이터 소스 모델에서는 프레젠테이션 계층을 데이터 액세스 코드 및 비즈니스 논리와 분리합니다.

또 다른 패턴은 ASP.NET 페이지(프레젠테이션 계층)에 바로 데이터 액세스 논리를 포함하는 것입니다. 예를 들어 ADO.NET 코드를 ASP.NET 페이지의 코드 숨김 페이지에 작성하거나 SqlDataSource 컨트롤을 사용할 수 있습니다. 이 접근 방식을 사용하면 데이터 액세스 논리와 프레젠테이션 계층이 밀접하게 결합됩니다.

권장되는 접근 방식은 데이터 액세스 논리와 프레젠테이션 계층을 분리하는 것입니다. 이러한 별도의 계층을 데이터 액세스 계층이라고 합니다. 데이터 액세스 계층은 개별 클래스 라이브러리 프로젝트로 구현할 수 있습니다. 하지만 데이터 액세스 계층을 자동으로 생성할 수 있는 Visual Web Developer의 도구를 사용할 수도 있습니다.

참고:

Microsoft Visual Web Developer Express Edition에서는 클래스 라이브러리 프로젝트를 만들 수 없습니다. 하지만 Visual Basic Express Edition 또는 Visual C# Express Edition을 사용하여 개별 프로젝트를 만든 다음 해당 클래스의 출력을 웹 사이트에 어셈블리(DLL)로 포함할 수는 있습니다.

웹 사이트에서 데이터를 표시하거나 업데이트하는 경우에는 사용자 인터페이스를 만들기 전에 데이터 액세스 계층 및 비즈니스 논리 계층을 먼저 만들어야 합니다.

데이터 기반 웹 응용 프로그램에는 대개 형식화된 데이터 집합 또는 데이터를 나타내는 엔터티 클래스를 사용하여 데이터 액세스 계층이 포함됩니다. 또한 사용자 지정 비즈니스 규칙을 적용하는 비즈니스 논리 계층도 포함되어 있습니다. 마지막으로 ASP.NET 페이지를 사용하고 마스터 페이지와 테마를 사용하여 공통적인 페이지 레이아웃을 만드는 방식으로 프레젠테이션 계층이 포함됩니다. 이 연습에서는 데이터 액세스 계층을 만드는 방법에 대해 설명합니다.

데이터 액세스 계층에는 내부 데이터 소스와 관련된 모든 코드가 포함되어 있습니다. 여기에는 데이터베이스에 대한 연결을 만들고 선택, 삽입, 업데이트 및 삭제 명령을 실행하는 코드가 포함됩니다. 데이터 액세스 계층에는 대개 내부 데이터베이스 데이터에 액세스하기 위한 메서드를 구현하는 클래스가 들어 있습니다. 프레젠테이션 계층은 데이터와 직접 상호 작용하는 대신 모든 데이터 요청에 대해 데이터 액세스 계층에서 클래스 및 메서드를 호출합니다.

이 연습에서 수행할 작업은 다음과 같습니다.

  • SQL 데이터베이스 만들기 및 데이터 추가

  • 데이터 액세스 계층 역할을 하는 LINQ to SQL 파일 추가

  • 프레젠테이션 계층으로 작동하는 페이지 만들기

  • 프레젠테이션 계층과 데이터 액세스 계층 간의 통신을 수행하는 페이지에 LinqDataSource 컨트롤 추가

사전 요구 사항

이 연습을 완료하려면 다음이 필요합니다.

  • Microsoft Visual Studio 2008 또는 Microsoft Visual Web Developer Express Edition. 다운로드 정보는 Visual Studio Developer Center 웹 사이트를 참조하십시오.

  • .NET Framework 버전 3.5

  • SQL Server Express Edition. Microsoft SQL Server가 설치되어 있으면 대신 이를 사용할 수 있습니다.

웹 사이트 만들기

첫 단계는 웹 사이트를 만드는 것입니다.

새 파일 시스템 웹 사이트를 만들려면

  1. Visual Studio 2008 또는 Visual Web Developer Express Edition을 엽니다.

  2. 파일 메뉴에서 새웹 사이트를 클릭합니다.

    새 웹 사이트 대화 상자가 표시됩니다.

  3. Visual Studio에 설치되어 있는 템플릿에서 ASP.NET 웹 사이트를 선택합니다.

  4. 위치 상자에서 파일 시스템을 클릭한 다음 웹 사이트 파일을 보관할 폴더의 이름을 입력합니다.

    예를 들어 C:\BasicWebSite와 같이 입력합니다.

  5. 언어 목록에서 Visual Basic 또는 Visual C#을 클릭한 다음 확인을 클릭합니다.

    참고:

    선택한 프로그래밍 언어는 웹 사이트의 기본값이 됩니다. 하지만 페이지마다 개별적으로 프로그래밍 언어를 설정할 수도 있습니다.

    Visual Web Developer에서 폴더 및 Default.aspx라는 새 페이지가 만들어집니다.

데이터베이스에 연결

다음 단계에서는 서버 탐색기 창을 사용하여 Visual Web Developer의 데이터베이스에 연결합니다. Visual Web Developer Express Edition에서는 창 이름이 데이터베이스 탐색기입니다. 서버 탐색기에서 데이터베이스에 대한 연결을 만들면 Visual Studio 내에서 테이블, 저장 프로시저, 뷰 및 기타 데이터베이스 요소를 추가할 수 있습니다. 또한 수동으로 또는 쿼리 작성기 창을 사용하여 테이블 데이터를 보거나 쿼리를 만들 수도 있습니다.

이 연습의 뒷부분에서 데이터 액세스 계층에 대해 형식화된 데이터 집합을 작성하는 경우 Visual Web Developer에서 데이터베이스에 대한 연결을 만들어야 합니다. 연결 정보는 수동으로 제공할 수도 있습니다. 그러나 Visual Web Developer에서는 서버 탐색기에서 이미 등록한 데이터베이스의 목록을 자동으로 채우므로 이 프로세스를 단순화할 수 있습니다.

이 연습에서는 작업 항목을 추적하기 위한 새 데이터베이스를 만듭니다.

새 SQL Server Express 데이터베이스 만들기

이 단원에서는 할 일 목록에 대해 작업 정보를 저장하는 새 SQL Server Express 데이터베이스를 만듭니다.

웹 사이트에 데이터베이스를 추가하려면

  1. 솔루션 탐색기에서 웹 사이트의 이름을 마우스 오른쪽 단추로 클릭한 다음 새 항목 추가를 클릭합니다.

    새 항목 추가 창이 표시됩니다.

  2. SQL 데이터베이스를 선택하고 데이터베이스의 이름을 Tasks.mdf로 지정합니다.

  3. 확인을 클릭합니다.

  4. Visual Web Developer에서 데이터베이스를 App_Data 폴더에 저장할 것인지를 묻는 메시지가 나타나면 예를 클릭합니다.

Tasks 데이터베이스에 대한 스키마 및 샘플 데이터 만들기

데이터베이스 디자인 및 편집 기능을 사용하여 작업 항목을 저장하는 테이블에 대한 스키마를 만들 수 있습니다.

스키마를 정의하고 Tasks 데이터베이스에 대한 데이터를 추가하려면

  1. 솔루션 탐색기에서 App_Data 폴더를 열고 Tasks.mdf를 두 번 클릭합니다.

    서버 탐색기에서 Tasks 데이터베이스 노드가 열립니다.

  2. 테이블 폴더를 마우스 오른쪽 단추로 클릭한 다음 새 테이블 추가를 클릭합니다.

    테이블 정의 창이 표시됩니다.

  3. 테이블에 다음 열을 만듭니다.

    열 이름

    데이터 형식

    속성

    taskId

    int

    Not null

    name

    nvarchar(50)

    Not null

    dateCreated

    datetime

    Not null

    isComplete

    bit

    Not null

  4. taskId 열에 대한 행을 선택하고 행을 마우스 오른쪽 단추로 클릭한 다음 기본 키 설정을 클릭합니다.

  5. taskid 행을 선택한 다음 열 속성 창에서 ID 사양 섹션을 찾습니다.

  6. 섹션을 열고 (ID)를 예로 설정합니다.

  7. 테이블을 저장하고 이름을 TasksList로 저장한 다음 테이블 정의 창을 닫습니다.

  8. 서버 탐색기에서 테이블을 마우스 오른쪽 단추로 클릭한 다음 테이블 데이터 표시를 클릭합니다.

    데이터를 보고, 추가하고, 편집할 수 있는 편집 창이 표시됩니다.

  9. 테이블에 네 개 또는 다섯 개의 레코드를 추가합니다.

    taskId 열은 ID 열이고 해당 값은 자동으로 할당되므로 이 열에 대해서는 값을 지정할 필요가 없습니다.

  10. 편집 창을 닫습니다.

데이터 액세스 및 비즈니스 논리 계층 만들기

위에서 만든 데이터베이스에 대해 다양한 방법으로 데이터 액세스 및 비즈니스 논리 계층을 만들 수 있습니다. 이 연습에서는 데이터베이스 엔터티를 나타내는 클래스를 만듭니다. 그런 다음 이렇게 생성된 클래스에 고유한 비즈니스 논리를 추가합니다. 이 연습에서는 클래스에 비즈니스 논리를 추가하지 않습니다.

이 연습에서는 데이터 작업을 위해 LINQ(통합 언어 쿼리)를 사용합니다. LINQ는 관계형 데이터에 개체 지향 프로그래밍 원리를 적용합니다. LINQ에서는 여러 유형의 데이터 소스에서 데이터를 쿼리하고 업데이트하기 위한 통합 프로그래밍 모델을 제공하고 데이터 기능을 직접 C# 및 Visual Basic 언어로 확장합니다. LINQ에 대한 자세한 내용은 LINQ(통합 언어 쿼리)를 참조하십시오.

LINQ to SQL 클래스는 데이터 액세스 계층으로 사용합니다. Visual Web Developer의 개체 관계형 디자이너 창을 사용하여 데이터를 나타내는 엔터티 클래스를 생성합니다.

SQL 데이터 컨텍스트 클래스에 Tasks 데이터베이스 매핑

데이터 액세스 계층을 만들려면 먼저 프로젝트에 형식화된 데이터 집합을 추가합니다.

Tasks 테이블에 대한 클래스를 만들려면

  1. 웹 사이트에 아직 App_Code 폴더가 없는 경우 솔루션 탐색기에서 프로젝트를 마우스 오른쪽 단추로 클릭하고 ASP.NET 폴더 추가를 클릭한 다음 App_Code를 클릭합니다.

  2. App_Code 폴더를 마우스 오른쪽 단추로 클릭한 다음 새 항목 추가를 클릭합니다.

    새 항목 추가 대화 상자가 표시됩니다.

  3. Visual Studio에 설치되어 있는 템플릿에서 LINQ to SQL 클래스 템플릿을 선택하고 파일 이름을 Tasks.dbml로 바꿉니다.

  4. 추가를 클릭합니다.

    개체 관계형 디자이너 창이 표시됩니다.

  5. 서버 탐색기에서 TasksList 테이블을 개체 관계형 디자이너 창으로 끌어 옵니다.

  6. Tasks.dbml 파일을 저장합니다.

    Visual Web Developer에서 Tasks.dbml 아래의 App_Code 폴더에 Tasks.dbml.layout 파일을 만듭니다. 또한 사용하는 프로그래밍 언어에 따라 Tasks.designer.cs 또는 Tasks.designer.vb를 만들기도 합니다.

  7. 솔루션 탐색기에서 Tasks.designer.cs 또는 Tasks.designer.vb 파일을 엽니다.

    코드에는 TasksDataContext 및 TasksList라는 클래스가 포함되어 있습니다. TasksDataContext 클래스는 데이터베이스를 나타내고 TasksList 클래스는 데이터베이스 테이블을 나타냅니다. TasksDataContext 클래스의 매개 변수가 없는 생성자는 웹 사이트의 구성 파일(Web.config)에서 데이터베이스에 대한 연결 문자열을 읽습니다.

  8. Web.config 파일을 엽니다.

    Tasks 데이터베이스에 대한 연결 문자열이 connectionStrings 요소에 추가되었습니다.

  9. 클래스 파일과 Web.config 파일을 닫습니다.

LinqDataSource 컨트롤 만들기 및 구성

이제 데이터베이스 엔터티를 나타내는 데이터베이스 테이블 및 클래스가 있으므로 ASP.NET 웹 페이지에서 LinqDataSource를 사용하여 데이터베이스에 액세스할 수 있습니다. LinqDataSource 컨트롤은 웹 개발자가 ASP.NET 데이터 소스 컨트롤 아키텍처를 통해 LINQ를 사용할 수 있도록 합니다.

LinqDataSource 컨트롤은 데이터베이스의 개체를 선택, 삽입, 업데이트 및 삭제하기 위한 코드를 만듭니다. 이러한 클래스를 비즈니스 논리를 통해 호출하면 데이터베이스 기능을 수행하고 비즈니스 논리 규칙을 적용할 수 있습니다.

LinqDataSource 컨트롤을 만들고 구성하려면

  1. Default.aspx 페이지를 열거나 이 페이지로 전환합니다.

  2. 디자인 뷰로 전환합니다.

  3. 도구 상자의 데이터 탭에서 LinqDataSource 컨트롤을 웹 페이지로 끌어 옵니다.

    ID 속성을 LinqDataSource1로 그대로 둘 수 있습니다.

  4. LinqDataSource 작업 스마트 태그 패널에서 데이터 소스 구성을 클릭합니다.

  5. 컨텍스트 개체 목록에서 TasksDataContext를 선택한 후 다음을 클릭합니다.

  6. 목록에서 TasksLists(Table<TasksList>)를 선택한 다음 마침을 클릭합니다.

  7. LinqDataSource 작업 스마트 태그 패널에서 삭제 허용, 삽입 허용 및 업데이트 허용 확인란을 선택합니다.

    데이터를 선택하기 위해 데이터베이스 명령을 지정할 필요가 없었습니다.

  8. 페이지를 실행합니다.

    페이지에 연습의 앞부분에서 입력한 데이터가 표시됩니다.

다음 단계

이 연습에서는 LINQ to SQL 클래스 템플릿 및 LinqDataSource 서버 컨트롤을 사용하여 응용 프로그램의 데이터 액세스 계층 및 비즈니스 논리 계층을 만드는 방법에 대해 설명했습니다. 또한 웹 사이트 페이지에서 웹 사이트의 프레젠테이션 계층에 직접 연결되어 있지 않은 유연한 데이터에 액세스하는 방법을 확인해 보았습니다.

연습: AJAX 사용 데이터 응용 프로그램 만들기 항목에서는 LinqDataSource 컨트롤을 사용하여 Tasks 데이터베이스에서 정보를 표시하고 업데이트하는 AJAX 사용 웹 응용 프로그램을 만듭니다.

참고 항목

작업

연습: AJAX 사용 데이터 응용 프로그램 만들기

개념

ASP.NET 선택 연습