요약
개발자는 Microsoft Office의 Automation을 사용하여 Office 제품에 기본 제공되는 기능과 기능을 사용하는 사용자 지정 솔루션을 빌드할 수 있습니다. 이러한 프로그래밍 방식 개발은 클라이언트 시스템에서 비교적 쉽게 구현할 수 있지만 ASP(Microsoft Active Server Pages), ASP.NET, DCOM 또는 Windows NT 서비스와 같은 서버 쪽 코드에서 자동화가 수행될 경우 여러 가지 문제가 발생할 수 있습니다.
이 문서에서는 개발자가 직면할 수 있는 복잡성에 대해 설명합니다. 또한 이 문서에서는 성능 속도를 높일 수 있는 자동화에 대한 대안도 제공합니다. 그러나 개발자는 이 문서에서 제공하는 제안이 정보 제공 목적으로만 제공된다는 것을 알고 있어야 합니다. Microsoft는 서버 쪽 Office 자동화를 권장하거나 지원하지 않습니다.참고: 이 컨텍스트에서 Access 데이터베이스 엔진 재배포 가능 및 액세스 런타임은 Microsoft Office 구성 요소로 간주됩니다. "서버 쪽"이라는 용어는 로그온한 사용자의 대화형 스테이션이 아닌 Windows 워크스테이션에서 코드가 실행되는 경우 Windows 워크스테이션에서 실행되는 코드에도 적용됩니다. 예를 들어 SYSTEM 계정에서 작업 스케줄러에서 시작하는 코드는 "서버 쪽" ASP 코드 또는 DCOM 코드와 동일한 환경에서 실행됩니다. 따라서 이 문서에서 설명하는 많은 문제가 발생할 수 있습니다. Windows 워크스테이션 및 COM에 대한 자세한 내용은 "추가 정보" 섹션 및 "참조" 섹션을 참조하세요.
추가 정보
모든 현재 버전의 Microsoft Office는 클라이언트 워크스테이션에서 최종 사용자 제품으로 실행되도록 설계, 테스트 및 구성되었습니다. 대화형 데스크톱 및 사용자 프로필을 가정합니다. 무인으로 실행되도록 설계된 서버 쪽 구성 요소의 요구 사항을 충족하는 데 필요한 재진입 또는 보안 수준을 제공하지 않습니다.
Office가 이 환경에서 실행될 때 불안정한 동작 및/또는 교착 상태가 발생할 수 있으므로 Microsoft는 현재 무인 비대화형 클라이언트 애플리케이션 또는 구성 요소(ASP, ASP.NET, DCOM 및 NT 서비스 포함)의 Microsoft Office 애플리케이션 자동화를 권장하지 않으며 지원하지 않습니다. 서버 쪽 컨텍스트에서 실행되는 솔루션을 빌드하는 경우 무인 실행을 위해 안전하게 만들어진 구성 요소를 사용해야 합니다. 또는 코드의 일부 이상이 클라이언트 쪽을 실행할 수 있는 대안을 찾아야 합니다. 서버 쪽 솔루션에서 Office 애플리케이션을 사용하는 경우 애플리케이션에 성공적으로 실행하는 데 필요한 많은 기능이 부족합니다. 또한 전체 솔루션의 안정성으로 위험을 감수하게 됩니다.Office의 서버 쪽 자동화 사용 시 발생하는 문제
서버 쪽 솔루션에서 Office를 사용하려는 개발자는 환경으로 인해 Office가 예상과 다르게 작동하는 5가지 주요 영역을 알고 있어야 합니다. 코드가 성공적으로 실행되기 위해서는 이러한 문제를 해결하고 문제의 영향을 최소화해야 합니다. 응용 프로그램을 개발할 때는 이러한 문제를 면밀하게 고려하십시오. 한 가지 해결 방법으로 모든 문제를 해결할 수는 없습니다. 디자인에 따라 각 요소의 우선 순위를 다르게 지정해야 합니다.
-
사용자 ID: 자동화를 통해 응용 프로그램을 시작하더라도 Office 응용 프로그램이 실행될 때는 사용자 ID가 사용됩니다. 이러한 응용 프로그램은 시작하는 사용자의 사용자 레지스트리 하이브 설정에 따라 도구 모음, 메뉴, 옵션, 프린터 및 일부 추가 기능 초기화를 시도합니다. 대부분의 서비스는 SYSTEM 계정이나 IWAM_[servername] 계정 등 사용자 프로필이 없는 계정으로 실행됩니다. 따라서 Office가 시작 시에 올바르게 초기화되지 않을 수 있습니다. 이러한 상황에서 Office는 CreateObject 함수 또는 CoCreateInstance 함수에 대한 오류를 반환합니다. 이 경우에도 Office 응용 프로그램을 시작할 수는 있지만 사용자 프로필이 없으면 다른 함수가 올바르게 작동하지 않을 수 있습니다.
-
데스크톱과의 대화형 작업: Office 응용 프로그램은 대화형 데스크톱에서 실행된다고 가정합니다. 상황에 따라 응용 프로그램을 표시해야 특정 자동화 기능이 올바르게 작동할 수 있습니다. Office는 예기치 않은 오류가 발생하거나 함수를 완료하려면 지정되지 않은 매개 변수가 필요한 경우 사용자에게 수행할 작업을 묻는 모달 대화 상자를 표시하도록 설계되었습니다. 그런데 비대화형 데스크톱에서는 모달 대화 상자를 해제할 수 없습니다. 따라서 해당 스레드가 무기한 응답하지 않는 상태가 됩니다. 특정 코딩 방식을 사용하면 이러한 문제가 발생할 가능성을 줄일 수는 있지만 완전히 방지할 수는 없습니다. 이 문제 하나만으로도 서버 쪽 환경에서 Office 응용 프로그램을 실행하는 것은 매우 위험하므로, 이러한 방식의 실행은 지원되지 않습니다.
-
재진입 및 확장성: 서버 쪽 구성 요소는 여러 클라이언트의 오버헤드는 최소화하고 처리량은 높일 수 있는 재진입성이 뛰어난 다중 스레드 COM 구성 요소여야 합니다. 그러나 Office 응용 프로그램은 거의 모든 면에서 정확히 이와 반대입니다. Office 응용 프로그램은 재진입이 가능하지도 않을 뿐더러 단일 클라이언트에 대해 다양하지만 리소스를 집중적으로 사용하는 기능을 제공하도록 설계된 STA 기반 자동화 서버입니다. 그리고 서버 쪽 솔루션에 필요한 확장성도 거의 제공하지 못합니다. 그뿐 아니라 메모리 등의 중요한 요소에 대한 한도가 고정되어 있습니다. 이 한도는 구성을 통해 변경할 수 없습니다. 그리고 더욱 중요한 점은, Office 응용 프로그램이 메모리 매핑 파일, 전역 추가 기능이나 템플릿, 그리고 공유 자동화 서버 등의 전역 리소스를 사용한다는 것입니다. 이로 인해 동시에 실행할 수 있는 인스턴스의 수가 제한될 수 있으며, 응용 프로그램이 다중 클라이언트 환경에 구성되어 있으면 경합 상태가 발생할 수 있습니다. 동시에 둘 이상의 Office 응용 프로그램 인스턴스를 실행할 계획인 개발자는 잠재적 교착 상태나 데이터 손상을 피하기 위해 Office 응용 프로그램에 대한 액세스를 "풀링", 즉 직렬화하는 방식을 고려해야 합니다.
-
복원력 및 안정성: Office 2000, Office XP, Office 2003 및 Office 2007은 최종 사용자가 더 쉽게 설치하고 자체 복구할 수 있도록 MSI(Microsoft Windows Installer) 기술을 사용합니다. MSI에는 "처음 사용할 때 설치" 개념이 적용되어 있습니다. 즉, 시스템을 실행할 때 기능을 동적으로 설치 또는 구성하거나 특정 사용자의 경우 더 자주 설치/구성할 수 있습니다. 따라서 서버 쪽 환경에서는 성능도 저하되며 사용자에게 설치를 승인하거나 설치 디스크를 넣으라는 대화 상자가 나타날 가능성도 높아집니다. Office의 MSI 기능은 최종 사용자 제품인 Office의 복원력을 높이기 위해 설계되었지만 서버 쪽 환경에서 구현할 경우에는 역효과를 냅니다. 또한 서버 쪽 환경에서 사용하도록 설계되거나 테스트를 거치지 않았으므로 Office를 서버 쪽에서 실행할 때의 전반적인 안정성도 보장할 수 없습니다. Office를 네트워크 서버에서 서비스 구성 요소로 사용하면 해당 컴퓨터의 안정성이 떨어질 수 있으며, 따라서 전체 네트워크의 안정성이 낮아질 수도 있습니다.
-
서버 쪽 보안: Office 애플리케이션은 서버 쪽 사용을 위한 것이 아니었습니다. 따라서 Office 애플리케이션은 분산 구성 요소가 직면한 보안 문제를 고려하지 않습니다. Office는 들어오는 요청을 인증하지 않습니다. 또한 Office는 의도치 않게 매크로를 실행하거나 서버 쪽 코드에서 매크로를 실행할 수 있는 다른 서버를 시작하지 못하도록 보호하지 않습니다. 익명 웹 사이트에서 서버에 업로드된 파일을 열지 마세요. 마지막으로 설정된 보안 설정에 따라 서버는 관리자 또는 시스템 컨텍스트에서 전체 권한으로 매크로를 실행할 수 있으므로 네트워크를 손상할 수 있습니다. 또한 Office는 클라이언트 인증 정보를 캐시하여 처리 속도를 높일 수 있는 많은 클라이언트 쪽 구성 요소(예: Simple MAPI, WinInet 및 MSDAIPP)를 사용합니다. Office가 자동화된 서버 쪽인 경우 한 instance 둘 이상의 클라이언트를 서비스할 수 있습니다. 해당 세션에 대한 인증 정보가 캐시된 경우 한 클라이언트는 다른 클라이언트의 캐시된 자격 증명을 사용할 수 있습니다. 따라서 클라이언트는 다른 사용자를 가장하여 부여되지 않은 액세스 권한을 얻을 수 있습니다.
이러한 기술적 문제 외에 라이선싱 문제도 고려해야 합니다. 현재의 라이선싱 지침에 따르면, 클라이언트 자체에 Office 정품이 없는 경우 서버에서 Office 응용 프로그램을 사용하여 클라이언트 요청을 처리할 수 없습니다. 서버 쪽 자동화를 사용하여 사용이 허가되지 않은 워크스테이션에 Office 기능을 제공하는 행위는 EULA(최종 사용자 사용권 계약)에서 허용되지 않습니다.
이러한 문제 외에도 Office 서버 쪽을 자동화하려고 할 때 다음과 같은 일반적인 오류 중 하나가 발생할 수 있습니다.-
CreateObject 함수 및 CoCreateInstance 함수가 다음 런타임 오류 메시지 중 하나를 반환하며, 자동화를 위해 이러한 함수를 시작할 수 없습니다.
메시지 1
런타임 오류 '429': ActiveX 구성 요소가 개체를 만들 수 없음
메시지 2
런타임 오류 '70': 사용 권한이 거부됨
메시지 3
CO_E_SERVER_EXEC_FAILURE (0x80080005): 서버 실행이 실패했습니다.
메시지 4
E_ACCESSDENIED (0x80070005): 액세스할 수 없습니다.
-
Office 문서를 열 때 다음과 같은 오류 메시지 중 하나가 나타납니다.
메시지 1
런타임 오류 '5981'(0x800A175D): 매크로 스토리지를 열 수 없습니다.
메시지 2
런타임 오류 '1004': 개체 '~'의 메서드 '~'가 실패했습니다.
-
CreateObject 함수와 CoCreateInstance 함수가 응답하지 않으며 완료되지 않거나, 응답이 반환되는 데 시간이 오래 걸립니다. 일부 서버의 경우 생성은 빠르게 수행되지만 응용 프로그램이 중지되었음을 나타내는 1004 오류가 Windows 이벤트 로그에 표시됩니다.
-
특정 함수는 사용자 알림 또는 사용자의 확인이 필요한 기타 대화 상자로 인해 예기치 않게 실패하거나 무기한 응답하지 않습니다.
-
요청을 여러 개 실행하거나 스트레스 테스트를 하면 Office 응용 프로그램 생성 또는 종료 시에 코드가 실행되지 않거나 응답하지 않거나 작동이 중단될 수 있습니다. 이러한 현상이 발생하는 경우 프로세스가 메모리에서 계속 실행되어 종료할 수 없거나, 자동화 중인 응용 프로그램의 모든 인스턴스가 해당 지점부터 작동하지 않습니다.
여기에 나열된 문제 또는 메시지 외에도 다른 문제 또는 메시지가 나타날 수 있지만, 이러한 문제는 일반적으로 이 문서의 앞부분에 나열된 5가지 기본 문제의 결과로 발생합니다.
서버 쪽 자동화 대신 사용할 수 있는 기능
서버 쪽 솔루션을 개발해야 하는 개발자는 Office 자동화 대신 사용할 수 있는 기능을 찾는 것이 좋습니다. Office 디자인의 제한으로 인해 Office 구성을 변경하는 것만으로는 모든 문제를 해결할 수 없습니다. 따라서 Office를 서버 쪽에 설치하지 않아도 되며, 가장 일반적인 작업을 자동화보다 빠르고 효율적으로 수행할 수 있는 여러 가지 다른 기능을 사용하는 것이 좋습니다. 프로젝트에서 Office를 서버 쪽 구성 요소로 포함하기 전에 다른 기능을 고려해 보십시오.
대부분의 서버 쪽 자동화 작업에는 문서 만들기 또는 편집이 포함됩니다. Office 2007은 개발자가 서버 쪽에서 파일 콘텐츠 작성, 편집, 읽기, 변환을 수행하는 데 사용할 수 있는 새로운 Open XML 파일 형식을 지원합니다. 이러한 파일 형식은 Microsoft .NET 3.x Framework의 System.IO.Package.IO 네임스페이스를 사용하여 Office 클라이언트 응용 프로그램 자체를 사용하지 않고 Office 파일을 편집합니다. 이러한 방식이 서비스에서 Office 파일 변경 내용을 처리할 때 권장되며 지원되는 방법입니다. Open XML 파일 형식은 공용 표준입니다.Microsoft는 .NET 3.x Framework에서 Open XML 파일 형식을 조작하기 위한 SDK를 제공합니다. 이 SDK 및 SDK를 사용하여 Open XML 파일을 만들거나 편집하는 방법에 대한 자세한 내용을 확인하려면 다음 MSDN(Microsoft Developer Network) 웹 사이트를 방문하십시오.
Open XML 개체 모델을 사용하여 Word 2007 파일 조작(3부 1부)
Open XML 개체 모델을 사용하여 Word 2007 파일 조작(3부 2부)
Open XML 개체 모델을 사용하여 Word 2007 파일 조작(3부/ 3부)
Open XML 개체 모델을 사용하여 Excel 2007 및 PowerPoint 2007 파일 조작(2부 1부)
Open XML 개체 모델을 사용하여 Excel 2007 및 PowerPoint 2007 파일 조작(2부)
Open XML 개체 모델을 사용하여 Server-Side 문서 생성 솔루션 빌드(2부 1부)
Open XML 개체 모델을 사용하여 Server-Side 문서 생성 솔루션 빌드(2부)
ASP 또는 ASP.NET에서 Open XML 파일을 스트리밍할 때는 스트리밍하는 콘텐츠용으로 올바른 MIME(Multipurpose Internet Mail Extension) 형식을 제공해야 합니다. Office 2007 파일용 MIME 형식의 목록을 확인하려면 다음 웹 사이트를 방문하십시오.
HTTP 콘텐츠 스트리밍을 위한 Office 2007 파일 형식 MIME 형식
Office 2007 이전 버전 전용 솔루션을 작성하며 해당 솔루션에서 Open XML을 사용하지 않아도 되는 경우에는 HTML, XML, RTF 등의 이진이 아닌 다른 Office 파일 형식을 사용할 수 있습니다. 그리고 MIME 형식을 사용해 이러한 파일을 클라이언트로 스트리밍하면 결과 텍스트가 Office에 표시됩니다. 서버에서 ASP를 사용하면 해당 문서를 편집하고 저장할 수 있으므로 서버로 반환할 수도 있습니다.
이러한 topics 대한 자세한 내용과 구현 방법을 보여 주는 예제를 보려면 다음 문서 번호를 클릭하여 Microsoft 기술 자료의 문서를 확인합니다.198703 클라이언트 쪽 VBScript에서 Excel을 자동화하는 방법
ASP에서 ADO를 사용하여 Excel 데이터를 쿼리하고 업데이트하는 방법
286023 Internet Explorer에서 Word 자동화를 위한 VB ActiveX 구성 요소를 사용하는 방법
업무상 Office 97, Office 2000, Office XP 및 Office 2003 이진 파일 형식을 서버 쪽에서 만들어야 하는 경우 타사 공급업체에서 제공하는 구성 요소를 사용하면 도움이 됩니다. Microsoft는 이러한 구성 요소를 제공하지 않으므로 솔루션을 직접 빌드하거나 타사 공급업체의 솔루션을 구매해야 합니다. 다양한 타사 제품을 사용할 수 있습니다. 각 솔루션을 조사하여 비즈니스 요구에 가장 적합한 공급업체를 찾아야 합니다.
Office 97, Office 2000, Office XP 및 Office 2003 이진 파일 형식을 직접 편집하는 솔루션을 직접 빌드하려는 경우 Microsoft OSP(Open Specification Promise) 약관에 따라 무료로 파일 형식 사양을 받을 수 있습니다. 직접 작성하는 제품이나 설명서에 대한 기술 지원은 제공되지 않지만 설명서는 제공됩니다.
서버 쪽 솔루션은 사용자가 파일을 업로드할 수 있도록 허용한 다음 서버가 웹 또는 다른 매체에서 볼 수 있도록 파일을 렌더링하도록 할 수도 있습니다. Microsoft는 현재 이러한 기능을 제공하기 위해 노력하고 있으며 Microsoft Excel Services 이 기능의 초기 버전을 제공합니다. Excel Services Microsoft Office SharePoint Server 2007에 포함되어 있으며 Office SharePoint Server 2007에서 Excel 통합 문서를 로드, 계산 및 표시할 수 있는 새로운 서버 기술입니다. Excel Services에 대한 자세한 내용을 보려면 다음 MSDN(Microsoft Developer Network) 웹 사이트를 방문하십시오.
연습: Excel Web Services를 사용하여 사용자 지정 애플리케이션 개발
Excel Services 및 Office Open XML 형식을 사용하여 비즈니스 애플리케이션 만들기 Word Automation Services는 SharePoint Server 2010의 새로운 서비스 애플리케이션입니다. Word Automation Services는 Microsoft Word 클라이언트 애플리케이션에서 지원하는 형식으로 문서를 무인 서버 쪽 변환을 제공합니다.
Word Automation Services 소개 이 문서에서 설명하는 옵션 중 요구 사항에 맞는 옵션과 솔루션을 배포하는 가장 좋은 방법을 평가해야 합니다. 이 문서에서 제공하는 정보는 모든 클라이언트에 대한 모든 문제를 resolve 보장되지 않습니다. 솔루션을 배포하기 전에 솔루션을 철저히 테스트하는 것이 좋습니다.