다음을 통해 공유


연습: 하향식 접근 방식을 사용하여 응용 프로그램 시스템 디자인

업데이트: 2007년 11월

이 연습에서는 하향식 접근 방식을 사용하여 응용 프로그램 시스템을 디자인하는 과정을 안내합니다.

이 연습에서는 다음 작업을 수행합니다.

  • 새 시스템 디자인 솔루션을 만듭니다.

  • 시스템 정의 동작을 웹 서비스로 나타내 노출합니다.

  • 새 웹 서비스에 대해 작업을 정의합니다.

  • 시스템 정의에 두 시스템을 멤버로 추가합니다.

  • 새 시스템의 이름을 바꿉니다.

  • 시스템 정의 멤버에 웹 서비스를 추가합니다.

  • 시스템 정의에서 두 시스템을 연결합니다.

  • 시스템 정의 동작을 멤버에 위임합니다.

  • 시스템 정의 멤버를 계속 디자인합니다.

  • 기본 응용 프로그램 정의를 구현합니다.

새 시스템 디자인 솔루션을 만듭니다.

시스템 디자인은 하향식 접근 방식을 통해 시작합니다. 이 작업을 수행하려면 새 시스템 디자인 솔루션을 만들어야 합니다. 이 솔루션에는 기본적으로 빈 시스템 다이어그램과 응용 프로그램 다이어그램이 포함되어 있습니다. 시스템 다이어그램에는 빈 시스템 정의가 표시되며, 응용 프로그램 다이어그램에는 시스템 정의에 멤버로 추가하는 모든 응용 프로그램 정의가 표시됩니다.

새 시스템 디자인 솔루션을 만들려면

  1. 파일 메뉴에서 새로 만들기를 가리키고 프로젝트를 클릭합니다.

    새 프로젝트 대화 상자가 나타납니다.

  2. 새 프로젝트 대화 상자의 프로젝트 형식에서 분산 시스템을 클릭합니다.

  3. 템플릿에서 시스템 디자인을 클릭합니다.

  4. 솔루션의 이름을 StoreFrontSystem으로 지정합니다.

  5. 이 솔루션을 저장할 위치를 입력합니다.

Visual Studio에서 솔루션을 만듭니다. 그러면 시스템 디자이너에서 시스템 다이어그램을 열어 표시하며, 응용 프로그램 디자이너는 백그라운드에서 응용 프로그램 다이어그램을 엽니다.

이제 시스템 정의 동작을 웹 서비스로 나타내 노출할 수 있습니다.

시스템 정의 동작을 웹 서비스로 나타내 노출

이번에는 시스템 정의 동작을 웹 서비스로 정의하여 노출합니다. 이 작업은 시스템 정의에 .NET 웹 서비스 공급자 끝점을 추가하여 수행할 수 있습니다. 이렇게 하면 이 시스템을 다른 시스템 정의에 있는 멤버에도 연결할 수 있습니다.

시스템 정의에 웹 서비스를 추가하려면

  1. 시스템 다이어그램에서 StoreFrontSystem을 클릭합니다.

  2. 다이어그램 메뉴에서 추가와 끝점을 차례로 가리킨 후 .NETWebServiceEndpoint를 클릭합니다.

    StoreFrontSystem에 WebService1이라는 .NET 웹 서비스 공급자 끝점이 표시됩니다.

  3. StoreFrontSystem에서 WebService1을 클릭합니다.

  4. 보기 메뉴에서 속성 창을 클릭합니다.

    속성 창이 나타납니다.

  5. 속성 창의 이름 속성에서 끝점의 이름을 CatalogService로 지정합니다.

    참고:

    시스템 정의에 끝점을 추가하면 다른 시스템 정의에서의 해당 정의 사용에도 이 끝점이 나타납니다. 또한 시스템 정의에서 끝점을 삭제하면 다른 시스템 정의에서의 해당 정의에 대한 모든 사용에서 이 끝점이 삭제됩니다.

이제 CatalogService에 대해 웹 서비스 작업 및 해당 매개 변수를 정의할 수 있습니다.

새 웹 서비스에 대해 작업 정의

CatalogService 웹 서비스에 대해 작업을 정의하려면 웹 서비스 정보 창을 사용합니다. 작업에는 웹 서비스의 메서드 이름, 매개 변수 및 다른 작업 관련 정보가 지정되어 있습니다.

참고:

Visual Studio에서는 기본적으로 시스템 정의에 있는 웹 서비스 끝점의 언어를 Visual Basic으로 설정합니다. 이 끝점에 대한 실제 구현 언어는 해당 끝점의 동작을 응용 프로그램에 위임할 때 선택합니다.

웹 서비스 끝점에 작업을 추가하려면

  1. StoreFrontSystem에서 CatalogService 끝점을 클릭합니다.

  2. 다이어그램 메뉴에서 작업 정의를 클릭합니다.

    웹 서비스 정보 창이 표시됩니다.

  3. 웹 서비스 정보 창에서 <작업 추가>를 클릭하고 GetCatalog라는 작업을 추가한 후 Tab 키를 누릅니다.

  4. 형식 상자에 Catalog를 입력한 후 Enter 키를 누릅니다.

    참고:

    Catalog는 ASP.NET 웹 응용 프로그램에 끝점을 위임하고 해당 응용 프로그램을 구현한 후 정의할 수 있는 사용자 지정 형식입니다.

  5. 작업 노드를 확장하여 <매개 변수 추가>를 클릭하고 CatalogName이라는 매개 변수를 추가한 후 Tab 키를 누릅니다.

  6. 형식 상자에 String을 입력하고 Tab 키를 누릅니다.

    참고:

    형식 상자에 입력하기 시작하면 Visual Studio에서 사용 가능한 형식의 목록을 표시합니다.

  7. 한정자 상자에서 ByVal을 선택하고 Enter 키를 누릅니다.

이제 StoreFrontSystem에 새 멤버를 추가할 수 있습니다.

시스템 정의에 두 시스템을 멤버로 추가

이번에는 StoreFrontSystem 시스템 정의에 두 개의 새로운 시스템을 멤버로 추가합니다. Visual Studio에서는 사용자가 시스템 정의에 시스템을 새로 추가할 때마다 솔루션에 새로운 시스템 다이어그램 파일(.sd)을 추가합니다. 각 시스템 다이어그램에는 각각의 새로운 시스템 정의가 들어 있습니다.

시스템 정의에 두 시스템을 멤버로 추가하려면

  1. 시스템 다이어그램에서 StoreFrontSystem을 클릭합니다.

  2. 다이어그램 메뉴에서 추가와 시스템을 차례로 가리킨 후 Blank System을 클릭합니다.

    System1이라는 새 시스템이 StoreFrontSystem 내에 멤버로 표시됩니다. 그러면 새 시스템 다이어그램 파일(.sd)이 솔루션에 표시되고 백그라운드에서 열립니다.

  3. System2라는 두 번째 빈 시스템을 추가합니다.

이제 이러한 멤버의 이름을 바꿀 수 있습니다.

새 시스템의 이름 바꾸기

이번에는 두 개의 새 시스템과 해당 기본 정의의 이름을 바꿉니다.

새 멤버의 이름을 바꾸려면

  1. StoreFrontSystem에서 System1을 클릭합니다.

  2. 다이어그램 메뉴에서 이름 바꾸기를 클릭합니다.

    이름 바꾸기 대화 상자가 나타납니다.

  3. 이름 바꾸기 대화 상자에서 정의 이름 바꾸기 확인란이 선택되어 있지 않은 경우 선택합니다.

  4. 멤버 이름 상자에서 멤버 이름을 OrderSystem으로 지정하고 확인을 클릭합니다.

    멤버 및 해당 정의에 새 이름이 표시됩니다.

    참고:

    Visual Studio에서는 기본 정의가 포함된 다이어그램 파일의 이름은 업데이트하지 않습니다.

  5. System2의 이름을 CatalogSystem으로 바꿉니다.

이제 시스템 정의 동작을 멤버로 나타내 노출할 수 있습니다.

시스템 정의 멤버에 웹 서비스 추가

이번에는 StoreFrontSystem 멤버의 동작을 웹 서비스로 나타내 노출하겠습니다. 이 작업은 해당 새 멤버에 .NET 웹 서비스 공급자 끝점을 추가하여 수행할 수 있습니다. 이렇게 하면 해당 멤버를 StoreFrontSystem에 있는 다른 멤버에도 연결할 수 있습니다.

