다음을 통해 공유


연습: 사용자 지정 비즈니스 개체에 데이터 바인딩

업데이트: 2007년 11월

많은 웹 응용 프로그램은 여러 계층을 사용하여 빌드되며 데이터 액세스를 제공하는 하나 이상의 구성 요소가 중간 계층에 포함되는 경우가 많습니다. Microsoft Visual Web Developer에는 연습: Visual Studio 데이터 구성 요소로 웹 페이지 데이터 바인딩에 설명된 대로 중간 계층 데이터 개체로 사용할 수 있는 데이터 구성 요소를 만드는 데 도움이 되는 마법사가 있습니다.

하지만 마법사로 만든 데이터 구성 요소를 사용하는 대신 사용자 지정 비즈니스 개체를 빌드할 수도 있습니다. 사용자 지정 비즈니스 개체를 만들면 사용자 고유의 비즈니스 논리를 구현할 수 있습니다. 이 연습에서는 ASP.NET 웹 페이지의 데이터 소스로 사용할 수 있는 기본 비즈니스 개체를 만드는 방법을 설명합니다.

이 연습을 통해 다음 작업을 수행하는 방법을 배웁니다.

  • 웹 페이지에 데이터를 반환할 수 있는 구성 요소 만들기. 이 구성 요소에서는 XML 파일을 데이터로 사용합니다.

  • 웹 페이지에서 비즈니스 개체를 데이터 소스로 참조

  • 비즈니스 개체가 반환하는 데이터에 컨트롤 바인딩

  • 비즈니스 개체를 사용하여 데이터 읽기 및 쓰기

사전 요구 사항

이 연습을 완료하려면 다음과 같은 요건을 갖추어야 합니다.

  • Visual Web Developer(Visual Studio)

  • .NET Framework

이 연습에서는 Visual Web Developer의 일반적인 사용 방법에 대해 잘 알고 있다고 가정합니다.

웹 사이트 만들기

예를 들어, 연습: Visual Web Developer에서 기본 웹 페이지 만들기의 단계를 수행하여 Visual Web Developer에서 웹 사이트를 이미 만들었으면 이 웹 사이트를 사용하고 다음 단원인 "비즈니스 데이터용 XML 파일 만들기"로 이동합니다. 그렇지 않으면, 다음 단계를 따라 새 웹 사이트와 페이지를 만듭니다.

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

  1. Visual Web Developer를 엽니다.

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

    새 웹 사이트 대화 상자가 나타납니다.

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

  4. 위치 상자에 웹 사이트의 페이지를 보관할 폴더의 이름을 입력합니다.

    예를 들어, 폴더 이름 C:\WebSites를 입력합니다.

  5. 언어 목록에서 작업할 프로그래밍 언어를 클릭합니다.

  6. 확인을 클릭합니다.

    Visual Web Developer에서 해당 폴더와 Default.aspx라는 새 페이지를 만듭니다.

비즈니스 데이터용 XML 파일 만들기

다음 절차에서는 비즈니스 구성 요소 데이터로 사용할 간단한 XML 파일을 만듭니다.

XML 파일을 만들려면

  1. 솔루션 탐색기에서 App_Data를 마우스 오른쪽 단추로 클릭한 다음 새 항목추가를 클릭합니다.

    참고:

    XML 파일을 App_Data 폴더에 만들어야 합니다. App_Data 폴더에는 웹 페이지에서 XML 파일의 데이터를 읽고 이 파일에 데이터를 쓸 수 있는 권한이 설정되어 있습니다.

  2. Visual Studio에 설치되어 있는 템플릿에서 XML 파일을 클릭합니다.

  3. 이름 상자에 Authors.xml을 입력합니다.

  4. 추가를 클릭합니다.

    XML 지시문만 포함된 새 XML 파일이 만들어집니다.

  5. 다음 XML 데이터를 복사한 후 파일에 붙여넣어 파일의 기존 내용을 덮어씁니다.

    XML 파일에는 키의 기본 키 제약 조건을 포함하여 데이터의 데이터베이스 구조를 식별하는 스키마 정보가 포함됩니다.

    참고:

    비즈니스 구성 요소에서는 응용 프로그램에 적합한 방식으로 데이터를 사용할 수 있습니다. 이 연습에서는 XML 파일을 사용합니다.

    <?xml version="1.0" standalone="yes"?>
    <dsPubs xmlns="http://www.tempuri.org/dsPubs.xsd">
    <xs:schema id="dsPubs" targetNamespace="http://www.tempuri.org/dsPubs.xsd" xmlns:mstns="http://www.tempuri.org/dsPubs.xsd" xmlns="http://www.tempuri.org/dsPubs.xsd" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata" attributeFormDefault="qualified" elementFormDefault="qualified">
        <xs:element name="dsPubs" msdata:IsDataSet="true">
          <xs:complexType>
            <xs:choice minOccurs="0" maxOccurs="unbounded">
              <xs:element name="authors">
                <xs:complexType>
                  <xs:sequence>
                    <xs:element name="au_id" type="xs:string" />
                    <xs:element name="au_lname" type="xs:string" />
                    <xs:element name="au_fname" type="xs:string" />
                    <xs:element name="au_phone" type="xs:string" />
                  </xs:sequence>
                </xs:complexType>
              </xs:element>
            </xs:choice>
          </xs:complexType>
          <xs:unique name="Constraint1" msdata:PrimaryKey="true">
            <xs:selector xpath=".//mstns:authors" />
            <xs:field xpath="mstns:au_id" />
          </xs:unique>
        </xs:element>
      </xs:schema>
      <authors>
        <au_id>172-32-1176</au_id>
        <au_lname>West</au_lname>
        <au_fname>Paul</au_fname>
        <au_phone>408 555-0123</au_phone>
      </authors>
      <authors>
        <au_id>213-46-8915</au_id>
        <au_lname>Gray</au_lname>
        <au_fname>Chris</au_fname>
        <au_phone>415 555-0120</au_phone>
      </authors>
    </dsPubs>
    
  6. Authors.xml 파일을 저장한 다음 닫습니다.

