Silverlight를 설치하려면 여기를 클릭합니다.*
Korea 대한민국변경|Microsoft 전체 사이트
MSDN
|개발자 센터
MSDN Home   MSDN Home
MSDN 홈 > MSDN Magazine > 2001년 기사 > Exchange 2000 WSS: 웹 저장 시스템이 Exchange 데이터 편리성 향상

Exchange 2000 WSS: 웹 저장 시스템이 Exchange 데이터 편리성을 향상시킵니다.

Sean McCormick
이 글은 여러분이 Visual Basic과 ASP에 대한 지식을 이미 갖고 있다는 전제 하에 쓰여졌습니다.
요약 : Exchange 2000의 웹 저장 시스템(WWS)은 웹에 접속할 수 있는 데이터 베이스로, 전자 우편, 연락, 일정, 토론, 그리고 멀티미디어 파일을 포함한 그 어떠한 종류의 데이터도 저장 시킬 수 있으며, HTML 양식으로 어떤 브라우저에서라도 데이터를 렌더 할 수 있습니다. WSS는 인터넷 표준에 기초하고 있으며, 따라서 URL, Exchange OLE DB 제공자, 드라이브 매핑, XML, 그리고 Web Document and Versioning(WebDAV)을 통해서 데이터를 액세스 할 수 있습니다. 이 글에서는 WSS 스키마와 사용자 정의 데이터를 위해 초기 스키마를 연장하는 법에 대하여 논의할 것입니다. 사용자 정의 스키마를 이용한 응용 프로그램 샘플과 WSS 데이터를 표시하기 위한 사용자 정의 양식을 다운로드할 수 있습니다.
Microsoft ® Exchange 2000에서 소개되었던 웹 저장 시스템(WSS)은 웹에 접속할 수 있는 데이터 베이스로 일반적인 연관 데이터 베이스시스템에서 요구되는 엄격한 구조적인 요구 사항들을 필요로 하지 않고 그 어떤 종류의 데이터도 저장할 수 있습니다: 전자 우편, 연락, 일정, 토론, 멀티미디어 파일, 등. WSS는 그 어떠한 데이터도 박스에서 꺼내자 마자 바로 저장 시킬 수 있습니다. 여러분의 응용 프로그램이 원활하게 결합하고, 원활하게 구성된 데이터 베이스를 필요로 한다면, WSS가 적격입니다.
Exchange 2000은 현재 WSS를 포함하고 있는 유일한 제품이지만, WSS를 포함하려는 계획을 갖고 개발 중에 있는 또 다른 상품이 있습니다. "Tahoe"라고 코드명이 붙여진, SharePoint Portal Server 라는 이름의 Microsoft의 지식 관리 상품이 WSS를 바탕으로 만들어지게 될 것입니다.
WSS 및 그의 속성들과 클래스에 대한 스키마 를 설명한 후, 데이터 아이템과 그 속성들을 액세스하는 법을 프로그래머의 관점에서 설명하도록 하겠습니다. 데이터와 속성들을 보는 방법과, 거기에 사용자 정의 데이터를 더하고, 여러분만의 내용 클래스와 스키마를 만드는 법과, 데이터를 저장하기 위해 여러분의 사용자 정의 내용 클래스를 이용하는 법, 그리고 여러분의 사용자 정의화된 클래스를 보기 위한 여러분만의 양식을 만드는 법에 대하여 설명할 것입니다.


맨 위로



WSS 개요
WSS 와 그것의 원활한 구조를 이해하기 위해서는, 웹 개발에 대한 여러분의 기존 사고 방법을 바꾸어야 합니다. 기존에는, 이용자/서버 와 웹 응용 프로그램 개발은 사용자 인터페이스가 딸린 데이터베이스 back-end 를 수반하였습니다. 일반적인 웹 응용 프로그램은 데이터를 회수하고 볼 수 있도록 하는 데에 사용자 인터페이스를 사용하였습니다. 이러한 개발 방법은 인터페이스가 중심이 되는 방법입니다.
반대로, WSS는 데이터를 개개 데이터 항목으로 저장시킵니다. 이 항목들을 불러올 때에는 WSS가 그것들을 보기 위해 HTML을 렌더합니다. 기존의 인터페이스 중심의 시스템 대신에, WSS는 데이터 중심입니다. 여러분이 보고 싶은 데이터를 단순히 호출하기만 하면, WSS가 그것을 렌더 하는 것에 대한 모든 것은 알아서 합니다.
WSS는 대부분의 서비스와 저장을 위해서 인터넷 표준들에 기반하고 있습니다. HTTP, SMTP, XML, MIME, 그리고 Web Document and Versioning(WebDAV)은 이 시스템이 데이터를 전송하고 저장하는 데에 사용하는 몇몇 기술들입니다. WSS의 중심부에는 데이터 저장소와 양식 렌더 엔진이 있습니다. 데이터 저장소는 파일 시스템 폴더 리스트와 매우 흡사하게 생겼습니다. 그림 1은 이후에 설명할 샘플 응용 프로그램의 데이터 저장소를 나타냅니다. 꼭대기에는 루트 폴더가 있고, 그 밑으로는 트리 체계 형태로 이루어진 데이터 항목들과 하위 폴더들이 있습니다.

Figure 1 Data Hierarchy
[그림 1] 데이터 계층

양식 렌더 엔진은 데이터 아이템들이 브라우저에 어떻게 렌더 되는지를 다룹니다. 데이터 아이템이 렌더 되기 위해서 렌더 엔진이 브라우저 용량들을 감지합니다. 그리고는, 그 아이템을 어떤 양식으로 렌더할 것인지를 결정하고, 적정 엔코딩(XML, XSL, HTML 4.0, HTML 3.2 등)을 이용하여 브라우저에 렌더된 데이터 항목을 전송 시킵니다.


맨 위로



