요약

개발자는 Microsoft Office의 자동화 기능을 사용하여 Office 제품에서 기본 제공되는 기능을 이용하는 사용자 지정 솔루션을 만들 수 있습니다. 클라이언트 시스템에서는 비교적 쉽게 이러한 프로그래밍 방식의 개발을 구현할 수 있지만 Microsoft Active Server Pages(ASP), ASP.NET, DCOM 또는 Windows NT 서비스와 같은 서버 쪽 코드에서 자동화를 수행하는 경우에는 많은 문제가 발생할 수 있습니다.

이 문서에서는 개발자에게 발생할 수 있는 문제에 대해 설명하고, 자동화 대신 사용 가능하며 성능을 개선할 수 있는 기능도 소개합니다. 그러나 이 문서의 제안 사항은 정보를 제공할 목적으로만 제공됩니다. Microsoft는 Office의 서버 쪽 자동화를 권장하거나 지원하지 않습니다.

참고 이 문서에서 Microsoft 2007 Office 시스템 드라이버 및 2010 Access 데이터베이스 엔진은 Microsoft Office 구성 요소로 간주됩니다. "서버 쪽"이라는 용어는 Windows 워크스테이션에서 실행되는 코드에도 적용됩니다. 단, 로그온한 사용자의 대화형 스테이션이 아닌 Windows 워크스테이션에서 코드가 실행되어야 합니다. 예를 들어 SYSTEM 계정의 작업 스케줄러에서 시작되는 코드는 "서버 쪽" ASP 코드나 DCOM 코드와 같은 환경에서 실행됩니다. 따라서 이 문서에서 설명하는 대다수의 문제가 발생할 수 있습니다. Windows 워크스테이션과 COM에 대한 자세한 내용은 "추가 정보" 절과 "참조" 절을 참조하십시오.

추가 정보

Microsoft Office의 현재 버전은 모두 클라이언트 워크스테이션의 최종 사용자 제품으로 실행되도록 설계, 테스트 및 구성되었으며 대화형 데스크톱과 사용자 프로필을 사용하므로 자동으로 실행되도록 설계된 서버 쪽 구성 요소에서 요구하는 재진입 또는 보안 수준을 제공하지 못합니다.

현재는 ASP, ASP.NET, DCOM 및 NT 서비스를 비롯한 비대화형 자동 클라이언트 응용 프로그램이나 구성 요소에서 Microsoft Office 응용 프로그램 자동화를 사용하지 않는 것이 좋으며 이러한 자동화가 지원되지도 않습니다. 이 환경에서 실행하는 경우 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는 처리 속도를 높이기 위해 클라이언트 인증 정보를 캐시할 수 있는 다수의 클라이언트 쪽 구성 요소(예: Simple MAPI, WinInet, MSDAIPP)를 사용합니다. Office를 서버 쪽에서 자동화하는 경우 인스턴스 하나가 여러 클라이언트에 서비스를 제공할 수 있습니다. 해당 세션에 대해 인증 정보가 캐시되었다면 특정 클라이언트가 다른 클라이언트의 캐시된 자격 증명을 사용할 수 있습니다. 따라서 클라이언트가 다른 사용자를 가장하여 부여되지 않은 액세스 권한을 얻을 수 있습니다.

이러한 기술적 문제 외에 라이선싱 문제도 고려해야 합니다. 현재의 라이선싱 지침에 따르면, 클라이언트 자체에 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 구성을 변경하더라도 모든 문제가 해결되지 않습니다. Microsoft는 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 SDK 설명서

방법: Office Open XML 형식 문서 조작

Open XML 개체 모델을 사용한 Word 2007 파일 조작(1부)

Open XML 개체 모델을 사용한 Word 2007 파일 조작(2부)

Open XML 개체 모델을 사용한 Word 2007 파일 조작(3부)

Open XML 개체 모델을 사용한 Excel 2007 및 PowerPoint 2007 파일 작업(1부)

Open XML 개체 모델을 사용한 Excel 2007 및 PowerPoint 2007 파일 작업(2부)

Open XML 개체 모델을 사용하여 서버 쪽 문서 생성 솔루션 구축(1부)

Open XML 개체 모델을 사용하여 서버 쪽 문서 생성 솔루션 구축(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를 사용하면 해당 문서를 편집하고 저장할 수 있으므로 서버로 반환할 수도 있습니다.

이러한 주제에 대한 자세한 내용과 대체 기능을 구현하는 방법을 보여 주는 예제를 확인하려면 아래 문서 번호를 클릭하여 Microsoft 기술 자료에서 문서를 확인하십시오.

198703 클라이언트 쪽 VBScript에서 Excel을 자동화하는 방법

278973 ADO를 사용하여 Excel 통합 문서에서 데이터를 읽고 쓰는 방법을 보여 주는 ExcelADO

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에서 이 기능의 초기 버전을 제공합니다.

Microsoft Office SharePoint Server 2007에 포함된 새로운 서버 기술인 Excel Services를 사용하면 Office SharePoint Server 2007에서 Excel 통합 문서를 로드, 계산 및 표시할 수 있습니다. Excel Services에 대한 자세한 내용을 보려면 다음 MSDN(Microsoft Developer Network) 웹 사이트를 방문하십시오.

Excel Services 개요

연습: Excel Web Services를 통해 사용자 지정 응용 프로그램 개발

Excel Services 및 Office Open XML 형식을 사용하여 비즈니스 응용 프로그램 만들기 SharePoint Server 2010의 새로운 서비스 응용 프로그램인 Word Automation Services는 문서를 Microsoft Word 클라이언트 응용 프로그램에서 지원하는 형식으로 서버 쪽에서 자동으로 변환하는 기능을 제공합니다.

Word Automation Services 개요

Word Automation Services 소개 이 문서에서 설명하는 옵션이 요구에 맞는지 여부와 가장 좋은 솔루션 배포 방법은 사용자가 직접 평가해야 합니다. 이 문서에 제공된 정보로는 모든 클라이언트의 모든 문제를 해결할 수 없으므로, 솔루션을 배포하기 전에 철저하게 테스트해야 합니다.

추가 도움이 필요하신가요?

기술 향상
교육 살펴보기
새로운 기능 우선 가져오기
Microsoft Insider 참가

이 정보가 유용한가요?

언어 품질에 얼마나 만족하시나요?
사용 경험에 어떠한 영향을 주었나요?

의견 주셔서 감사합니다!

×