구성 요소 만들기

다음 단계에서는 비즈니스 구성 요소로 사용할 클래스를 만듭니다. 이 구성 요소를 웹 사이트의 App_Code 폴더에 보관합니다. 실제 응용 프로그램에서는 전역 어셈블리 캐시와 같은 간편한 저장소에 구성 요소를 보관할 수 있습니다. 웹 사이트에 App_Code라는 디렉터리가 아직 없으면 새로 만들어야 합니다.

App_Code 폴더를 만들려면

  • 솔루션 탐색기에서 웹 사이트의 이름을 마우스 오른쪽 단추로 클릭한 다음 ASP.NET 폴더 추가를 클릭하고 App_Code를 클릭합니다.

    참고:

    폴더의 이름을 App_Code로 지정해야 합니다.

이제 사이트에 구성 요소를 추가할 수 있습니다.

비즈니스 구성 요소를 만들려면

  1. 솔루션 탐색기에서 App_Code 폴더를 마우스 오른쪽 단추로 클릭한 다음 새 항목 추가를 선택합니다.

    참고:

    새 항목을 App_Code 폴더에 만들어야 합니다.

    새 항목 추가 대화 상자가 나타납니다.

  2. Visual Studio에 설치되어 있는 템플릿에서 클래스를 클릭합니다.

  3. 언어 상자에서 작업할 프로그래밍 언어를 클릭합니다.

  4. 이름 상자에 BusinessObject를 입력합니다.

  5. 추가를 클릭합니다.

    Visual Web Developer에서 새 클래스 파일을 만들고 코드 편집기를 엽니다.

  6. 다음 코드를 복사한 다음 파일에 붙여넣어 파일에 있는 내용을 덮어씁니다.

    Imports Microsoft.VisualBasic
    Imports System
    Imports System.Web
    Imports System.Data
    Namespace PubsClasses
        Public Class AuthorClass
            Private dsAuthors As DataSet = _
                New System.Data.DataSet("ds1")
            Private filePath As String = _
               HttpContext.Current.Server.MapPath _
                   ("~/App_Data/authors.xml")
            Public Sub New()
                dsAuthors.ReadXml(filePath, Data.XmlReadMode.ReadSchema)
            End Sub
    
            Public Function GetAuthors() As DataSet
                Return dsAuthors
                End Function
            End Class
    End Namespace
    
    using System;
    using System.Web;
    using System.Data;
    namespace PubsClasses
    {
        public class AuthorClass
        {
            private DataSet dsAuthors = new DataSet("ds1");
            private String filePath =
                HttpContext.Current.Server.MapPath
                    ("~/App_Data/Authors.xml");
            public AuthorClass()
            {
                dsAuthors.ReadXml (filePath, XmlReadMode.ReadSchema);
            }
            public DataSet GetAuthors ()
            {
                return dsAuthors;
            }
        }
    }
    
    참고:

    filePath 변수 값이 앞서 만든 XML 파일의 이름을 참조하는지 확인합니다.

    클래스의 인스턴스가 만들어지면 이 인스턴스에서는 XML 파일을 읽어 데이터 집합으로 변환합니다. 클래스의 GetAuthors 메서드에서 데이터 집합을 반환합니다.

  7. 파일을 저장합니다. 다음 단원의 작업을 제대로 수행하려면 파일을 저장해야 합니다.