데이터 액세스하기
WSS는 데이터 중심이기 때문에, 데이터 저장소 내의 모든 것들은 URL을 통해 액세스 할 수 있습니다. 여러분의 브라우저 주소 창에서 모든 메일 저장함, 폴더, 전자 우편 메시지, 그리고 달력 일정이 액세스 가능합니다. 예를 들어, 이 URL은 내 개인 아웃박스와 그 내용물을 렌더합니다.
http://HOFFA/Exchange/Corky/Outbox/
다음의 URL은 내 달력에서 일정을 열어주고, 그 내용물들을 브라우저상에서 렌더합니다.
http://hoffa/Exchange/Corky/Calendar/
 {9CEE8C1C-1A5D-4D37-AD38-B3F6BCCC2F18}.EML
URL의 .EML 확장자에 유의하길 바랍니다. (여러분이 다른 확장자를 지정하지 않는 한) WSS는 모든 데이터 아이템들을 .EML 확장자로 저장시킵니다.
Exchange의 기존 버전들에서는 정보 저장소에 있는 데이터를 액세스 하는 데에는 두 가지 방법 밖에 없었습니다: Messaging API (MAPI), Collaborative Data Objects (CDO)라고 불리는 COM 인터페이스. Microsoft는 WSS에서 CDO의 기존 버전 및 MAPI와 여전히 역방향으로 호환할 수 있도록 함과 동시에, 데이터를 액세스할 수 있는 수많은 추가 도구를 더했습니다. 이제 여러분은 Exchange OLE DB 제공자를 통해 데이터 저장소에서 모든 데이터 아이템들을 액세스 할 수 있습니다. 이것은 여러분이 ADO에 대한 여러분의 지식을 직접 이용할 수 있게 되었다는 것을 의미합니다.
데이터 저장소는 인스톨 가능한 파일 시스템 드라이버(IFS)와 같이 딸려서 나옵니다. 이것은 여러분이 드라이브 매핑을 통해 액세스 할 수 있다는 것을 의미합니다. Exchange 2000을 설치한 후에, 여러분은 여러분의 서버에 M: 드라이브가 생겼다는 것을 발견할 수 있을 것입니다( M: 이 이미 사용되었던 적이 있지 않다는 가정 하에 말입니다. 만일, 이미 M:가 있었다면, Exchange는 다음 알파벳 문자를 선택합니다.) 이것이 WSS에서 데이터를 액세스하기 위한, Exchange IFS를 통한 초기 드라이브 매핑입이다.
WSS는 XML과 WebDAV를 통해 액세스 가능합니다. 이 인터페이스는 HTTP를 다룰 수 있도록 되어 있으며, 여러분이 데이터 저장소에서 데이터를 갖고 올 수 있도록 할 뿐만 아니라, HTTP로 데이터 저장소에서 데이터를 만들고, 수정하고, 업데이트하고, 삭제할 수 있도록 해줍니다. 이 인터페이스는 여러분의 응용 프로그램이 방화벽을 거쳐서 작업을 해야 할 경우에 특히 요긴합니다. 간단히 여러분의 WSS 서버로 포트 80을 열면, 여러분이 필요로 하는 모든 데이터에 대한 액세스가 가능합니다.


맨 위로



웹 저장 시스템 스키마
WSS는 원활하게 구조된 데이터 베이스입니다. 그러나, 어떤 데이터 베이스도 일정한 구조 없이는 작동이 불가능할 것입니다. WSS 스키마를 시작해보십시오. Active Directory를 정의하는 스키마와 매우 흡사하게, WSS는 데이터 아이템에 붙여질 수 있는 일련의 글로벌 내용 클래스 종류들과 속성들을 규정합니다. 내용 클래스는 데이터 항목 내에 저장된 데이터의 종류를 정의하는 데에 도움을 주며, 따라서, 데이터 항목에 지정될 속성들을 규정하게 됩니다. 아이템의 내용 클래스는 그 데이터 아이템을 웹에 사용 가능하도록 렌더하는 것에 어떠한 양식이 사용되어야 할 지에 대해 도움을 주기도 합니다.
Active Directory로, 여러분은 여러분의 고유 내용 클래스와 속성들을 갖고서 초기 스키마를 확장 시킬 수 있습니다. WSS에 딸려서 나오는 초기 스키마는 충분하게 확장 가능하며, 대부분의 경우에는 여러분의 응용 프로그램이 필요로 하는 모든 데이터 속성들을 수용할 수 있습니다. 여러분이 스키마 확장자를 만들어야 할 필요가 없다면, 여러분은 기존 내용 클래스와 속성들을 사용할 수 있으며, 따라서 여러분은 휠을 다시 만들어야 할 필요가 없습니다. 이 기술은 또한, 큰 규모의 개발 팀들이 회사의 주요 데이터를 처리하게 위해 사용자 정의 개요 확장자들을 재 사용하는 것을 가능케 하며, 서로 다른 지역에서의 작업 중복을 방지합니다.

Figure 2 The Web Storage System Explorer
[그림 2] 웹 저장 시스템 Explorer

몇 가지 예를 들어보도록 합시다. 내 우편 저장소에서 메시지들을 볼 때에 각 전자 우편의 스키마 컨텐츠 분류를 보고, 그것들이 컨텐츠 클래스 urn:content-classes:message라는 것을 확인합니다. 여러분은 WSS SDK를 다운로드 하고 WSS Explorer를 사용함으로써 이것을 직접 볼 수 있습니다 (그림 2 참조). 이 도구는 여러분에게 열어 볼 권한이 주어진 WSS의 어떠한 폴더도 볼 수 있도록 하며, 모든 데이터 아이템의 내용 클래스와 속성들을 보여줍니다.

Figure 3 Viewing Appointments
[그림 3] 예약 보기

