Sunucu tarafında Office Otomasyonu ile ilgili konular

Özet

Geliştiriciler Microsoft Office'te Otomasyonu kullanarak özel çözümler geliştirebilir ve bu çözümlerin Office ürünlerinde yerleşik olarak bulunan olanak ve özellikleri kullanmasını sağlayabilir. İstemci sistemlerinde bu şekilde program aracılığıyla geliştirme yapmak nispeten kolaydır. Ancak Otomasyon işlemi Microsoft Active Server Pages (ASP), ASP.NET, DCOM veya Windows NT hizmeti gibi sunucu tarafı kodundan gerçekleştirilirse bazı karmaşık durumlar oluşabilir.

Bu makalede geliştiricilerin karşılaşabileceği karmaşık durumlar açıklanmaktadır. Makalede performansı artırabilecek Otomasyon alternatifleri de sunulmaktadır. Ancak geliştiriciler, bu makaledeki önerilerin yalnızca bilgilendirme amaçlı olduğunu göz önünde bulundurmalıdır. Microsoft, sunucu tarafında Office Otomasyonu yapılmasını önermez ve desteklemez.

Not Bu bağlamda Microsoft 2007 Office Sistem Sürücüsünün ve 2010 Access Veritabanı Altyapısının Microsoft Office bileşeni olduğu kabul edilmektedir. "Sunucu tarafı" terimi Windows iş istasyonunda çalıştırılan kod için de geçerlidir; ancak söz konusu kodun kullanıcının oturum açtığı etkileşimli istasyondan farklı bir Windows iş istasyonunda çalıştırılması gerekir. Örneğin, Görev Zamanlayıcı tarafından SYSTEM hesabı altında başlatılan kod aynı ortamda "sunucu tarafı" ASP kodu veya DCOM kodu olarak çalışır. Bu makalede açıklanan sorunların çoğu bu nedenle oluşabilir. Windows iş istasyonları ve COM hakkında daha fazla bilgi için "Ek Bilgi" ve "Başvurular" bölümlerine bakın.

Ek Bilgi

Microsoft Office'in mevcut tüm sürümleri, istemci iş istasyonlarında son kullanıcı ürünü olarak çalışacak şekilde tasarlanmış, sınanmış ve yapılandırılmıştır. Bu sürümler etkileşimli bir masaüstü ve kullanıcı profili kullanıldığını varsayar. Katılımsız çalışması tasarlanmış sunucu tarafı bileşenlerinin gereksinimlerini karşılayacak yeniden kullanılabilirlik veya güvenlik düzeyi sağlamazlar.

Microsoft Office uygulaması Otomasyonunun etkileşimli olmayan katılımsız istemci uygulamalarından veya bileşenlerinden (ASP, ASP.NET, DCOM ve NT Hizmetleri dahil) yapılmasını Microsoft şu an için önermemekte ve desteklememektedir. Office, bu ortamlarda çalıştırıldığında kararsız davranışlar gösterebilir ve/veya kilitlenebilir.

Sunucu tarafı bağlamında çalışan bir çözüm geliştiriyorsanız katılımsız çalıştırma için güvenli hale getirilmiş bileşenler kullanmayı denemelisiniz. Alternatif olarak, kodun en azından bir kısmının istemci tarafında çalışmasına izin veren yöntemler bulmayı denemelisiniz. Office uygulamalarını sunucu tarafı çözümünden kullanırsanız söz konusu uygulamanın başarılı olarak çalışmasını sağlayan birçok özellik kullanılamaz. Bunun dışında çözümünüzün genel kararlığını da riske atmış olursunuz.

Sunucu tarafında Office Otomasyonu sorunları

