Özet
Geliştiriciler, Office ürününde yerleşik olarak bulunan özellikleri ve özellikleri kullanan özel çözümler oluşturmak için Microsoft Office'te Otomasyon'u kullanabilir. Bu tür programlı geliştirmeler göreli bir kolaylıkla bir istemci sisteminde uygulanabilse de, Otomasyon Microsoft Active Server Pages (ASP), ASP.NET, DCOM veya bir Windows NT hizmeti gibi sunucu tarafı koddan gerçekleşirse bir dizi komplikasyon oluşabilir.
Bu makalede geliştiricilerin karşılaşabileceği komplikasyonlar ele alınmaktadır. Makale ayrıca performansı hızlandırabilecek Otomasyon alternatifleri de sunmaktadır. Ancak geliştiriciler, bu makalenin sağladığı önerilerin yalnızca bilgilendirme amaçlı olduğunu bilmeli. Microsoft, Office'in sunucu tarafı Otomasyonu'nu önermez veya desteklemez.
Not: Bu bağlamda, Access Veritabanı Altyapısı Yeniden Dağıtılabilir ve Access Çalışma Zamanı Microsoft Office bileşenleri olarak kabul edilir. "Sunucu tarafı" terimi, oturum açmış olan kullanıcının etkileşimli istasyonu dışında bir Windows iş istasyonundan çalışıyorsa, Bir Windows iş istasyonunda çalışan kod için de geçerlidir. Örneğin, System hesabı altında Görev Zamanlayıcı tarafından başlatılan kod, "sunucu tarafı" ASP kodu veya DCOM kodu olarak aynı ortamda çalışır. Bu nedenle, bu makalede açıklanan sorunların çoğu oluşabilir. Windows iş istasyonları ve COM hakkında daha fazla bilgi için "Daha Fazla Bilgi" bölümüne ve "Başvurular" bölümüne 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 şu anda katılımsız, etkileşimli olmayan herhangi bir istemci uygulamasından veya bileşeninden (ASP, ASP.NET, DCOM ve NT Services dahil) Microsoft Office uygulamalarının otomatikleştirilmesini önermez ve desteklemez, çünkü Office bu ortamda çalıştırıldığında kararsız davranış ve/veya kilitlenme gösterebilir.
Sunucu tarafı bağlamında çalışan bir çözüm oluşturuyorsanız, katılımsız yürütme için güvenli hale getirilmiş bileşenleri 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 bir Web sitesinden sunucuya yüklenen dosyaları açmayın. Son ayarlanan güvenlik ayarlarına bağlı olarak, sunucu tam ayrıcalıklarla bir Yönetici veya Sistem bağlamı altında makrolar çalıştırabilir ve bu nedenle ağınızın güvenliğini tehlikeye atabilir. 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.
Bu sorunlara ek olarak, Office sunucu tarafını otomatikleştirmeye çalıştığınızda aşağıdaki yaygın hatalardan biri oluşabilir:
-
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 nesne oluşturamıyor
İleti 2
Çalışma zamanı hatası '70': İzin reddedildi
İ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 depolama açılamadı
İleti 2
'1004' çalışma zamanı hatası: '~' 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ünebilir, ancak bu sorunlar genellikle bu makalenin önceki bölümlerinde listelenen beş ana sorunun bir sonucu olarak ortaya çıkar.
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 yalnızca Office yapılandırmasında değişikliğe gidildiğinde tüm sorunlar giderilememektedir. Microsoft, Office'in sunucu tarafına yüklenmesini gerektirmeyen ve yaygın olarak kullanılan görevleri Otomasyona göre daha etkili ve daha hızlı gerçekleştirebilen birkaç alternatif önermektedir. Office'i projenize sunucu tarafı bileşen olarak dahil etmeden önce bu alternatifleri göz önünde bulundurun.
Sunucu tarafı Otomasyon görevlerinin çoğu belge oluşturmayı veya düzenlemeyi 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ı 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, .NET 3.x Framework'ten Open XML dosya biçimlerini işlemek için bir SDK sağlar. 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:
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:
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 daha fazla bilgi edinmek ve bunların nasıl uygulandığını gösteren örnekler için, Microsoft Bilgi Bankası'ndaki makaleleri görüntülemek üzere aşağıdaki makale numaralarına tıklayın:
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ümleri ayrıca kullanıcıların dosyaları karşıya yüklemesine izin vermek ve ardından sunucunun dosyaları Web'de veya diğer ortamlarda görüntülemek üzere işlemesini sağlamak isteyebilir. Microsoft şu anda bu özellikleri sunmak için çalışmaktadır ve Microsoft Excel Services'te bu özelliğin erken bir sürümünü sağlamaktadır.
Excel Services, Microsoft Office SharePoint Server 2007'de bulunan ve Office SharePoint Server 2007'de Excel çalışma kitaplarını yüklemenizi, hesaplamanızı ve görüntülemenizi sağlayan yeni bir sunucu teknolojisidir. Excel Hizmetleri hakkında daha fazla bilgi için aşağıdaki Microsoft Geliştirici Ağı (MSDN) Web sitelerini ziyaret edin:
Excel Hizmetleri ve Office Open XML Biçimlerini Kullanarak İş 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 ile tanışın 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.