내 달력을 보면, 각각의 예약이 다음과 같은 내용 클래스에 속해있음을 알 수 있을 것입니다. urn:content-classes:appointment (그림 3 참조). 여러분은 아마도 메시지나 일정을 간단히 정하는 데에 왜 장황한 이름이 필요한가 궁금해 하실 것입니다. 속성 이름 전의 부분을 네임스페이스라고 합니다. 네임스페이스는 유사한 이름이나 혹은 속성을 공유하는 다른 속성들에 대한 고유한 식별자를 제공합니다. 네임스페이스는 많은 데이터들을 가진 많은 시스템 상에서 고유 정의된 내용 클래스들과 속성들을 가질 수 있게 합니다. 그러한 방법으로, 한 시스템 상에서 정의된 메시지는 그것이 동일한 표준을 따르는 다른 시스템으로 이동된다 하더라도 작동될 것입니다. 여러분만의 내용 클래스와 네임스페이스를 정의할 때, 여러분은 이러한 표준들을 따르는 것을 습관화해야 합니다. 이것에 대해서는 WSS 스키마 연장을 논의할 때 좀 더 다루도록 하겠습니다.


맨 위로



속성들과 클래스 상속
그림 4에서 볼 수 있는 바와 같이, WSS는 여러분이 각각의 데이터 아이템에 대한 일련의 속성들을 정의할 수 있도록 해줍니다. 이러한 속성들은 아이템의 내용 클래스가 정의되었을 때 데이터 아이템과 연결됩니다. 예를 들자면, 메시지 데이터 항목은 일정 데이터 아이템과는 다른 속성을 가질 것입니다. 내용 클래스의 모든 데이터 아이템이 모든 속성을 사용할 것은 아니기 때문에, 모든 속성이 설정되지는 않음을 발견하게 될 것입니다.

Figure 4 Set Properties
[그림 4] 일련의 속성들

여러분은 또한 속성들이, 내용 클래스들을 통제하는 동일한 namespace를 사용하여 명명됨을 알아 차릴 것입니다. 예를 들어서, 전자 우편 메시지(내용 클래스 항아리:내용-분류:메세지)에 대한 거의 모든 속성들이 항아리:도해:http메일 네임스페이스를 이용하여 저장됨을 주목할 것입니다. 이것은 데이터를 표준화하여 그것이 다양한 시스템에 걸쳐 기능 할 수 있도록 해줍니다.
일찍이 언급한 바와 같이, 여러분은 기존의 내용 클래스로부터 여러분의 사용자 정의 내용 클래스를 물려받을 수 있습니다. 이것을 이해하기 위해서, 일정 아이템을 메세지 아이템과 비교해 보십시오. 일정 아이템은 메세지가 가지고 있는 동일한 속성들 중의 다수를(제목, 텍스트 설명, 수신 날짜) 가지지만, 일정 시작 시간, 종료 시간, 위치 등을 위한 몇몇 추가사항 들도 있습니다. 일정 아이템은 일정 대상 내에서 속성들을 재사용하기 위해서 메시지 클래스로부터 물려받습니다.
이러한 모든 내용 클래스들과 속성들은 글로벌 스키마 폴더 내의 각각의 데이터 저장소에 대해 정의합니다. 이 폴더는 모든 데이터 저장의 상단에 위치한 /non_ipm_subtree/schema/ subfolder에 위치 합니다. Exchange 2000은 데이터 저장소가 만들어졌을 때 자동적으로 이 폴더를 만듭니다. Schema 폴더를 찾는 중에, 여러분은 이러한 내용 클래스와 속성들에 대한 정의 자체가 데이터 항목임을 보게 될 것입니다. 내용 클래스 정의와 속성 정의의 데이터 항목들은 각각 urn:content-classes:contentclassdef 와 urn:content-classes:propertydef를 갖습니다. 데이터 저장소는 어떤 내용 클래스와 속성들이 이 데이터 저장에 존재하는 가를 명시하기 위해 이러한 형태의 항목들을 스키마 폴더에서 찾습니다. 이 폴더는 여러분 자신의 데이터 필요에 의한 스키마 확장을 논의할 때 다시 거론될 것입니다.


맨 위로



프로그램에 입각하여 WSS 데이터 액세스하기
데이터 아이템과 그들의 속성들을 프로그램에 입각하여 어떻게 액세스 하는지 알아 보겠습니다. 그림 5의 the Visual Basic(r)-based code은 ADO를 이용해서 폴더(내 인박스)를 열고, 그리고 나서 ADODB.Connection와 ADODB.Recordset, ADODB.Record 개체들을 이용해서 그것의 내용들 사이를 왔다갔다 합니다. Exchange OLE DB 제공자를 조회하기 위한 구문들에 대한 보다 많은 정보를 원하시면 WSS SDK를 참고하십시오.
여러분은 이미 항목과 그것들의 속성을 어떻게 살펴보는지 알고 있으므로, 사용자 정의 데이터를 그들에게 부여하고자 할 것입니다. 데이터 저장소가 각각 하나의 데이터 아이템의 필요에 맞게 글로벌 스키마를 확장하는 것이 항상 적절한 것은 아닙니다. 예를 들어서, 만약 여러분이 사용자 정의 속성을 가지고 tag하고자 하는 전자 우편이 있다면, 여러분은 스키마를 확장 시키려고 이리저리 애쓸 필요가 없습니다. 대신에, 여러분은 간단하게 데이터 아이템에 대한 one-off 사용자 정의 속성을 만들 수 있습니다. 한 번의 추가로, 이 속성은 어디를 가든지 데이터 아이템을 따라다닐 것이지만, 이것은 동일한 내용 클래스의 다른 아이템들의 정의에 영향을 미치지는 않습니다. 다음의 행들은 ADO를 사용하여 어떻게 one-off 사용자 정의 속성을 추가하는지 보여주기 위하여 데이터 아이템에 달력 속성의 "시작 시간"을 추가합니다.
SItemURL="file://./backofficestorage/public folders/articles/001.eml"
recADO.Open sItemURL, connADO
recADO.Fields.Append "urn:schemas:calendar:dtstart", adDate, , , Now()
recADO.Close
스키마를 확장 시킬 것인지 아니면 단순히 one-off 사용자 정의 속성들을 사용할 것인지를 결정할 때, 고려해야 할 것들이 여러 가지 있습니다. One-off 필드는 신속하고 실행하기 용이하지만, 여러 페이지에 one-off 필드 정의를 사용할 경우에는 불일치와 오류를 야기할 수 있습니다. 반면에, 사용자 정의 스키마는 한 번 생성되면 중앙 위치에 저장됩니다. 만약 여러분이 많은 사용자 정의 속성들을 가지고 작업 중이면, 사용자 정의 스키마를 만들어 내는 것은 지속적으로 추가되는 사용자 정의 분야의 경우 여러분의 시간을 절약해줄 것입니다. 사용자 정의 내용 클래스들은 또한 여러분이 데이터 아이템들에 대한 폴더들을 공유할 수 있게 함으로써 여러분의 사용자 정의 클래스 종류의 항목들을 걸러내고 찾는 데 용이합니다.


