WPF XAML Tarayıcı Uygulamalarına Genel Bakış

XAML tarayıcı uygulamaları (XBAP'ler), hem Web uygulamalarının hem de zengin istemci uygulamalarının özelliklerini birleştirir. Web uygulamaları gibi XBAP'ler de bir Web sunucusuna dağıtılabilir ve Windows üzerinde Internet Explorer veya Firefox'tan başlatılabilir. Zengin istemci uygulamaları gibi XBAP'ler de WPF'nin özelliklerinden yararlanabilir. XBAP'ler geliştirmek de zengin istemci geliştirmeye benzer. Bu konu, XBAP geliştirmesine basit ve üst düzey bir giriş sağlar ve XBAP geliştirmenin standart zengin istemci geliştirmeden nerede farklı olduğunu açıklar.

Uyarı

XBAP'ler, Internet Explorer ve Firefox'un eski sürümleri gibi eski tarayıcıların çalıştırılmasını gerektirir. Bu eski tarayıcılar genellikle Windows 10 ve Windows 11'de desteklenmez. Modern tarayıcılar artık güvenlik riskleri nedeniyle XBAP uygulamaları için gereken teknolojiyi desteklemiyor. XBAP'leri etkinleştiren eklentiler artık desteklenmemektedir. Daha fazla bilgi için bkz . WPF tarayıcı tarafından barındırılan uygulamalar (XBAP) hakkında sık sorulan sorular.

Bu konu, aşağıdaki bölümleri içerir:

Yeni XAML Tarayıcı Uygulaması Oluşturma (XBAP)

Yeni bir XBAP projesi oluşturmanın en basit yolu Visual Studio'dur. Yeni bir proje oluştururken, şablon listesinden WPF Tarayıcı Uygulaması'nı seçin. Daha fazla bilgi için bkz . Nasıl yapılır: Yeni WPF Tarayıcısı Uygulama Projesi Oluşturma.

XBAP projesini çalıştırdığınızda, tek başına pencere yerine tarayıcı penceresinde açılır. Visual Studio'dan XBAP hatalarını ayıkladığınızda, uygulama İnternet bölgesi izniyle çalışır ve bu nedenle bu izinler aşılırsa güvenlik özel durumları oluşturur. Daha fazla bilgi için bkz . Güvenlik ve WPF Kısmi Güven Güvenliği.

Not

Visual Studio ile geliştirmiyorsanız veya proje dosyaları hakkında daha fazla bilgi edinmek istiyorsanız bkz . WPF Uygulaması Oluşturma.

XBAP dağıtma

XBAP oluşturduğunuzda çıktı aşağıdaki üç dosyayı içerir:

Dosya Açıklama
Yürütülebilir Dosya (.exe) Bu, derlenmiş kodu içerir ve bir .exe uzantısına sahiptir.
Uygulama bildirimi (.manifest) Bu, uygulamayla ilişkilendirilmiş meta verileri içerir ve bir .manifest uzantısına sahiptir.
Dağıtım bildirimi (.xbap) Bu dosya ClickOnce'ın uygulamayı dağıtmak için kullandığı bilgileri içerir ve .xbap uzantısına sahiptir.

XBAP'leri bir Web sunucusuna dağıtırsınız; örneğin, Microsoft Internet Information Services (IIS) 5.0 veya sonraki sürümleri. .NET Framework'ü Web sunucusuna yüklemeniz gerekmez, ancak WPF Çok Amaçlı İnternet Posta Uzantıları (MIME) türlerini ve dosya adı uzantılarını kaydetmeniz gerekir. Daha fazla bilgi için bkz . WPF Uygulamalarını Dağıtmak için IIS 5.0 ve IIS 6.0'ı Yapılandırma.

XBAP'nizi dağıtıma hazırlamak için .exe ve ilişkili bildirimleri Web sunucusuna kopyalayın. .xbap uzantısına sahip olan dağıtım bildirimini açmak için köprü içeren bir HTML sayfası oluşturun. Kullanıcı .xbap dosyasının bağlantısına tıkladığında ClickOnce, uygulamayı indirme ve başlatma mekanizmalarını otomatik olarak işler. Aşağıdaki örnek kod, XBAP'ye işaret eden bir köprü içeren bir HTML sayfasını gösterir.

<html>
    <head></head>
    <body>
        <a href="XbapEx.xbap">Click this link to launch the application</a>
    </body>
</html>

Ayrıca, Web sayfasının çerçevesinde bir XBAP barındırabilirsiniz. Bir veya daha fazla çerçeve içeren bir Web sayfası oluşturun. Bir çerçevenin kaynak özelliğini dağıtım bildirim dosyası olarak ayarlayın. Barındırma Web sayfası ile XBAP arasında iletişim kurmak için yerleşik mekanizmayı kullanmak istiyorsanız, uygulamayı bir çerçevede barındırmanız gerekir. Aşağıdaki örnek kod, iki çerçeve içeren bir HTML sayfasını gösterir; ikinci çerçevenin kaynağı XBAP olarak ayarlanır.

<html>
    <head>
        <title>A page with frames</title>
    </head>
    <frameset cols="50%,50%">
        <frame src="introduction.htm">
        <frame src="XbapEx.xbap">
    </frameset>
</html>

Önbelleğe Alınmış XBAP'leri Temizleme

XBAP'nizi yeniden oluşturup başlattıktan sonra bazı durumlarda, XBAP'ın önceki bir sürümünün açıldığını fark edebilirsiniz. Örneğin, XBAP derleme sürüm numaranız statik olduğunda ve XBAP'yi komut satırından başlattığınızda bu davranış oluşabilir. Bu durumda, önbelleğe alınan sürüm (daha önce başlatılmış olan sürüm) ile yeni sürüm arasındaki sürüm numarası aynı kaldığından, XBAP'nin yeni sürümü indirılmaz. Bunun yerine, önbelleğe alınan sürüm yüklenir.

Böyle durumlarda, komut isteminde Mage komutunu (Visual Studio veya Windows SDK ile yüklenir) kullanarak önbelleğe alınmış sürümü kaldırabilirsiniz. Aşağıdaki komut uygulama önbelleğini temizler.

Mage.exe -cc

Bu komut, XBAP'nizin en son sürümünün başlatıldığını garanti eder. Visual Studio'da uygulamanızda hata ayıkladığınızda, XBAP'nizin en son sürümü başlatılmalıdır. Genel olarak, dağıtım sürüm numaranızı her derlemeyle güncelleştirmeniz gerekir. Mage hakkında daha fazla bilgi için bkz. Mage.exe (Bildirim Oluşturma ve Düzenleme Aracı).

Konak Web Sayfası ile İletişim Kurma

Uygulama bir HTML çerçevesinde barındırıldığında, XBAP'yi içeren Web sayfasıyla iletişim kurabilirsiniz. Bunu, özelliğini BrowserInteropHelperalarak HostScript yaparsınız. Bu özellik, HTML penceresini temsil eden bir betik nesnesi döndürür. Ardından, normal nokta söz dizimini kullanarak pencere nesnesinde özelliklere, yöntemlere ve olaylara erişebilirsiniz. Betik yöntemlerine ve genel değişkenlere de erişebilirsiniz. Aşağıdaki örnekte betik nesnesinin nasıl alınıp tarayıcının kapatılmaya devam olduğu gösterilmektedir.

private void Button_Click(object sender, RoutedEventArgs e)
{
    // Retrieve the script object. The XBAP must be hosted in a frame or
    // the HostScript object will be null.
    var scriptObject = BrowserInteropHelper.HostScript;

    // Call close to close the browser window.
    scriptObject.Close();
}
Private Sub Button_Click(ByVal sender As Object, ByVal e As RoutedEventArgs)
    ' Retrieve the script object  The XBAP must be hosted in a frame or
    ' the HostScript object will be null.
    Dim scriptObject = BrowserInteropHelper.HostScript

    ' Call close to close the browser window.
    scriptObject.Close()
End Sub

HostScript Kullanan XBAP'lerde Hata Ayıklama

XBAP'niz HTML penceresiyle iletişim kurmak için nesnesini kullanıyorsa HostScript , Visual Studio'da uygulamayı çalıştırmak ve uygulamada hata ayıklamak için belirtmeniz gereken iki ayar vardır. Uygulamanın kaynak siteye erişimi olmalıdır ve uygulamayı XBAP'yi içeren HTML sayfasıyla başlatmanız gerekir. Aşağıdaki adımlarda bu iki ayarın nasıl denetlendiği açıklanmaktadır:

  1. Visual Studio'da proje özelliklerini açın.

  2. Güvenlik sekmesinde Gelişmiş'e tıklayın.

    Gelişmiş Güvenlik Ayarları iletişim kutusu görüntülenir.

  3. Uygulamaya kaynak siteye erişim izni ver onay kutusunun işaretli olduğundan emin olun ve tamam'a tıklayın.

  4. Hata Ayıkla sekmesinde URL ile tarayıcıyı başlat seçeneğini belirleyin ve XBAP'yi içeren HTML sayfasının URL'sini belirtin.

  5. Internet Explorer'da Araçlar düğmesine tıklayın ve İnternet Seçenekleri'ni seçin.

    İnternet Seçenekleri iletişim kutusu görüntülenir.

  6. Gelişmiş sekmesine tıklayın.

  7. Güvenlik altındaki Ayarlar listesinde, Etkin içeriğin Bilgisayarım'daki dosyalarda çalışmasına izin ver onay kutusunu işaretleyin.

  8. Tamam'a tıklayın.

    Değişiklikler, Internet Explorer'ı yeniden başlattıktan sonra geçerlilik kazanır.

Dikkat

Internet Explorer'da etkin içeriğin etkinleştirilmesi bilgisayarınızı riske atabilir. Internet Explorer güvenlik ayarlarınızı değiştirmek istemiyorsanız, HTML sayfasını bir sunucudan başlatabilir ve işleme Visual Studio hata ayıklayıcısını ekleyebilirsiniz.

XBAP Güvenlik Konuları

XBAP'ler genellikle İnternet bölgesi izin kümesiyle kısıtlanmış bir kısmi güven güvenlik korumalı alanında yürütülür. Sonuç olarak, uygulamanız İnternet bölgesinde desteklenen WPF öğelerinin alt kümesini desteklemeli veya uygulamanızın izinlerini yükseltmeniz gerekir. Daha fazla bilgi için bkz . Güvenlik.

Uygulamanızda bir WebBrowser denetim kullandığınızda WPF, yerel WebBrowser ActiveX denetimini dahili olarak oluşturur. Uygulamanız Internet Explorer'da çalışan bir kısmi güven XBAP olduğunda, ActiveX denetimi Internet Explorer işleminin ayrılmış bir iş parçacığında çalışır. Bu nedenle, aşağıdaki sınırlamalar geçerlidir:

  • Denetim, WebBrowser güvenlik kısıtlamaları dahil olmak üzere konak tarayıcısına benzer bir davranış sağlamalıdır. Bu güvenlik kısıtlamalarından bazıları Internet Explorer güvenlik ayarları aracılığıyla denetlenebilir. Daha fazla bilgi için bkz . Güvenlik.

  • HTML sayfasında bir XBAP etki alanları arası yüklendiğinde bir özel durum oluşur.

  • Giriş WPF'den WebBrowserayrı bir iş parçacığında olduğundan klavye girişi kesilemez ve IME durumu paylaşılmaz.

  • Başka bir iş parçacığında çalışan ActiveX denetimi nedeniyle gezinti zamanlaması veya sırası farklı olabilir. Örneğin, bir sayfaya gitmek her zaman başka bir gezinti isteği başlatılarak iptal edilmez.

  • WPF uygulaması ayrı bir iş parçacığında çalıştığından özel bir ActiveX denetimi iletişimle ilgili sorun yaşayabilir.

  • MessageHook başka bir iş parçacığında veya işlemde çalışan bir pencereyi alt sınıflayamadığından HwndHost tetiklenmez.

Tam Güven XBAP Oluşturma

XBAP'niz tam güven gerektiriyorsa, bu izni etkinleştirmek için projenizi değiştirebilirsiniz. Aşağıdaki adımlarda tam güvenin nasıl etkinleştirileceği açıklanmaktadır:

  1. Visual Studio'da proje özelliklerini açın.

  2. Güvenlik sekmesinde Bu tam güven uygulaması seçeneğine tıklayın.

Bu ayar aşağıdaki değişiklikleri yapar:

  • Proje dosyasında, <TargetZone> öğe değeri olarak Customdeğiştirilir.

  • Uygulama bildiriminde (app.manifest), 'PermissionSet öğesine bir Unrestricted="true" öznitelik eklenir.

    <PermissionSet class="System.Security.PermissionSet"
                   version="1"
                   ID="Custom"
                   SameSite="site"
                   Unrestricted="true" />
    

Tam Güven XBAP Dağıtma

ClickOnce Güvenilen Dağıtım modelini izlemeyen bir tam güven XBAP dağıttığınızda, kullanıcının uygulamayı çalıştırma davranışı güvenlik bölgesine bağlıdır. Bazı durumlarda, kullanıcı yüklemeyi denediğinde bir uyarı alır. Kullanıcı yüklemeye devam etmeyi veya yüklemeyi iptal etmeyi seçebilir. Aşağıdaki tabloda, uygulamanın her güvenlik bölgesi için davranışı ve uygulamanın tam güven alması için yapmanız gerekenler açıklanmaktadır.

Güvenlik Bölgesi Davranış Tam Güven Alma
Yerel bilgisayar Otomatik tam güven Eylem gerekmiyor.
İntranet ve güvenilen siteler Tam güven iste Kullanıcının isteminde kaynağı görmesi için XBAP'yi bir sertifikayla imzalayın.
İnternet "Güven Verilmedi" ile başarısız oluyor XBAP'yi bir sertifikayla imzalayın.

Not

Önceki tabloda açıklanan davranış, ClickOnce Güvenilen Dağıtım modelini izlemeyen tam güvenilir XBAP'lere yöneliktir.

Tam güven XBAP dağıtmak için ClickOnce Güvenilen Dağıtım modelini kullanmanız önerilir. Bu model, kullanıcıdan istenmemesi için XBAP'nize güvenlik bölgesinden bağımsız olarak otomatik olarak tam güven verilmesini sağlar. Bu modelin bir parçası olarak, uygulamanızı güvenilir bir yayımcının sertifikasıyla imzalamanız gerekir. Daha fazla bilgi için bkz . Güvenilen Uygulama Dağıtımına Genel Bakış ve Kod İmzalama'ya Giriş.

XBAP Başlangıç Zamanı Performans Konuları

XBAP performansının önemli bir yönü, başlangıç zamanıdır. XBAP yüklenecek ilk WPF uygulamasıysa, soğuk başlangıç süresi on saniye veya daha fazla olabilir. Bunun nedeni, ilerleme sayfasının WPF tarafından işlenmesi ve uygulamayı görüntülemek için hem CLR hem de WPF'nin soğuk başlatılmış olması gerekir.

.NET Framework 3.5 SP1'den başlayarak, dağıtım döngüsünün başlarında yönetilmeyen bir ilerleme sayfası görüntülenerek XBAP soğuk başlangıç süresi azaltılır. uygulama başlatıldıktan hemen sonra ilerleme sayfası görüntülenir çünkü yerel barındırma kodu tarafından görüntülenir ve HTML'de işlenir.

Buna ek olarak, ClickOnce indirme dizisinin geliştirilmiş eşzamanlılığı, başlangıç zamanını yüzde on'a kadar artırır. ClickOnce bildirimleri indirip doğruladıktan sonra uygulama indirmesi başlar ve ilerleme çubuğu güncelleştirilir.

Ayrıca bkz.