비즈니스 구성 요소를 사용하여 데이터 표시

이제 웹 페이지에서 비즈니스 구성 요소를 호출하고 구성 요소의 데이터를 표시할 수 있습니다. 구성 요소를 참조하려면 개체 작업을 위해 특별히 디자인된 ObjectDataSource 컨트롤을 사용합니다.

구성 요소를 참조하는 ObjectDataSource 컨트롤을 만들려면

  1. Default.aspx 페이지로 전환하거나 이 페이지를 엽니다.

    참고:

    Default.aspx 페이지가 없는 경우에는 다른 페이지를 사용할 수 있습니다. 또는 웹 사이트에 새 페이지를 추가할 수 있습니다. 솔루션 탐색기에서 웹 사이트 이름을 마우스 오른쪽 단추로 클릭하고 새 항목 추가를 클릭한 다음 Web Form을 추가합니다.

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

  3. 도구 상자데이터 폴더에서 ObjectDataSource 컨트롤을 페이지로 끌어 옵니다.

  4. 속성 창에서 ID를 AuthorsObjectDataSource로 설정합니다.

  5. ObjectDataSource 컨트롤을 마우스 오른쪽 단추로 클릭한 다음 스마트 태그를 클릭하여 ObjectDataSource 작업 메뉴를 표시합니다.

  6. ObjectDataSource 작업 메뉴에서 데이터 소스 구성을 클릭합니다.

    데이터 소스 구성 마법사가 표시됩니다.

  7. 비즈니스 개체 선택 목록에서 PubsClasses.AuthorClass를 클릭합니다.

  8. 다음을 클릭합니다.

  9. SELECT 탭의 메서드 선택 목록에서 **Dataset을(를) 반환하는 GetAuthors()**를 클릭합니다.

    GetAuthors 메서드는 앞서 만든 비즈니스 클래스에 정의되어 있습니다. 이 메서드는 Authors.xml 파일의 데이터가 포함된 데이터 집합을 반환합니다.

  10. 마침을 클릭합니다.

    입력한 구성 정보는 구성 요소에서 데이터를 가져오려면 구성 요소의 GetAuthors 메서드를 호출해야 함을 나타냅니다.

    참고:

    Visual Basic .NET에서 프로그래밍하는 경우에도 SelectMethod 속성에 대해 지정한 메서드의 이름은 대/소문자를 구분합니다.

이제 ObjectDataSource 컨트롤을 사용하여 구성 요소에서 데이터를 가져올 수 있습니다. 그런 다음 페이지의 GridView 컨트롤에 데이터를 표시합니다.

구성 요소의 데이터를 표시하려면

  1. 도구 상자데이터 폴더에서 GridView 컨트롤을 페이지로 끌어 옵니다.

  2. GridView 컨트롤을 마우스 오른쪽 단추로 클릭한 다음 GridView 작업 메뉴가 보이지 않으면 스마트 태그를 클릭합니다.

  3. GridView 작업 메뉴의 데이터 소스 선택 상자에서 AuthorsObjectDataSource를 클릭합니다.

  4. Ctrl+F5를 눌러 페이지를 실행합니다.

    GridView 컨트롤에 XML 데이터가 표시됩니다.

비즈니스 구성 요소를 사용하여 데이터 삽입

SqlDataSource 컨트롤 등 다른 데이터 소스 컨트롤과 마찬가지로 ObjectDataSource 컨트롤에서는 업데이트(삽입, 업데이트 및 삭제)를 지원합니다. 이 단원에서는 저자 레코드를 삽입하는 메서드를 사용하여 비즈니스 구성 요소를 수정합니다. 그런 다음 사용자가 새 저자 정보를 입력하고 ObjectDataSource 컨트롤을 수정하여 삽입할 수 있도록 페이지를 변경합니다.

참고:

이 연습 부분에서는 이전에 만든 Authors.xml 파일을 업데이트합니다. 응용 프로그램에서 런타임시 파일에 쓸 수 있어야 하며, 그렇지 않은 경우 파일을 업데이트하려고 하면 웹 페이지에 오류가 표시됩니다. Authors.xml 파일을 App_Data 폴더에 만든 경우에는 권한이 자동으로 설정됩니다.