맨 위로


사용자 정의 스키마 만들기
이제 특정 데이터 필요에 의한 사용자 정의 스키마를 만들기 위해서 어떻게 WSS 스키마를 확장 시키는지 알아 봅시다. 이것에 대한 예로서, 데이터 저장 내에 기사를 저장하기 위한 나만의 내용 클래스와 속성을 만들었습니다. 제가 만든 사용자 정의 컨텐츠 클래스는 articleitem이라 하였습니다. articleitem 사용자 정의 클래스는 메세지 내용 클래스에서 속성을 물려 받습니다. WSS 스키마를 확장할 때, 여러분의 확장명을 글로벌 스키마 폴더에 직접 넣지 않도록 하십시오; 대신 여러분의 스키마 폴더를 만드십시오. 그렇게 함으로써, 여러분은 중요 시스템 폴더 내의 아이템들을 추가하고 삭제하는 것과 연관된 문제들은 피하면서 글로벌 스키마로부터 스키마 정의를 물려받을 수 있습니다. 여러분이 폴더를 만들 때, 그것의 스키마를 어디에 물려 받을지 표시할 수 있도록 속성을 지정하십시오(예를 들면, 글로벌 스키마 폴더).
스키마 폴더를 만들고 나서 그것의 물려 받기를 글로벌 스키마 폴더로 설치하면, 여러분은 사용자 정의 스키마 확장자 만들기를 시작할 수 있습니다. 사용자 정의 스키마 폴더 내의 사용자 내용 클래스와 속성들을 표시하기 위한 데이터 아이템들을 만듦으로써 그렇게 할 수 있습니다. 이러한 새로운 데이터 아이템들은 어떤 형태의 확장명들을 만들고 있는가에 따라서 내용 클래스 urn:content-classes:contentclassdef 혹은 urn:content-classes:propertydef가 될 것입니다.
앞서 여러분은 성공적으로 스키마 폴더와 스키마 항목들을 만들었으므로, 여러분의 스키마 확장명들의 사용을 시작할 수 있습니다. 기본값으로, 새로운 폴더의 개체가 생성되었을 때, 그 속성은 기본값 스키마 폴더에 따라 설정되며, 이것은 글로벌 스키마 폴더입니다. 새로운 데이터 폴더가 데이터 저장 내에 생성되었을 때, 여러분은 그것들의 스키마 정의 위치를 사용자 스키마 폴더에 설정해야만 합니다. 사용자 스키마 폴더로부터 그것의 스키마 정의를 얻기 위해서 이 속성을 정의, 사용자 정의하고 데이터 폴더를 표시함으로써, 비로소 이 데이터 폴더는 사용자 정의를 얻고 글로벌 정의를 내려 받습니다. 사용자 폴더를 분리하여 만듦으로써, 여러분은 여러분의 정의를 분리할 수는 있지만, 글로벌 폴더로부터 내려 받는 이점을 얻을 수 있습니다.
그림 6에서는 글로벌 스키마 정의, articleitem이라는 사용자 내용 클래스, 사용자 정의 속성 정의, 데이터 정의가 새롭게 만들어진 사용자 스키마 폴더에 설정된 새로운 데이터 폴더를 물려 받은 사용자 스키마 폴더를 만들었습니다.
여러분이 보신 바와 같이, 사용자 내용 스키마에서 저는 사용자 정의 네임스페이스를 사용하였습니다. 이 글의 의도에 맞게, http://ecollege.com/의 네임스페이스 접두사를 사용하였습니다. 데이터를 시스템들에 걸쳐 공유할 때, 네임스페이스를 표준화하여 정보를 일정하고 표준화되게 하는 것이 가장 좋습니다. 그러나, 사용자 내용 클래스와 속성 정의를 작성할 때는, 반드시 여러분의 네임스페이스 접두사로서 여러분의 인터넷 도메인 이름을 사용해야만 합니다. 만약 두 개의 시스템이 동일한 네임스페이스를 사용해야만 하게 된다면, 누군가의 데이터는 짓밟혀질 것입니다. 여러분이 여러분의 인터넷 도메인 이름을 통제하고 있기 때문에, 그것이 고유한 것임은 확실합니다.
WSS Explorer를 사용중일 때에는, 여러분은 일반 메일 시스템에는 없는, Exchange 2000만의 특정한 어떤 속성들을 볼 것입니다. 이러한 속성들은 시스템 상에서 그들을 고유하게 유지하기 위해서 보통 네임스페이스 접두사 http://schemas.microsoft.com/를 가집니다. 마이크로소프트는 이 원칙을 따르며, 도메인 이름은 그것의 네임스페이스 접두사 입니다. 네임스페이스는 항상 대소문자 구분임을 기억하십시오.


맨 위로