멤버에 웹 서비스를 추가하려면

  1. OrderSystem 시스템을 클릭합니다.

  2. 다이어그램 메뉴에서 추가를 가리킨 후 .NETWebServiceEndpoint를 클릭합니다.

    OrderSystem 및 해당 기본 정의에 WebService1이라는 .NET 웹 서비스 공급자 끝점이 표시됩니다.

  3. OrderSystem에서 WebService1을 클릭합니다.

  4. 속성 창의 이름 속성에서 끝점의 이름을 OrderService로 지정합니다.

    참고:

    멤버에 끝점을 추가하면 해당 멤버의 기본 정의에도 이 끝점이 표시됩니다. 또한 끝점은 다른 시스템 정의에서의 해당 정의에 대한 모든 사용에도 표시됩니다. 멤버에 끝점을 추가한 후에는 해당 멤버에서 직접 제거할 수 없습니다. 멤버에서 끝점을 제거하려면 해당 멤버의 정의에서 삭제해야 합니다. 이렇게 하면 해당 정의에서의 모든 사용에서도 끝점이 제거됩니다. 따라서 멤버의 정의에서 이러한 변경 사항이 발생하면 다른 시스템 정의에서의 해당 정의 사용에도 영향을 주게 됩니다.

이제 StoreFrontSystem 멤버 간에 통신 경로를 정의할 수 있습니다.

시스템 정의에서 두 시스템 연결

이번에는 배포 시 시스템 정의 멤버 간에 사용되는 통신 경로를 정의해 보겠습니다. 이 작업을 수행하려면 StoreFrontSystem에서 두 시스템을 연결해야 합니다. 이 연결은 두 시스템 간의 공급자 및 소비자 관계를 설명합니다.

시스템 정의 멤버를 연결하려면

  1. OrderSystem에서 OrderService 끝점을 클릭합니다.

  2. 다이어그램 메뉴에서 연결을 클릭합니다.

    연결 만들기 대화 상자가 나타납니다.

  3. 연결 대상의 멤버 목록에서 CatalogSystem을 선택하고 확인을 클릭합니다.

    그러면 OrderSystem과 CatalogSystem 사이에 연결이 표시됩니다. 웹 서비스 소비자 끝점은 CatalogSystem에도 표시되며 OrderService와 연결되어 있습니다. 이 소비자 끝점은 CatalogSystem의 기본 정의에도 표시됩니다.

이제 StoreFrontSystem 시스템 정의 동작을 해당 멤버 중 하나에 위임할 수 있습니다.

시스템 정의 동작을 멤버에 위임

여기서는 배포 시 시스템 정의 동작을 제공할 멤버를 선택합니다. 이 작업은 시스템 정의 동작을 해당 멤버 중 하나에 위임하여 수행할 수 있습니다. 특히, CatalogService 웹 서비스의 동작을 CatalogSystem에 위임하게 되는데 이렇게 하면 시스템 정의의 웹 서비스 끝점이 프록시 끝점으로 대체됩니다. 그러면 서비스 끝점이 해당 멤버에 다시 표시되며, 두 끝점은 서로 연결됩니다.

참고:

웹 서비스 끝점은 해당 멤버 정의의 일부가 되므로 CatalogSystem의 기본 정의에도 표시됩니다.

시스템 정의 동작을 멤버에 위임하려면

  1. StoreFrontSystem에서 CatalogService를 클릭합니다.

  2. 다이어그램 메뉴에서 위임을 클릭합니다.

    시스템 멤버에 동작 위임 대화 상자가 나타납니다.

  3. 위임 대상의 멤버 목록에서 CatalogSystem을 선택하고 확인을 클릭합니다.

    이제 CatalogSystem에 CatalogService가 표시됩니다. 프록시 끝점은 CatalogService의 이전 위치에 동일한 이름으로 표시됩니다. 이 프록시 끝점은 CatalogService에 연결되어 해당 동작을 시스템 외부로 노출합니다.

시스템 정의 멤버 계속 디자인

이제 StoreFrontSystem 멤버를 계속 디자인할 수 있습니다. 이 작업은 CatalogSystem 및 OrderSystem의 정의에 ASP.NET 웹 응용 프로그램을 추가하여 수행할 수 있습니다. 이들 응용 프로그램에서는 해당 시스템 정의 동작을 제공합니다. 그러면 사용자는 이러한 시스템 정의 동작을 위의 응용 프로그램에 위임하게 됩니다.