삽입을 허용하도록 비즈니스 구성 요소를 수정하려면

  1. BusinessObject 파일로 전환합니다.

  2. 다음 메서드를 AuthorClass의 Final 멤버로 추가합니다.

    Public Sub InsertAuthor(ByVal au_id As String, _
            ByVal au_lname As String, _
            ByVal au_fname As String, ByVal au_phone As String)
        Dim workRow As DataRow = dsAuthors.Tables(0).NewRow
        workRow.BeginEdit()
        workRow(0) = au_id
        workRow(1) = au_lname
        workRow(2) = au_fname
        workRow(3) = au_phone
        workRow.EndEdit()
        dsAuthors.Tables(0).Rows.Add(workRow)
        dsAuthors.WriteXml(filePath, Data.XmlWriteMode.WriteSchema)
    End Sub
    
    public void InsertAuthor (String au_id, String au_lname, 
        String au_fname, String au_phone)
    {
        DataRow workRow = dsAuthors.Tables[0].NewRow ();
        workRow.BeginEdit ();
        workRow[0] = au_id;
        workRow[1] = au_lname;
        workRow[2] = au_fname;
        workRow[3] = au_phone;
        workRow.EndEdit ();
        dsAuthors.Tables[0].Rows.Add (workRow);
        dsAuthors.WriteXml (filePath, XmlWriteMode.WriteSchema);
    }
    
    참고:

    메서드에 저자 정보를 전달하는 데 사용되는 변수 이름(au_id, au_lname, au_fname 및 au_phone)에 주의합니다. 이 이름은 앞서 만든 XML 파일의 스키마에 정의된 열 이름과 일치해야 합니다.

    새 메서드에서는 삽입할 네 개의 값을 가져옵니다. 이 값은 페이지에서 매개 변수로 지정합니다. 이 메서드는 데이터 집합에 새 행을 만든 다음 업데이트된 데이터 집합을 XML 파일로 씁니다.

  3. 파일을 저장합니다.

다음 단계에서는 사용자가 새 저자 정보를 입력할 수 있도록 페이지를 변경합니다. 다음 절차에서는 DetailsView 컨트롤을 사용합니다.

데이터를 삽입할 컨트롤을 추가하려면

  1. Default.aspx 페이지로 전환하거나 이 페이지를 엽니다.

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

  3. 도구 상자데이터 폴더에서 DetailsView 컨트롤을 페이지로 끌어 옵니다.

    참고:

    페이지의 정확한 레이아웃은 중요하지 않습니다.

  4. DetailsView 작업 메뉴의 데이터 소스 선택 상자에서 AuthorsObjectDataSource를 클릭합니다.

    참고:

    DetailsView 작업 메뉴가 표시되지 않으면 스마트 태그를 클릭합니다.

  5. 속성 창에서 AutoGenerateInsertButton을 true로 설정합니다.

    이렇게 하면 사용자가 클릭하여 컨트롤을 데이터 입력 모드로 전환할 수 있는 새로 만들기 단추가 DetailsView에서 렌더링됩니다.

마지막으로 ObjectDataSource 컨트롤을 구성하여 데이터를 삽입하기 위해 컨트롤에서 수행하는 작업을 지정해야 합니다.

데이터 삽입을 위해 데이터 소스 컨트롤을 구성하려면

  • AuthorsObjectDataSource를 마우스 오른쪽 단추로 클릭하고 속성을 클릭한 다음 InsertMethod를 InsertAuthor로 설정합니다.

    이 값은 비즈니스 구성 요소에 추가한 메서드의 이름입니다.

이제 XML 파일에 새 저자를 삽입할 수 있습니다.

삽입 작업을 테스트하려면

  1. Ctrl+F5를 눌러 Default.aspx 페이지를 실행합니다.

  2. DetailsView 컨트롤에서 새로 만들기 단추를 클릭합니다.

    컨트롤에 텍스트 상자가 다시 표시됩니다.

  3. 새 저자 정보를 입력한 다음 삽입을 클릭합니다.

    새 저자 정보가 XML 파일에 추가됩니다. GridView 컨트롤의 새 레코드에 입력한 정보가 즉시 반영됩니다.

다음 단계

이 연습에서는 데이터 구성 요소를 사용하는 방법에 대해 설명합니다. 다른 탐색 기능을 테스트해 볼 수도 있습니다. 예를 들어, 다음과 같은 경우입니다.

참고 항목

작업

연습: Visual Studio 데이터 구성 요소로 웹 페이지 데이터 바인딩

연습: Visual Web Developer에서 웹 사이트에 공유 코드 사용

연습: Visual Web Developer에서 기본 웹 페이지 만들기

개념

데이터 소스 컨트롤 개요

데이터 소스 컨트롤에 매개 변수 사용