사용자 정의 클래스들에 데이터 저장하기
여러분이 사용자 정의 속성들로 정의된 사용자 정의 컨텐츠 클래스들을 가지고 있다면, 데이터를 저장하는 데에 이들을 사용을 시작할 수 있습니다. 그림7 는 articleitem 라는 사용자 데이터 아이템을 어떻게 만드는 지와 어떻게 그것들의 물려 받은 속성들과 사용자 속성들을 채우는지를 보여줍니다.
사용자 정의 아이템을 만들기 위해서 CDO 객체 메시지를 이용하였습니다. 진짜로 메시지 객체를 만들고 있지 않는 동안에도, 가능할 때마다 CDO 객체를 사용하는 것이 좋습니다. 그들은 ADO 와 긴 네임스페이스를 통해 모든 속성들을 액세스하는 것보다 쉬운 방법들과 빠른 속성 액세스를 제공합니다. 예를 들어, 여러분은 ADO에서 "urn:schemas:httpmail:from" 속성을 설정하기 위해서 CDO 메시지 객체 "from" 속성을 이용할 수 있습니다. CDO 객체를 이용함으로써 여러분은, 앞으로 여러분이 필드 모음에서의 여러분의 모든 사용자 정의 속성과 기본 제공되지 않은 속성들을 액세스할 수 있도록 해 줄 CDO 객체의 모든 기본 제공 능력(객체를 저장하고 열 수 있는 데이터 소스 속성과 같은) 을 사용할 수 있습니다.
여러분의 사용자 정의 데이터 항목을 만들고 조정하기 위해서 CDO 객체를 사용할 때, 여러분의 사용자 정의 데이터 아이템을 내려 받은 객체를 사용하는 것이 가장 좋습니다. 이러한 예에서, 저는 articleitem을 메시지 객체에서 내려 받았기 때문에 articleitem을 만들기 위해서 CDO 메시지 개체를 사용하였습니다. 만약 여러분이, 여러분의 사용자가 언제 휴가를 갈 것인가에 대한 데이터를 저장하는 vacationitem과 같은 사용자 정의 데이터 아이템을 만들었다면, 여러분의 사용자 정의 데이터 아이템은 일정 개체로부터 내려 받게 될 것입니다. 이 경우에, 여러분은 vacation아이템 사용자 정의 데이터 아이템을 만들기 위해 일정 객체인 CDO.Appointment를 사용하실 것입니다. 이제까지 저는 사용자 정의 내용 클래스들과 속성들을 설명하고 스키마 확장명을 활용하여 데이터 아이템들을 만드는 것에 대해 이야기 하였습니다. 이제는 어떻게 새로운 데이터를 보는가를 살펴봅시다.


맨 위로


웹 저장 양식으로 데이터 보기
WSS는 데이터를 보기 위해서 양식의 개념을 사용합니다. 양식은 내용 클래스 타입에 등록되어 있습니다. 내용 클래스 양식의 데이터 아이템이 요구될 때, WSS은 그 데이터 아이템을 HTML로 렌더시키기 위해서 그 양식을 사용합니다. Exchange 2000은 각각의 데이터 저장소를 위해 정의된 기본값 내용 클래스를 렌더하기 위한 일련의 기본값 양식을 제공합니다. 이 일련의 양식 기본값은 보통 Outlook(r) Web Access (OWA)로 알려져 있습니다. 만약 여러분이 웹에서 Exchange 5.5를 사용해 보셨다면, Outlook Web Access가 여러분의 메일 상자를 액세스하고 HTTP에 걸친 그것의 내용을 보기 위해서 사용되었던 것을 알 것입니다. 이 구식 버전은 전형적인 인터페이스 중심의 포맷을 사용하여 설치되었습니다.
Exchange 2000에서 OWA의 업그레이드된 버전은 데이터-중심 입니다. 그것은 브라우저에 따라, Exchange 2000이 WSS 내의 모든 데이터 항목을 HTML or XML/XSL 포맷으로 렌더할 수 있도록 하였습니다. 예를 들어, 제가 공개 폴더 내에 사용자 정의 articleitem을 만들기 위해서 코드를 운영할 때, 이 아이템을 OWA을 통해서 바로 그 자리에서 볼 수 있습니다. 간단히 여러분의 브라우저에 직접 그 아이템의 URL을 치거나 혹은 공개 폴더에 대한 OWA interface를 이용해서 찾아보기를 하십시오. 보기 가능한 속성은 전혀 볼 수 없는, 사용자 정의 데이터 아이템들이 전자 우편으로 렌더 되었음을 볼 것입니다. 양식 레지스트리는 사용자 정의 내용 클래스를 표시하기 위한 등록을 갖고 있지 않기 때문에 메시지 객체에 대한 기본값 양식을 이용하여 그것을 간단하게 표시합니다.
OWA는 단순히 데이터 저장소 내에 저장된 데이터에 대한 기본값 인터페이스 이상입니다. Outlook 웹 액세스 인터페이스는 전통적인 OWA 쉘 밖에서 재사용될 수 있습니다. 여러분은 WSS 를 어떠한 웹 페이지에든지 놓기 위해서 OWA를 다시 사용할 수 있습니다. 이렇게 하기 위해서 <IFRAME> 태그를 사용합니다. 예를 들어, 여러분은 여러분의 인트라넷 상에 각 사용자의 인박스를 포함하는 환경 페이지를 만들 수 있습니다. 또한 공용 폴더들 안에 만들어진 토론 스레드를 재사용할 수 있고 그것들을 인터넷에 나타내기 위해서 OWA를 사용할 수 있습니다.
데이터 저장소 안의 모든 것들은 URL을 갖기 때문에, 여러분은 단순히 렌더하고자 하는 데이터 아이템이나 폴더의 URL에 대한 IFRAME source를 지정하면 됩니다. 그리고 이것은 WSS 양식 렌더 엔진을 기반으로 하기 때문에, 그 데이터의 렌더는 자동적으로 브라우저의 능력에 따라 확대 또는 축소됩니다. WSS 의 렌더 능력을 보기 위해서 다음의 코드를 HTML page에 입력하고 그것을 다른 브라우저에서 액세스 시켜 보십시오.
<IFRAME name='MAIN', width = 90%, height = 70%,
    SRC='http://Hoffa/Exchange/Corky/Inbox'>
여러분은 여러분의 웹 응용 프로그램에서 OWA를 재사용 시에 OWA가 폴더 데이터를 렌더하는 방법을 (discussion threads 혹은 press releases) 사용자 정의할 수 있습니다. 예를 들어, 그것들의 thread topic에 의해 그룹별로 나뉘어진 메시지들을 가진 토론에 나열된 기본값 폴더로부터 보기를 변경할 수 있습니다. 이는 쿼리 문자열을 통해서 특별한 매개 변수를 OWA에 보냄으로써 실행할 수 있습니다. CMD 매개 변수를 명확하게 지정함으로써, 다음의 예에서 볼 수 있는 바와 같이 여러분이 폴더 데이터가 렌더되는 방식을 통제할 수 있습니다:
<!-- Create View of Threaded discussions grouped by thread topic -->
<IFRAME name='MAIN', width = 90%, height = 70%, SRC=
    'http://Hoffa/Public/Discussions/?CMD=By+Conversation+Topic'>


맨 위로


사용자 정의 양식 만들기
이제 사용자 정의 컨텐츠 클래스를 렌더하기 위해 사용될 수 있는 사용자 정의 양식을 어떻게 만드는지를 살펴봅시다. 사용자 정의된 양식은 사용자 데이터에 대한 기본값 OWA 메시지를 보는 대신 여러분이 사용자 정의된 속성을 렌더시킬 수 있도록 해줍니다. 이 과정에 있어서 첫번째 단계는 양식 레지스트리에 양식을 등록하는 것입니다. 사용자 내용 클래스와 사용자 속성을 정의한 것과 같은 방식으로 합니다- 사용자 정의 스키마 폴더 내에 데이터 아이템을 만듦으로써. 이 데이터 아이템은 이것이 양식 등록임을 WSS가 알 수 있도록 말해주는 urn:schemas-microsoft-com:office:forms#registration 의 내용 클래스를 가질 것입니다. 그 다음, 이 양식 등록이 어떤 내용 클래스를 위한 것인지 정의해야 합니다. 제가 든 예에 있어서, 이것은 articleitem 사용자 정의 내용 클래스입니다.
여기에서, 언제 이 양식을 사용할 것인지를 정의해야 합니다. WSS는 클라이언트 브라우저를 인식할 수 있기 때문에, 여러분은 다른 클라이언트 필요에 대한 양식 등록을 만들어야 합니다. 예를 들어, Microsoft Internet Explorer 5.5 사용자들은 Handheld PC용 Explorer에는 없는 기능들을 액세스할 수 있습니다. 여러분의 응용 프로그램을 액세스하는 장치들에 대해 여러분이 사용자 정의 인터페이스를 개발할 수 있기 때문에, 특정 브라우저에 대하여 특정한 양식을 등록할 수 있는 능력은 응용 프로그램을 개발할 때 뛰어난 장점들을 갖습니다. 이러한 등록 속성들을 이용해서 운영 체제, 브라우저 버전, 여러분의 데이터가 있는 상태(workflow 응용 프로그램들에 유용한), 언어, 그리고 많은 다른 변수들 (그림 8 참고)에 기반을 둔 양식을 지정할 수 있습니다.
보시는 바와 같이, 이 코드는 articleitem 데이터 항목에 액세스하는, 어느 클라이언트에 대해서도, 어떤 OS든, 어떤 언어든 /Articles/Articleitem.asp이 양식 레지스트리 아이템을 만듭니다. 양식 등록은 사용자 정의 컨텐츠 클래스와 같이 작용합니다. 여러분이 새로운 폴더를 만들 때, 여러분이 어디에서 그 폴더가 그것의 기본값 스키마를 찾을 수 있는지를 지정합니다. 여러분이 그 폴더의 스키마 정의를 사용자 정의 스키마 폴더에 지정하면, 그것은 자동적으로 글로벌 스키마 폴더와 그것의 기본값 양식 등록(OWA)을 내려 받습니다.
폴더가 만들어졌을 때 어디에서 스키마 정의를 얻을지 지정하지 않았거나 그것을 글로벌 스키마 폴더에 지정하였다면, 이 폴더 안의 데이터 아이템들은 여러분의 사용자 정의된 양식 등록이 아니라 OWA의 기본값 양식 등록을 사용할 것입니다.
Windows(r) CE 3.0을 운영하는 일본어 브라우저가 Articleitem 데이터 아이템을 필요로 할 때 사용될 /ArticleApplication/ArticleitemJP.asp을 등록하기 위해서 registry entry를 다음과 같이 바꾸십시오:
recADO.Fields("urn:schemas-microsoft-com:office:forms#executeurl")=_
   "/ArticleApplication/ArticleItemJP.asp"
recADO.Fields("urn:schemas-microsoft-com:office:forms#formurl")=_
   "/ArticleApplication/ArticleItemJP.asp"
recADO.Fields("urn:schemas-microsoft-com:office:forms#language")=_
   "jp"
recADO.Fields("urn:schemas-microsoft-com:office:forms#platform")=_
   "WinCE"
그 다음, 단순히 /ArticleApplication/Articleitem.asp 파일을 만들어서 articleitem을 렌더하기 위한 여러분의 사용자 정의 코드에 넣으십시오.
사용자 정의 데이터 항목이 요구될 때 무슨 일이 일어나는지를 살펴보겠습니다. 그러면 어떻게 양식이 특정 내용 클래스의 어떤 데이터 아이템을 처리하는지 알 수 있을 것입니다. 첫째, 브라우저가 데이터 항목을 요구합니다. 둘째, WSS가 데이터 아이템을 읽고 어떤 양식이, 내용 클래스와 요구하는 클라이언트 브라우저 능력에 기초하여 그것을 렌더할 것인지를 결정합니다. 그리고 나서 그 양식이 예시되고, 요구되는 데이터 아이템의 URL과 양식 URL이 쿼리 문자열에서의 매개 변수로서 함께 보내집니다. 데이터 아이템의 URL을 가지고, 양식이 이제 ADO를 거쳐 요구되는 데이터 항목으로 액세스 할 수 있으며 그것과 함께 저장된 사용자 정의 데이터와 속성들을 렌더할 수 있습니다. 여러분의 ADO 혹은 CDO 코드는 단순히, 쿼리 문자열에 보내진 URL에 의해 ADO를 통해서, 요구되어진 데이터 아이템을 검색합니다. 그림 9는 어떻게 사용자 정의 articleitem 속성을 표시하는지를 보여줍니다.
이제 여러분은 이 내용 클래스의 데이터 저장소 안에 사용자 정의 내용 클래스와 데이터 항목을 가졌으므로, 여러분의 브라우저에 직접 아이템을 치거나 OWA 인터페이스를 이용하여 공용 폴더에서 그것을 찾아보기를 하여, 사용자 정의 양식 등록을 이용하여 그것을 표시할 수 있습니다(그림 10 참고).

