UDF'lere Excel 2007 yatırımları #2: Mevcut UDF'ler
İşte Excel Hizmetleri ekibinde program yöneticisi olan Danny Khen'in ikinci yazısı.
Bir önceki yazımda Excel 2007'de ve Excel Servislerinde UDF'ler etrafında yaptığımız yatırımları anlatmıştım. Ayrıca Excel Hizmetlerinin, Excel istemcisi - yönetilen UDF'ler tarafından kullanılanlardan farklı bir UDF teknolojisini nasıl kullandığını da gösterdim. –Vay be??, –“Peki, Excel UDF'lere yaptığım tüm yatırım ne olacak?“Onları da sunucuya götüremez miyim?â€??
Aslında, bazı sınırlamalarla yapabilirsiniz. Ve UDF'lerin birçok uygulamasının gayet iyi transfer olduğuna inanıyoruz.
Mevcut UDF'lerim sunucuda kullanılabilir mi?
Veya daha kesin olmak gerekirse: Excel çalışma kitaplarım hem istemcide hem de sunucuda UDF'lerimi arayabilir ve aynı sonuçları alabilir mi?
Cevap evet - UDF'leriniz aşağıdaki niteliklere sahipse:
- UDF'nin Excel sayfasıyla olan tüm arayüzü, yöntem çağrı imzası aracılığıyla yapılır; argümanlar Excel formülünden işleve iletilir ve dönüş değerleri formüle geri iletilir. Excel Hizmetleri, Excel'inki gibi bir OM'ye sahip değildir, bu nedenle Excel OM'yi kullanan UDF'ler sunucuda çalışamaz.
- Çalışma kitapları, bir tür veriyi farklı bir UDF bağımsız değişkeni türüne geçirmeye çalışmaz. (Ancak, bunu yaparlarsa bir geçici çözüm vardır, orijinal UDF'de bir değişiklik yapmak istiyorsanız - Varyantları kullanın.)
- Döndürülen değerlerde farklı hata durumları arasında ayrım yapmaya gerek yoktur; #DEĞER! döndürülen değer olarak tüm hesaplama hataları için kullanılır.
- UDF'leriniz iş parçacığı için güvenlidir. Excel Hizmetleri, farklı iş parçacıklarında farklı kullanıcı oturumları çalıştırır, bu nedenle bir UDF'nin sunucuyla konuşlandırılabilmesi için iş parçacığı açısından güvenli olması gerekir.
Onları sarın
Temel ilke basitçe â€wrappingâ€?? eşdeğer bir arabirim ortaya çıkaran, yönetilen kod UDF'lerine sahip mevcut UDF'leriniz. Bu sarmalayıcılar, sardıkları yerel UDF'lerle birlikte sunucuya dağıtılır; bir çalışma kitabı formülü bir UDF çağrısı yaptığında, Excel Hizmetleri, yönetilen sarmalayıcıdaki UDF yöntemini kullanır; bu, sırayla orijinal UDF'nizi çağırır ve sonucunu sayfaya döndürür. Tüm bunlar çalışma kitabı kullanıcıları için şeffaftır – onlar açısından, çalışma kitabı sunucu üzerinde çalışmaya devam eder ve aynı sonuçları sunar.
Bu konsepti göstermek için XLL eklentilerindeki UDF'lere odaklanacağım ve kısaca COM eklentilerinden de bahsedeceğim.
XLL eklenti UDF'leri
Önceki gönderide, bir Excel Services UDF derlemesine bir kod örneği ekledim - Excel'in olmasını dilerdik birkaç yöntem.
Bugün aynı yöntemin başka bir uygulamasını ekliyorum - bu sefer bir çapraz istemci/sunucu uygulaması. â€Xâ€? kullanıyorum? Bu çözümün XLL tabanlı olduğunu belirtmek için buradaki tüm adlar için son ek.
İçeride bulacağınız şey, önceki gönderideki yönetilen eşdeğerlerinin tam olarak yaptığı şeyi yapan iki yöntemin (WehWordX ve WehWordcountX) bir XLL uygulamasıdır. Ayrıca, her biri XLL UDF'lerinden birini çağıran, aynı ada sahip iki yöntemle bir sınıfı ortaya çıkaran, C++/CLI'de ("Yönetilen C++"??) uygulanmış bir yönetilen derleme bulacaksınız.
Sarıcı işlevleri aşağıdakileri yapar: