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 bir Web sunucusuna dağıtılabilir ve Internet Explorer veya Firefox 'tan başlatılabilir. Zengin istemci uygulamaları gibi, XBAP 'ler WPF 'nin yeteneklerini kullanabilir. XBAP 'lerin geliştirilmesi, zengin istemci geliştirmeye de benzer. Bu konu, XBAP geliştirmeye basit, yüksek düzey bir giriş sağlar ve XBAP geliştirmenin standart zengin istemci geliştirmeden farklı olduğunu açıklar.

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

Yeni bir XAML tarayıcı uygulaması (XBAP) oluşturma

Yeni bir XBAP projesi oluşturmanın en kolay yolu Visual Studio ' dir. Yeni bir proje oluştururken, şablonlar listesinden WPF tarayıcı uygulaması ' nı seçin. Daha fazla bilgi için bkz. nasıl yapılır: yenı WPF tarayıcı uygulaması oluşturma Project.

XBAP projesi çalıştırdığınızda, tek başına bir pencere yerine bir tarayıcı penceresinde açılır. Visual Studio, XBAP 'de hata 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

Bir XBAP oluşturduğunuzda, çıkış aşağıdaki üç dosyayı içerir:

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

xbap 'yi bir Web sunucusuna (örneğin Microsoft Internet Information Services (ııs) 5,0 veya sonraki sürümlere dağıtabilirsiniz. .NET Framework Web sunucusuna yüklemek zorunda değilsiniz, ancak WPF çok amaçlı Internet posta uzantıları (mıme) türlerini ve dosya adı uzantılarını kaydetmeniz gerekir. Daha fazla bilgi için bkz. WPF uygulamalarını dağıtmak IÇIN ııs 5,0 ve ııs 6,0 yapılandırma.

XBAP 'yi dağıtıma hazırlamak için .exe ve ilişkili bildirimleri Web sunucusuna kopyalayın. . Xbap uzantısına sahip olan dosya 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 mekanizması otomatik olarak işler. Aşağıdaki örnek kod, bir 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>

Bir XBAP 'yi bir Web sayfasının çerçevesinde de barındırabilirsiniz. Bir veya daha fazla çerçeveyle 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 kare içeren bir HTML sayfası gösterir, ikinci çerçeve kaynağı bir 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 temizleniyor

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

bu 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ılmış olmasını güvence altına alır. uygulamanızda hata ayıklarken Visual Studio, XBAP 'nizin en son sürümü başlatılmalıdır. Genel olarak, her bir yapıda dağıtım sürüm numaranızı güncelleştirmeniz gerekir. Mage hakkında daha fazla bilgi için bkz. Mage.exe (Bildirim Oluşturma ve Düzenleme Aracı).

Ana bilgisayar Web sayfasıyla iletişim kurma

Uygulama bir HTML çerçevesinde barındırıldığı zaman, XBAP içeren Web sayfasıyla iletişim kurabilirsiniz. Bunu, özelliğini alarak yapabilirsiniz HostScript BrowserInteropHelper . Bu özellik HTML penceresini temsil eden bir betik nesnesi döndürür. Daha sonra normal nokta söz dizimini kullanarak pencere nesnesindeki özelliklere, yöntemlere ve olaylara erişebilirsiniz. Ayrıca, betik yöntemlerine ve genel değişkenlere erişebilirsiniz. Aşağıdaki örnek, komut dosyası nesnesinin nasıl alınacağını ve tarayıcının nasıl kapatılmasını gösterir.

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 'ler hata ayıklaması

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

  1. Visual Studio, 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. Uygulamanın kaynak sitesine erişimi ver onay kutusunun işaretli olduğundan emin olun ve ardından 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 ardından Internet seçenekleri' ni seçin.

    Internet 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ımdaki dosyalarda çalıştırılmasına izin ver onay kutusunu işaretleyin.

  8. Tamam'a tıklayın.

    Internet Explorer 'ı yeniden başlattıktan sonra değişiklikler geçerli olur.

Dikkat

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

XBAP güvenlik konuları

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

uygulamanızda bir denetim kullandığınızda WebBrowser WPF, yerel WebBrowser ActiveX denetimini dahili olarak başlatır. uygulamanız ınternet explorer 'da çalışan bir kısmi güven XBAP olduğunda, ActiveX denetimi ınternet explorer işleminin adanmış bir iş parçacığında çalışır. Bu nedenle, aşağıdaki sınırlamalar geçerlidir:

  • WebBrowserDenetim, güvenlik kısıtlamaları da dahil olmak üzere, ana bilgisayar tarayıcısına benzer 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.

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

  • Giriş, WPF 'den ayrı bir iş parçacığında bulunur WebBrowser , bu nedenle klavye girişi yakalanamaz ve IME durumu paylaşılmaz.

  • başka bir iş parçacığında çalışan ActiveX denetim nedeniyle, gezinme zamanlaması veya sırası farklı olabilir. Örneğin, bir sayfaya gitme işlemi, başka bir gezinti isteği başlatarak her zaman iptal edilmez.

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

  • MessageHookHwndHostbaşka bir iş parçacığında veya işlemde çalışan bir pencerenin alt sınıfı olmadığından, bu değil.

Full-Trust 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çıklanır:

  1. Visual Studio, proje özelliklerini açın.

  2. Güvenlik sekmesinde, Bu tam güven uygulaması seçeneğini belirleyin.

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

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

  • Uygulama bildiriminde (App. manifest) bir Unrestricted="true" özniteliği ' PermissionSet öğesine eklenir.

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

Full-Trust XBAP dağıtma

ClickOnce güvenilen dağıtım modelini takip eden tam güvenle bir XBAP dağıttığınızda, kullanıcı uygulamayı çalıştırdığında davranış güvenlik bölgesine bağlı olur. Bazı durumlarda, Kullanıcı yüklemeyi denediklerinde bir uyarı alır. Kullanıcı devam etmeyi seçebilir veya yüklemeyi iptal edebilir. Aşağıdaki tabloda her güvenlik bölgesi için uygulamanın 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.
Intranet ve güvenilen siteler Tam güven iste Kullanıcının istemde kaynağı görmesi için XBAP 'yi bir sertifikayla imzalayın.
İnternet "Güven verilmedi" ile başarısız olur XBAP 'yi bir sertifikayla imzalayın.

Not

önceki tabloda açıklanan davranış, ClickOnce güvenilen dağıtım modelini takip eden tam güven xbap 'ler içindir.

tam güvenle bir XBAP dağıtmak için ClickOnce güvenilir dağıtım modelini kullanmanız önerilir. Bu model, Kullanıcı sorulmadan, XBAP 'nize güvenlik bölgesinden bağımsız olarak tam güven verilmesini sağlar. Bu modelin bir parçası olarak, uygulamanızı güvenilir bir yayımcının sertifikası ile imzalamanız gerekir. Daha fazla bilgi için bkz. Güvenilen uygulama dağıtımına genel bakış ve kod imzalamaya giriş.

XBAP başlangıç zamanı performans konuları

XBAP performansının önemli bir yönü başlangıç zamanı olur. Bir XBAP yüklenecek ilk WPF uygulaması ise, soğuk başlangıç saati on saniye veya daha fazla olabilir. Bunun nedeni, ilerleme sayfasının WPF tarafından işlenmesi ve CLR ve WPF 'in uygulamayı görüntülemesi için soğuk başlatılmış olması gerekir.

.NET Framework 3,5 SP1 'den başlayarak, XBAP soğuk başlatma süresi, dağıtım döngüsünün başlarında yönetilmeyen bir ilerleme sayfası görüntülenirken azaltılmaktadır. İlerleme sayfası, uygulama başladıktan hemen sonra görünür, çünkü yerel barındırma kodu tarafından görüntülenir ve HTML olarak işlenir.

ayrıca, ClickOnce indirme sırasının geliştirilmiş eşzamanlılığı, başlangıç süresini yüzde on ' a kadar iyileştirir. ClickOnce, bildirimleri indirip doğruladıktan sonra, uygulama indirme başlar ve ilerleme çubuğu güncelleştirilmeye başlar.

Ayrıca bkz.