시스템 정의 멤버를 계속 디자인하려면

  1. 시스템 다이어그램에서 CatalogSystem을 클릭합니다.

  2. 다이어그램 메뉴에서 시스템 디자이너에서 열기를 클릭합니다.

    CatalogSystem의 정의가 포함된 시스템 다이어그램이 열립니다.

  3. 다이어그램 메뉴에서 추가와 응용 프로그램을 차례로 가리킨 후 ASP.NETWebService를 클릭합니다.

    CatalogSystem에 WebApplication1이라는 새 ASP.NET 웹 응용 프로그램이 표시됩니다. 또한 Visual Studio에서는 솔루션의 응용 프로그램 다이어그램에 이 응용 프로그램의 정의를 추가합니다. 

  4. WebService1 끝점을 삭제합니다.

  5. 응용 프로그램의 이름을 CatalogManager로 지정합니다.

  6. CatalogSystem에서 CatalogService를 클릭한 후 다이어그램 메뉴에서 위임을 클릭합니다.

    시스템 멤버에 동작 위임 대화 상자가 나타납니다.

  7. 위임 대상에서 CatalogManager를 선택하고 확인을 클릭합니다.

    이제 CatalogManager에 CatalogService가 표시됩니다. 나중에 CatalogManager의 정의를 구현하여 코드에서 CatalogService의 동작을 계속 정의할 수 있습니다.

  8. CatalogSystem에서 소비자 끝점을 클릭합니다.

  9. 소비자 끝점을 CatalogManager에 위임합니다.

    이제 CatalogManager가 CatalogSystem 외부와 통신할 수 있습니다.

  10. StoreFrontSystem.sd 문서 탭을 클릭하여 StoreFrontSystem의 시스템 다이어그램을 봅니다.

  11. OrderSystem에 대해 1-3단계를 반복하고 응용 프로그램의 이름을 OrderManager로 지정합니다.

  12. OrderService 끝점을 OrderManager에 위임합니다.

  13. StoreFrontSystem.sd 문서 탭을 클릭하여 StoreFrontSystem의 시스템 다이어그램을 봅니다.

이제 CatalogSystem의 CatalogManager 응용 프로그램이 각 시스템의 프록시 끝점을 통해 OrderSystem의 OrderManager 응용 프로그램과 통신할 수 있습니다. 또한 CatalogManager는 해당 시스템의 프록시 끝점을 통해 StoreFrontSystem의 동작을 제공합니다.

기본 응용 프로그램 정의 구현

이번에는 CatalogSystem 및 OrderSystem의 동작을 계속 정의합니다. 이 작업은 먼저 CatalogSystem 및 OrderSystem의 기본 정의를 연결한 후 해당 정의를 구현하여 수행할 수 있습니다. 응용 프로그램 정의를 구현할 때 Visual Studio에서는 코드에서 해당 동작을 계속 정의할 수 있도록 솔루션에 프로젝트를 생성합니다.

참고:

응용 프로그램 정의를 구현하려면 먼저 해당 정의를 연결해야 합니다. 그러면 Visual Studio에서 필요한 모든 웹 서비스 클라이언트 프록시 클래스를 올바르게 생성할 수 있습니다.

응용 프로그램 정의를 연결 및 구현하려면

  1. StoreFrontSystem.ad 문서 탭을 클릭하여 응용 프로그램 다이어그램을 봅니다.

    CatalogManager 및 OrderManager의 응용 프로그램 정의가 포함된 응용 프로그램 다이어그램이 응용 프로그램 디자이너에 표시됩니다.

  2. CatalogManager의 소비자 끝점을 OrderManager의 OrderService 끝점에 연결합니다.

    참고:

    사용자가 시스템 정의에서 응용 프로그램 정의의 사용을 연결할 때는 Visual Studio에서 해당 응용 프로그램 정의를 연결하지 않습니다. 응용 프로그램 다이어그램에 있는 연결은 개발 환경의 통신 경로를 나타내며, 시스템 다이어그램에 있는 연결은 배포 환경의 통신 경로를 나타냅니다.

  3. 속성 창에서 CatalogManager 및 OrderManager의 템플릿 속성을 ASP.NET 웹 응용 프로그램으로 설정합니다.

  4. 다이어그램 메뉴에서 구현을 가리키고 모든 응용 프로그램 구현을 클릭합니다.

    그러면 Visual Studio에서는 사용자가 코드에서 CatalogManager 및 OrderManager를 계속 정의할 수 있도록 솔루션에 해당 프로젝트를 생성합니다.

참고 항목

참조

Architecture Edition의 새로운 기능