Figure 10 Rendering a Data Item
[그림 10] 데이터 항목 렌더하기

사용자 정의 양식에 대해서 항상 ASP 와 ADO/CDO를 사용해야만 하는 것은 아닙니다. Web Storage System SDK는 여러분이 HTML에 여러분의 사용자 정의 양식을 만들 수 있도록 해주는 특별한 ISAPI 필터를 가지고 있습니다. HTML은 ISAPI 필터에 의해 처리될 수 있고 여러분의 데이터 아이템 내에 저장된 아이템으로 대체할 수도 있는 사용자 정의된 태그들을 포함할 것입니다. 거기에는 또한 여러분이 좋은 시각 환경에 이러한 사용자 정의 HTML 태그들을 설치하도록 도와주는 일련의 Microsoft FrontPage(r) design-time control이 있어서 굳이 여러분이 수고할 필요가 없습니다. 여러분의 양식들을 등록하기 위한 도구가 있어서, ADO를 이용하여 프로그램에 입각하여 할 필요가 없습니다. WSS와 웹 저장 양식 렌더를 위한 FrontPage tools에 대한 보다 자세한 정보를 원하시면 Web Storage System SDK를 보십시오.


맨 위로


견본 응용 프로그램
저는 데이터 저장소에 있는 모든 데이터를 저장하는 웹 응용 프로그램을 만들었습니다. 이 응용 프로그램은 기사들을 저장하고 사용자가 MSDN Online상에서의 기능과 유사한 토론을 통해서, 그 기사들을 1에서 5까지의 단계로 평가할 수 있도록 했습니다. 응용 프로그램을 공용 폴더에 놓는 것은 권할만 하지 않기 때문에,이 응용 프로그램은 입증 의도로만 기본값 공용 폴더 데이터 저장소에 설치되었습니다. 응용 프로그램을 활성화시키기 위해서는, 서버 당 5개의 한계가 있음을 염두해 두어야 하지만, 여러분은 반드시 새로운 데이터 저장소를 만들어서 그것을 공용 폴더 트리 외부에 설치해야만 합니다. 이 데모 응용 프로그램을 공용 폴더 트리에 놓는 것은, 여러분이 Outlook로부터 어떻게 사용자 정의 스키마 폴더가 다시 만들어지는가를 볼 수 있게 하기 위해서 입니다. 다시 한번 말하지만, 이것은 설명용입니다.
응용 프로그램을 만들기 위해서, 저는 세 개의 사용자 정의 내용 클래스를 만들었습니다: articleitem, threaditem, 그리고 ratingitem. Articleitem은 각각의 글들에 대한 데이터를 포함합니다. Threaditem은 articleitems를 위해 만들어진 토론 스레드에 대한 데이터를 저장합니다. Ratingitem은 사용자가 각각의 글들에 부여한 지정된 등급을 저장합니다. 여러분은 아마 제가 이 응용 프로그램에서 OWA-토론 기능을 재사용하지 않았음에 주목하실 것입니다. 저는 각 글들에 대한 개별적인 공개 토론의 장을 마련하고자 하였습니다. OWA 토론 스레드를 재사용하여 이것을 성취하기 위해서는, 저는 각 글들에 대해 구분된 논의 폴더를 갖도록 했습니다. 엄청난 수의 글들로 너무나 많은 폴더들이 생겨날 것입니다. 한 개의 글이 연관된 토론 스레드를 저장하는 사용자 정의 내용 클래스를 만듦으로써, 저는 모든 스레드 항목을 하나의 폴더에 저장할 수 있게 되었습니다.
이 글을 다운로드함에 있어서, 여러분은 설치 프로그램과 일부 ASP 페이지들 (이 글 상단에 있는 링크 참고) 을 발견할 것입니다. 이 설치 프로그램은 고용 폴더 트리, 내용 클래스 정의, 양식 등록 등에 폴더들을 만듭니다. ASP 페이지들은 기사 데이터, 스레드 데이터, 그리고 등급 데이터를 렌더합니다.


맨 위로


XML과 WebDAV로 WSS 데이터 액세스 하기
저는 앞에서 CDO 와 ADO가 여러분이 WSS를 액세스하기 위해 사용할 수 있는 유일한 기술이 아니라는 사실을 언급했습니다. Microsoft Internet Information Services (IIS) 5.0과 WSS는 이제 WebDAV를 지원합니다. 이 기술은 웹 서버에서 데이터를 액세스 하고 HTTP에서의 그것의 컨텐츠를 안전하게 요구하고 조정할 방법들을 정의합니다. WebDAV는 모두 port 80을 통해서 읽기 전용 클라이언트/서버 프로토콜에서 튼튼한 읽기/쓰기용으로 HTTP를 렌더합니다.
IIS와 WSS는 이제 WebDAV 기술을 지원하기 때문에, 여러분은 서버에 있어서의 리소스를 만들고 질문하기 위하여 어떤 HTTP 클라이언트로부터의 요청도 구성할 수 있습니다. WebDAV에 대한 요청은 HTTP에 대한 새로운 명령 확장명을 사용하는 XML에서 생성됩니다. 그림 11은 요청을 전송하기 위해서 어떻게 XMLHTTP COM 구성요소를 사용하며 WebDAV syntax를 이용하는 우편함의 내용을 회수하는지를 보여줍니다.
그림 12에서의 코드는 WebDAV 와 XMLHTTP COM 개체를 사용하는 클라이언트로부터 직접적으로 응용 프로그램을 위한 articleitem을 만듭니다. 이 코드는 데이터 저장 안에 아이템을 설정하기 위해서 MSXML DOM의 XMLHTTPRequest 인터페이스를 사용하고 확장된 HTML 명령(CREATE)을 보냅니다. 제가 데이터 항목을 구축할 뿐만 아니라 또한 데이터 아이템에 대한 속성도 지정할 수 있도록, 데이터 아이템의 속성을 XML로 하여 CREATE 명령을 보낸다는 것을 알 수 있을 것입니다.
또한 이 글을 다운로드 하면, 기사 아이템들을 찾고, 기존의 데이터 아이템들을 찾아 내고, 그것들의 속성을 표시하기 위해서 XMLHTTP COM 객체를 이용하는, HTTP 와 WebDAV 전체에 걸친, 광범위한 샘플 Visual Basic 기반의 양식 응용 프로그램이 포함되어 있을 것입니다. 이 양식 클라이언트는 XMLHTTP COM 객체가 설치된 어떤 컴퓨터로부터 서버에 데이터를 액세스하기 위해 사용될 수 있습니다.


맨 위로


내용 색인 달기와 찾기
WSS는 또한 IIS가 여러분의 웹 사이트의 색인을 달 수 있는 것처럼 모든 데이터를 색인을 달 수 있는 능력이 있습니다. 상자에서 제품을 꺼내면, 여러분은 데이터 저장소의 내용 달기를 통해, M: 드라이브를 찾는 Windows 2000 디렉토리로부터 보다 신속한 찾기와 질문하기의 이점을 얻을 수 있습니다. Outlook 2002의 출시로, 전자 우편 클라이언트로부터의 사용자 요청도 또한 상당히 빨라질 것입니다. 여러분은 ADO로부터도 이 색인을 액세스 할 수 있으며, 그리하여 여러분의 데이터 저장소 상에서의 프로그램상의 찾기와 걸러내기를 처리할 수 있을 것입니다.
기본값으로서, WSS는 기본 내용 클래스에 존재하는 일반 필드에 색인을 달 것입니다. 제목, 보내는 사람, 받는 사람, TextBody는 메시지 객체에 대해서 자동적으로 색인을 다는 필드의 일부입니다. 이러한 객체들로부터 내려 받는 사용자 정의 내용 클래스에 대해서 이러한 필드들을 재사용함으로써(제가 articleitem 내용 클래스를 가지고 한 것과 같이), 여러분은 내용 색인 달기를 상자에서 꺼내자마자 사용할 수 있습니다. 여러분의 사용자 정의 필드들 또한 색인을 달기 위한 내용 색인 엔진도 설치할 수 있습니다.
데이터 저장소 공용 폴더의 자유 텍스트 쿼리를 이용하기 위해서 어떻게 ADO를 사용하는가 하는 예를 살펴보도록 합시다.
rsADO.Open "SELECT* FROM scope('shallow traversal of """  _
         & "file://./backofficestorage/MyDomain.Com" _
         & "/Public Folders/Articles/" _
         & """') WHERE (" & chr(34) & "DAV:contentclass" _ 
         & chr(34) & " = '" & sCustomSchema _
         & "content-classes:articleitem'" & " AND FREETEXT _
        (*, ' & chr(34) & "Sean McCormick" & _ 
        Chr(34) & "') " & ") ORDER BY " & _
        chr(34) & "urn:schemas:httpmail:fromname" & chr(34) ,connADO
보시는 바와 같이, ADO 코드는 내용 색인 엔진으로 만들어진 색인이 사용할 색인임을 명확히 말하기 위하여 FREETEXT 키워드를 사용합니다. 이 query는 Sean McCormick가 쓴 모든 articleitems를 찾아낼 것입니다. 저의 견본 응용 프로그램에 있어서는, 저는 이용 가능한 글들의 목록을 걸러내기 위해서 내용 색인 속성들을 활용하였습니다. 저의 articleitem 내용 클래스는 작자, 제목, 기사 본문, 각각에 대한 메시지 객체로부터의 보내는 이, 제목, textbody의 메시지 필드를 재사용합니다. 이러한 필드의 전부는 여러분이 기사 목록에 프로그램에 입각한 필터를 쉽게 추가할 수 있도록 데이터 저장소에 대한 내용 색인으로 방향을 정할 때 자동적으로 표시됩니다.


맨 위로


결론
WSS는 여러분이 응용 프로그램을 위한 데이터의 어떤 형태를 원활히 저장할 수 있도록 해주는 인터넷 표준에 기반을 둔 새로운 기술입니다. 사용자 정의된 내용 클래스와 속성들을 사용함으로써, 여러분의 사용자 정의 데이터의 요구도 충족시키는 데이터 저장을 확장할 수 있습니다. 내용 색인과 WebDAV는 또한 적은 양의 작업으로 여러분의 데이터 저장의 기능을 확장할 수 있도록 지원합니다. 어느 데이터나, 어느 장치에서든, WSS가 마이크로소프트의 .NET Framework에 있어서 중요한 역할을 할 것임은 쉽게 할 수 있습니다. Digital Dashboard 2.1, SharePoint Portal Server, Office XP와 같은, WSS를 사용하고 확장할 다른 상품들을 개발하거나 출시하면서, Web Storage System에 대해 보다 많은 소식들을 듣기를 기대합니다.

Sean "Corky" McCormick은 그들의 교육용 프로그램 플랫폼에 Exchange 2000을 통합한 eCollege.com의 시스템 개발자입니다. 최근 Microsoft Exchange Conference 2000 솔루션 대회에서 "Best Solution by a Customer." 부문의 결승 진출자였던 그는 eCollege용 달력 응용 프로그램을 개발하였습니다. 다음 주소를 통해서 그를 만나실 수 있습니다.
Top of Page Top of Page


Microsoft