Office'i sunucu tarafı çözümlerinde kullanmaya çalışan geliştiriciler, Office'in kullanıldığı ortam nedeniyle beş ana alanda beklenenden farklı davranışlar sergileyeceğini göz önünde bulundurmalıdır. Kodunuzun başarıyla çalıştırılabilmesi için bu sorunları ele almanız ve etkilerini mümkün olduğunca azaltmanız gerekir. Uygulamanızı geliştirirken bu sorunları göz önünde bulundurun. Tek bir çözümle tüm sorunları ele alamayabilirsiniz. Öğeleri, tasarıma göre önceliklendirmeniz gerekir.

  • Kullanıcı Kimliği: Office uygulamaları, Otomasyon yoluyla başlatılsalar da çalıştırıldıklarında bir kullanıcı kimliği kullanıldığını varsayar. Uygulamalar, uygulamayı başlatan kullanıcı için kayıt defteri kovanındaki ayarlara bağlı olarak araç çubuklarını, menüleri, seçenekleri, yazıcıları ve bazı eklentileri başlatmaya çalışır. Birçok hizmet, kullanıcı profili olmayan hesaplar (SYSTEM hesabı veya IWAM_[servername] hesapları gibi) altında çalışır. Office bu nedenle düzgün başlatılmayabilir. Office, bu durumda CreateObject veya CoCreateInstance işlevinde bir hata döndürür. Office uygulaması başlatılsa bile kullanıcı profili olmadığı için diğer işlevler düzgün çalışmayabilir.

  • Masaüstüyle etkileşim: Office uygulamaları etkileşimli bir masaüstü altında çalıştıklarını varsayar. Bazı durumda uygulamaların düzgün çalışabilmesi için bazı Otomasyon işlevleri için görünür hale getirilmesi gerekir. Beklenmeyen bir hata oluşması veya bir işlevi tamamlamak için gereken bir parametrenin belirtilmediği durumlarda Office, kullanıcının ne yapmak istediğini soran bir kalıcı iletişim kutusu açacak biçimde tasarlanmıştır. Office etkileşimli olmayan bir masaüstünde açılırsa bu kalıcı iletişim kutusu yok sayılamaz. Böylece söz konusu iş parçacığı süresiz olarak yanıt vermeyi durdurur (askıda kalır). Belirli kodlama uygulamaları bu sorunun oluşma olasılığını azaltsa da sorunu tümüyle engelleyemez. Sırf bu açıdan bile Office Uygulamalarının sunucu tarafı ortamlarından çalıştırılması riskli hale geldiği için bu uygulama desteklenmemektedir.

  • Yeniden giriş ve ölçeklenebilirlik: Sunucu tarafı bileşenleri, birden çok istemci için en az ek yük ve yüksek aktarım hızı sağlayan, yeniden girişi yüksek, çok iş parçacıklı COM bileşenleri gerektirir. Office uygulamaları bu gereksinimlerin neredeyse hiçbirini karşılayamaz. Office uygulamaları, tek bir istemci için yoğun kaynak kullanımı gerektiren çeşitli işlevler sağlayacak biçimde tasarlanmış, yeniden girişi olmayan STA tabanlı Otomasyon sunucularıdır. Uygulamalar, sunucu tarafı çözümü olarak çok az ölçeklenebilirlik sunar. Bunun dışında uygulama içerisindeki bellek gibi önemli öğeler de sabit sınırlara sahiptir. Bu sınırlar yapılandırmayla değiştirilemez. Daha da önemlisi bu uygulamalar eşlenmiş bellek dosyası, genel eklenti veya şablon ve paylaşılan Otomasyon sunucusu gibi genel kaynaklar kullanır. Bu nedenle, uygulamalar çok istemcili bir ortamda yapılandırılırsa sınırlı sayıda örneği aynı anda çalıştırabilir ve yarış durumuna yol açabilir. Aynı anda birden çok Office uygulaması örneği çalıştırmayı planlayan geliştiricilerin, olası kilitlenmeleri veya veri bozulmasını önlemek için Office uygulamasına erişimi "havuza alması" veya serileştirmesi gerekir.

  • Dayanıklılık ve kararlılık: Office 2000, Office XP, Office 2003 ve Office 2007, son kullanıcı açısından kurulumu ve kendi kendine onarımı kolaylaştırmak için Microsoft Windows Installer (MSI) teknolojisini kullanır. MSI, "ilk kullanımda yüklensin" kavramını getirmiştir. Bu sayede özellikler, sistemin veya genellikle belirli bir kullanıcının çalışma zamanında dinamik olarak yüklenir veya yapılandırılır. Ancak bu, sunucu tarafı ortamlarında performansı düşürmekle kalmaz aynı zamanda kullanıcıdan yükleme işlemini onaylamasını veya bir yükleme diski sağlamasını isteyen iletişim kutusunun görüntülenme olasılığını da artırır. Bu kavramla Office'in son kullanıcı ürünü olarak esnekliğinin artırılması amaçlansa da sunucu tarafı ortamlarında Office'in MSI özelliklerini kullanma biçimi verimliliği düşürmektedir. Üstelik, Office sunucu tarafında çalıştırıldığında Office'in genel kararlılık düzeyi garanti edilemez, çünkü bu şekilde kullanım için tasarlanmamış veya sınanmamıştır. Office bir ağ sunucusunda hizmet bileşeni olarak kullanılırsa ilgili makinenin ve dolayısıyla da tüm ağınızın kararlılık düzeyini düşürebilir.

  • Sunucu tarafı güvenliği: Office uygulamalarının sunucu tarafında kullanılması amaçlanmamıştır. Office uygulamaları dağıtılmış bileşenlerin karşılaşacağı güvenlik sorunlarını bu nedenle göz önünde bulundurmaz. Office gelen isteklerin kimlik doğrulamasını yapmaz. Office ayrıca, sunucu tarafı kodunuzdan istem dışı olarak makrolar çalıştırmaya veya makro çalıştırabilecek başka bir sunucu başlatmaya karşı sizi korumaz. Anonim Web sitelerinden sunucuya yüklenen dosyaları açmayın. Son belirlenen güvenlik ayarlarına bağlı olarak sunucu, makroları tüm ayrıcalıklara sahip bir Administrator veya System bağlamında çalıştırarak ağınızın güvenliğinin aşılmasına neden olabilir. Buna ek olarak Office, işlemleri hızlandırmak amacıyla istemci kimlik doğrulaması bilgilerini önbelleğe alabilen birçok istemci tarafı bileşeni (Basit MAPI, WinInet ve MSDAIPP gibi) kullanır. Office sunucu tarafında otomotikleştirilirse tek bir örnek birden fazla istemciye hizmet verebilir. Kimlik doğrulaması bilgileri söz konusu oturum için önbelleğe alınırsa bir istemci başka bir istemcinin önbelleğe alınan kimlik bilgilerini kullanabilir. Böylece, istemci başka kullanıcıların kimliğine bürünerek aslında kendisine verilmeyen erişim izinlerine sahip olabilir.

Teknik sorunların dışında lisans sorunlarıyla da karşılaşabilirsiniz. Söz konusu istemcilerde lisanslı Office kopyaları bulunmadığı sürece Office uygulamalarının istemci isteklerine hizmet verecek şekilde sunucularda kullanılması geçerli lisans yönergeleri doğrultusunda engellenmektedir. Son Kullanıcı Lisans Sözleşmesi (EULA), sunucu tarafında Otomasyon kullanılarak lisanslı olmayan iş istasyonlarına Office işlevselliği sağlamayı kapsamamaktadır.

Office'i sunucu tarafında otomatikleştirmeye çalıştığınızda bu sorunlara ek olarak yaygın olarak görülen aşağıdaki hatalarla da karşılaşabilirsiniz:

  • CreateObject ve CoCreateInstance işlevleri aşağıdaki çalışma zamanı hata iletilerinden birini döndürüyor ve Otomasyon için başlatılamıyor.

    İleti 1

    Çalışma zamanı hatası '429': ActiveX bileşeni nesneyi oluşturamıyor

    İleti 2

    Çalışma zamanı hatası '70': İzin verilmedi

    İleti 3

    CO_E_SERVER_EXEC_FAILURE (0x80080005): Sunucunun yürütme işlemi başarısız oldu

    İleti 4

    E_ACCESSDENIED (0x80070005): Erişim reddedildi

  • Office belgelerini açtığınızda aşağıdaki hata iletilerinden birini alıyorsunuz.

    İleti 1

    Çalışma zamanı hatası '5981' (0x800A175D): Makro deposu açılamadı

    İleti 2

    Çalışma zamanı hatası '1004': '~' nesnesinin '~' yöntemi başarısız oldu

  • CreateObject ve CoCreateInstance işlevleri yanıt vermeyi durduruyor veya bu işlevlerin yanıt döndürmesi uzun sürüyor. Bazı sunucularda oluşturma işlemi hızlı gerçekleştiriliyor, ancak Windows olay günlüğündeki 1004 hataları ile uygulamanın durdurulduğu bildiriliyor.

  • Kullanıcının dikkatini vermesi gereken kullanıcı uyarıları veya diğer iletişim kutuları açıldığında bazı işlevler beklenmeyen şekilde başarısız oluyor veya süresiz olarak yanıt vermeyi durduruyor.

  • Birden çok istek veya baskı sınaması çalıştırıldığında Office uygulamaları oluşturulursa ya da sonlandırılırsa kod başarısız oluyor, yanıt vermeyi durduruyor veya çöküyor. Bu durumda işlem bellekte çalışır durumda kalıp sonlandırılamıyor ya da otomatikleştirilen uygulamanın tüm örnekleri bu noktadan sonra başarısız oluyor.

Burada listelenenlere ek olarak başka sorunlar veya iletiler de görülebilir ancak genel olarak bu sorunlar bu makalede önceden listelenen beş ana sorun nedeniyle oluşmaktadır. 

Sunucu tarafında Otomasyon alternatifleri

Microsoft, sunucu tarafı çözümler geliştirilmesi gerekiyorsa geliştiricilerin Office Otomasyonuna alternatif bulmasını şiddetle önermektedir. Office tasarımındaki kısıtlamalar nedeniyle, Office yapılandırmasındaki değişiklikler tüm sorunları gidermek için yeterli değildir. Microsoft, Office'in sunucu tarafında yüklü olmasını gerektirmeyen ve çoğu genel görevi Otomasyon ile karşılaştırıldığında daha verimli ve daha hızlı gerçekleştirebilen birkaç alternatifi şiddetle tavsiye eder. Office'i projenize bir sunucu tarafı bileşeni olarak dahil etmeden önce alternatifleri göz önüne alın.

Sunucu tarafında Otomasyon görevlerinin çoğu belge oluşturma veya düzenleme işlemi içerir. Office 2007, geliştiricilerin dosya içeriğini sunucu tarafında oluşturmasını, düzenlemesini, okumasını veya dönüştürmesini sağlayan yeni Open XML dosya biçimlerini desteklemektedir. Bu dosya biçimleri Office dosyalarını Office istemci uygulamalarının kendilerini kullanmadan düzenlemek için Microsoft .NET 3.x Framework'te System.IO.Package.IO ad alanını kullanır. Office dosyalarına hizmetler üzerinden değişiklik yapıldığında bu yöntemin kullanılması önerilir ve desteklenir.

Open XML dosya biçimleri genel bir standarttır. 


Microsoft, Open XML dosya biçimlerini .NET 3.x Framework'ten işlemek için bir SDK sağlamaktadır. SDK ve SDK'yı kullanarak Open XML dosyaları oluşturma veya bu dosyaları düzenleme hakkında daha fazla bilgi edinmek için aşağıdaki Microsoft Developer Network (MSDN) Web sitelerini ziyaret edin:

XML SDK Belgelerini Açma

Nasıl yapılır: Office Open XML Biçimindeki Belgeleri İşleme

Word 2007 Dosyalarını Open XML Nesne Modeli ile İşleme (Kısım 1/3)

Word 2007 Dosyalarını Open XML Nesne Modeli ile İşleme (Kısım 2/3)

Word 2007 Dosyalarını Open XML Nesne Modeli ile İşleme (Kısım 3/3)

Excel 2007 ve PowerPoint 2007 Dosyalarını Open XML Nesne Modeli ile İşleme (Kısım 1/2)

Excel 2007 ve PowerPoint 2007 Dosyalarını Open XML Nesne Modeli ile İşleme (Kısım 2/2)

Open XML Nesne Modeli ile Sunucu Tarafında Belge Oluşturma Çözümleri Geliştirme (Kısım 1/2)

Open XML Nesne Modeli ile Sunucu Tarafında Belge Oluşturma Çözümleri Geliştirme (Kısım 2/2)

ASP veya ASP.NET'ten Open XML dosyalarının akışını sağladığınızda söz konusu içerik için doğru türde Çok amaçlı İnternet Posta Eklentisi (MIME) sağlamanız gerekir. Office 2007 dosyalarına yönelik MIME türlerinin listesi için aşağıdaki Web sitesini ziyaret edin:

HTTP İçerik Akışı için Office 2007 Dosya Biçimi MIME Türleri

Yalnızca Office 2007 öncesi istemcileri hedefliyorsanız ve çözümde Open XML kullanılmasını istemiyorsanız HTML, XML ve RTF gibi ikili olmayan başka Office dosya biçimleri kullanabilirsiniz. Daha sonra bu dosyaların MIME türü kullanan istemcilere akışını sağlayabilirsiniz, böylece oluşturulan metin Office'te gösterilir. Belge sunucuda ASP kullanılarak düzenlenebilir, kaydedilebilir ve hatta sunucuya döndürülebilir.

Bu konulardan herhangi biri hakkında bilgi edinmek ve uygulanma şekillerinin gösterildiği örnekleri görmek için aşağıdaki makale numaralarını tıklatarak Microsoft Bilgi Bankası'ndaki makaleleri görüntüleyin:

198703 Excel bir istemci tarafı VBScript'ten nasıl otomatikleştirilir

278973 ExcelADO, Excel çalışma kitaplarındaki verileri okumak ve yazmak için ADO'nun nasıl kullanılacağını gösterir

286023 Internet Explorer'dan Word otomasyonu için bir VB ActiveX bileşeni nasıl kullanılır
 

İşletmeniz için Office 97, Office 2000, Office XP ve Office 2003 ikili dosya biçimlerinin sunucu tarafında oluşturulması gerekiyorsa üçüncü taraf satıcılar yardımcı olacak bileşenler sağlayacaktır. Microsoft bu tip bileşenler sağlamadığı için çözümü ya kendiniz oluşturmalısınız ya da üçüncü taraf satıcılardan satın almalısınız. Piyasada birçok üçüncü taraf ürünü bulunmaktadır. İşletmenizin gereksinimlerini en iyi karşılayacak satıcıyı bulmak için tüm çözümleri araştırmalısınız.

Office 97, Office 2000, Office XP ve Office 2003 ikili dosya biçimlerini doğrudan düzenleyecek bir çözüm geliştirmek isterseniz dosya biçimi özelliklerini Microsoft Açık Özellik Taahhüdü (OSP) şartları altında ücretsiz olarak edinebilirsiniz. Belgeler veya oluşturduğunuz ürünler için teknik destek sağlanmasa da mevcut belgeleri kullanabilirsiniz. 


Sunucu tarafı çözümler kullanıcıların dosyaları yüklemesine izin vermek isteyebilir ve ardından sunucunun dosyaları Web'de veya diğer ortamlarda görüntülemek amacıyla işlemesini sağlayabilir. Microsoft, bu tip özellikler sağlamak için çalışmalarını sürdürmekte ve bu özelliğin ilk halini Microsoft Excel Services'ta sağlamaktadır.

Excel Services, Microsoft Office SharePoint Server 2007'ye eklenmiş yeni bir sunucu teknolojisidir. Office SharePoint Server 2007'de Excel çalışma kitaplarını yüklemenizi, hesaplamanızı ve görüntülemenizi sağlar. Excel Services hakkında daha fazla bilgi için aşağıdaki Microsoft Developer Network (MSDN) Web sitelerini ziyaret edin:

Excel Services'a Genel Bakış

Gözden Geçirme: Excel Web Services'ı Kullanarak Özel Uygulama Geliştirme

Excel Services ve Office Open XML Biçimlerini Kullanarak İşletme Uygulamaları Oluşturma Word Automation Services, SharePoint Server 2010'un yeni bir hizmet uygulamasıdır. Word Automation Services, belgeleri Microsoft Word istemci uygulamasının desteklediği biçimlere sunucu tarafında katılımsız olarak dönüştürür.

Word Automation Services'a Genel Bakış

Word Automation Services'a Giriş Bu makalede açıklanan seçeneklerden hangisinin gereksinimlerinizi karşıladığına ve çözümünüzü dağıtmak için en uygun seçenek olduğuna karar vermelisiniz. Bu makalede sağlanan bilgilerin, istemcilerle ilgili tüm sorunları gidereceği garanti edilmez. Dağıtmadan önce çözümünüzü kapsamlı olarak sınamanız önerilir.

Daha fazla yardıma mı ihtiyacınız var?

Yeteneklerinizi geliştirin
Eğitimleri keşfedin
Yeni özellikleri ilk olarak siz edinin
Microsoft Insider 'a katılın

Bu bilgi yardımcı oldu mu?

Geri bildiriminiz için teşekkür ederiz!

Geri bildiriminiz için teşekkürler! Office destek temsilcilerimizden biriyle görüşmeniz yararlı olabilir.

×