نظرة عامة حول تطبيقات مستعرض WPF XAML

تطبيقات مستعرض XBAP (XBAP) يدمج ميزات تطبيقات الويب و تطبيقات العميل الغني معاً. يمكن نشر XBAPs مثل تطبيقات ويب إلى ملقم الويب و يمكن بدء تشغيلها من Internet Explorer أو Firefox. مثل تطبيقات العميل الغني، XBAPs يمكنه الاستفادة من قدرات WPF. تطوير XBAPs يشبه أيضاً تطوير العميل الغني. هذا الموضوع يوفر مقدمة بسيطة ، عالية المستوى لتطوير XBAP كما توضح حيث يختلف تطوير XBAP من تطوير العميل الغني القياسي.

يشمل هذا الموضوع على الأقسام التالية.

  • إنشاء أحد تطبيقات مستعرض XAML (XBAP)

  • نشر XBAP

  • الاتصال مع صفحة الويب المضيفة

  • اعتبارات أمان XBAP

  • اعتبارات أداء وقت بدء XBAP

إنشاء أحد تطبيقات مستعرض XAML (XBAP)

أن أبسط طريقة لإنشاء مشروع جديد XBAP هو بواسطة Microsoft Visual Studio 2010. عند إنشاء مشروع جديد، تحديد تطبيق مستعرض WPF من قائمة القوالب. لمزيد من المعلومات، راجع كيفية: إنشاء مشروع جديد تطبيق مستعرض WPF.

عند تشغيل مشروع XBAP, يتم فتحه في إطار مستعرض بدلاً إطار المستقل. عندما كنت يصحح XBAP من Microsoft Visual Studio، تطبيق بإذن منطقة إنترنت وسوف لذلك تقوم بطرح استثناء الأمان إذا تم تجاوز تلك الأذونات. للمزيد من المعلومات، راجع أمن WPF والأمان ذا الثقة الجزئية الخاص بWPF.

ملاحظةملاحظة

إذا لم يتم تطوير مع Microsoft Visual Studioأو تحتاج إلى مزيد من المعلومات حول ملفات مشروع، راجع إنشاء تطبيق WPF (WPF).

نشر XBAP

عند إنشاء XBAP, يتضمن الإخراج الملفات الثلاثة التالية:

'ملف'

الوصف

الملف التنفيذي (.exe)

هذا يحتوي على التعليمات البرمجية المترجمة وله ملحق .exe.

بيان التطبيق(.manifest)

هذا يحتوي على بيانات تعريف مقترن بالتطبيق وله ملحق .manifest .

بيان التوزيع (.xbap)

يحتوي هذا الملف على المعلومات التي يستخدمها ClickOnce لنشر التطبيق و له ملحق .xbap.

تقوم بنشر XBAPs إلى ملقم ويب على سبيل المثال Microsoft Internet Information Services (IIS) 5.0 أو الإصدارات الأحدث. لا يجب تثبيت NET Framewor. على ملقم الويب و لكن يجب تسجيل أنواع WPF ملحقات بريد الإنترنت متعددة الأغراض (MIME) و ملحقات اسم الملف. لمزيد من المعلومات، راجع كيفية القيام بما يلي: تكوين IIS 5.0 و IIS 6.0 لنشر تطبيقات WPF.

لتحضير XBAP الخاص بك للنشر قم بنسخ .exe و ملفات البيان المقترنة به الى ملقم الويب. أنشأ صفحة HTML تحتوي على ارتباط تشعبي لفتح ملف بيان النشر و هو ملف له ملحق .xbap. عندما يقوم المستخدم بالنقر فوق الارتباط إلى ملف .xbap ، ClickOnce تلقائياً يعالج آليات تحميل و بدء التطبيق. تعرض التعليمات البرمجية الموجودة في المثال التالي صفحة HTML التي تحتوي على ارتباط تشعبي يشير إلى XBAP.

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

يمكنك أيضاً استضافة XBAP في إطار من صفحة الويب. أنشأ صفحة ويب من إطار واحد أو أكثر. تعيين خاصية المصدر إلى الإطار من ملف بيان النشر. إذا كنت تريد استخدام آلية المضمنة للاتصال بين صفحة الويب المستضيفة و XBAP, يجب استضافة التطبيق في إطار. يوضح مثال التعليمات البرمجية التالي صفحة HTML مع إطارين, يتم تعيين مصدر الإطار الثاني إلى XBAP.

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

مسح XBAPs المخزن

في بعض الحالات بعد إعادة إنشاء و بدء تشغيل XBAP الخاص بك, يمكن أن تجد أن إصدار سابق من XBAP مفتوح. على سبيل المثال، قد يحدث هذا السلوك عندما يكون رقم نسخة تجميع XBAP ثابت و تبدأ XBAP من سطر الأوامر. في هذه الحالة، لأن رقم الإصدار بين إصدار ذاكرة التخزين المؤقت (الإصدار الذي بدأ مسبقاً) و الإصدار الجديد يبقى كما هو، الاصدار الجديد من XBAP لن يتم تحميله. بدلاً من ذلك، يتم تحميل إصدار ذاكرة التخزين المؤقت.

في هذه الحالات، يمكنك إزالة النسخة المخزنة مؤقتاً باستخدام أمر Mage الأمر (المثبت مع Visual Studio أو Windows SDK) في موجه الأوامر. يمسح الأمر التالي ذاكرة التخزين المؤقت للتطبيق.

Mage.exe -cc

يضمن هذا الأمر تشغيل أحدث إصدار من XBAP الخاص بك. عندما تقوم يصحح يجب أن يتم تشغيل تطبيق الخاص بك في Visual Studio، أحدث الإصدار من XBAP الخاص بك. بشكل عام، يجب تحديث نسختك نشر الأرقام بكل الإنشاء. للحصول على مزيد من المعلومات حول Mage، راجع Mage.exe (إنشاء البيان و أداة التحرير).

الاتصال مع صفحة الويب المضيفة

عند استضافة التطبيق في إطار HTML, يمكنك الاتصال بصفحة الويب التي تحتوي على XBAP. يمكنك القيام بذلك عن طريق استرداد خاصية HostScript من BrowserInteropHelper. تقوم هذه الخاصية بإرجاع كائن البرنامج النصي الذي يمثل إطار HTML. يمكنك الوصول إلى هذه الخصائص , الأساليب و الأحداث على كائن الإطار باستخدام بناء جملة النقطة عادي. يمكنك أيضاً الوصول إلى أساليب البرنامج النصي و المتغيرات العمومية. المثال التالي يوضح كيفية استرداد كائن البرنامج النصي ثم غلق المستعرض.

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
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();
}

تصحيح XBAPs الذي يستخدم HostScript

إذا كان لديك XBAP يستخدم HostScriptكائن الاتصال مع نافذة HTML، هناك إعدادان يجب تحديد تشغيل و تصحيح تطبيق في Visual Studio. يجب أن يكون لهذا التطبيق حق الوصول إلى موقعه الأصل و يجب عليك بدء تشغيل التطبيق مع صفحة HTML التي تحتوي على XBAP. تصف الخطوات التالية كيفية فحص الإعدادين:

  1. في Visual Studio, افتح خصائص المشروع.

  2. في علامة التبويب أمان، انقر فوق خيارات متقدمة.

    إعدادات الأمان المتقدمة صندوق حوار تظهر.

  3. تأكد من تحديد خانة اختيار منح الوصول إلى تطبيق للموقع الأصل الخاص به و ثم انقر فوق ‏‏موافق .

  4. على علامة التبويب Debug ، حدد اختيار بدأ المستعرض مع URL و قم بتحديد URL لصفحة HTML التي تحتوي على XBAP.

  5. في Internet مستكشف، انقر فوق الزر أدوات وقم بتحديد خيارات إنترنت.

    يظهر صندوق الحوار "خيارات إنترنت".

  6. انقر فوق علامة التبويب Advanced.

  7. في قائمة إعدادات تحت الأمان، راجع السماح للمحتوى النشط إلى في الملفات الموجودة تشغيل "جهاز الكمبيوتر" بتشغيل خانة اختيار .

  8. انقر فوق موافق.

    التغييرات نافذة المفعول بعد إعادة تشغيل برنامج إنترنت مستكشف.

ملاحظة تنبيهتنبيه

تمكين محتوى نشط في برنامج إنترنت مستكشف قد تعرض الكمبيوتر للخطر.لمزيد من المعلومات، راجع ميزات الأمان والخصوصية في Internet Explorer.إذا لم تكن ترغب في تغيير إعدادات الأمان إنترنت مستكشف، يمكنك تشغيل HTML الصفحة من الخادم وقم بإرفاق Visual Studioالمصحح إلى عملية.

اعتبارات أمان XBAP

تنفيذ XBAPs عادةً في حماية أمان الثقة الجزئية مقيّد إلى مجموعة أذونات منطقة الإنترنت. وبالتالي، يجب أن يدعم التطبيق الخاص بك مجموعة فرعية من عناصر WPF التي يتم دعمها في منطقة الإنترنت صواب أو يجب ترقية أذونات التطبيق الخاص بك. لمزيد من المعلومات، راجع أمن WPF.

عندما تقوم باستخدام WebBrowserالتحكم في تطبيق الخاص بك، WPF داخليا instantiates متصفح ويب الأصلية عنصر تحكم ActiveX. عند تطبيق الخاص بك هو XBAP لثقة الجزئي التي تعمل في برنامج إنترنت مستكشف، يتم تشغيل عنصر تحكم ActiveX في مؤشر ترابط مخصصة لعملية إنترنت مستكشف. ولذلك، تطبق القيود التالية:

  • WebBrowserعنصر تحكم يجب أن يوفر سلوك مشابه للمضيف مستعرض، بما في ذلك قيود الأمان. يمكن التحكم بعض قيود الأمان هذه من خلال إعدادات أمان إنترنت مستكشف. لمزيد من المعلومات، راجع أمن WPF.

  • استثناء هو طرح عند XBAP هو تم تحميله مجالات في HTML صفحة.

  • إدخال هو تشغيل مؤشر ترابط منفصل من WPF WebBrowser، لذلك لا يمكن مقاطعة إدخال لوحة المفاتيح والولاية IME هو غير مشترك.

  • قد تختلف نتيجة التوقيت أو ترتيب التنقل إلى عنصر تحكم ActiveX تشغيل مؤشر ترابط آخر. على سبيل المثال، قم بالتنقل إلى صفحة هو ليس دائماً بإلغاء طلب آخر للتنقل إليها.

  • قد يكون عنصر تحكم ActiveX مخصص مشكلة الاتصال منذ تطبيق WPF هو قيد التشغيل في مؤشر ترابط منفصلة.

  • MessageHookعدم يحصل رفع لأنHwndHostلا فئة فرعية في نافذة التشغيل في آخر مؤشر ترابط أو عملية.

إنشاء XBAP بثقة تامة

إذا كان XBAP الخاص بك يتطلب ثقة تامة، يمكنك تغيير المشروع لتمكين هذا الإذن. تصف الخطوات التالية كيفية تمكين الثقة التامة:

  1. في Visual Studio, افتح خصائص المشروع.

  2. على علامة تبويب الأمان، حدد الخيار هذا تطبيق بثقة تامة.

هذا الإعداد يعمل التغييرات التالية:

  • في ملف المشروع , تتغير قيمة عنصر <TargetZone> إلى Custom.

  • في بيان التطبيق (app.manifest), سمة Unrestricted="true" يتم إضافتها إلى عنصر PermissionSet.

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

نشر XBAP بثقة تامة

عند نشر XBAP بثقة تامة التي لا تتبع طراز نشر ClickOnce الموثوق، يعتمد السلوك عند تشغيل المستخدم للتطبيق على منطقة الأمان. في بعض الحالات، المستخدم سوف يتلقى تحذيراً عند محاولتهم لتثبيته. يمكن للمستخدم اختيار متابعة أو إلغاء التثبيت.  يصف الجدول التالي سلوك التطبيق لكل منطقة أمان و ما يجب عمله للتطبيق حتى يتلقي الثقة التامة.

منطقة الأمان

السلوك

الحصول على ثقة تامة

كمبيوتر محلي

ثقة تامة تلقائية

ليس مطلوبًا اتخاذ أي إجراءات.

إنترانت و المواقع الموثوق بها

المطالبة بثقة تامة

تسجيل XBAP بشهادة بحيث يشاهد المستخدم المصدر في موجه الأوامر.

إنترنت

يفشل مع "لم يتم منح الثقة"

تسجيل XBAP بشهادة.

ملاحظةملاحظة

السلوك الموضح في الجدول السابق هو ل XBAPs بثقة تامة التي لا تتبع طراز نشر ClickOnce الموثوق.

من المستحسن استخدام طراز نشر ClickOnce الموثوق لنشر XBAP بثقة تامة. يسمح هذا الطراز إلى XBAP الخاص بك أن يتم منحه ثقة تامة تلقائياً, بغض النظر عن منطقة الأمان بحيث لا تتم مطالبة المستخدم. كجزء من هذا الطراز يجب تسجيل التطبيق الخاص بك باستخدام شهادة من ناشر موثوق به. لمزيد من المعلومات، راجع نظرة عامة على نشر التطبيق موثوق به و مقدمة إلى توقيع التعليمات البرمجية.

اعتبارات أداء وقت بدء XBAP

وجه مهم من أداء XBAP هو وقت البدء الخاص به. إذا كان XBAP هو أول تطبيق WPF للتحميل, يمكن أن يكون وقت البدء الأول عشرة ثانية أو أكثر. هذا لأنه يتم تقديم صفحة التقدم بواسطة WPF و يجب بدء تشغيل WPF و CLR لعرض التطبيق.

بدء تشغيل في .NET Framework 3.5 SP1 ، يتم تقليل وقت بدء XBAP عن طريق عرض صفحة التقدم غير المدارة في بداية دورة النشر. تظهر صفحة التقدم تقريباً مباشرة بعد أن يتم تشغيل التطبيق لأنه يتم عرضها بواسطة تعليمات برمجية مستضيفة أصلية و يتم تقديمها في HTML. 

بالإضافة إلى ذلك، تحسين التزامن من تسلسل تحميل ClickOnce يقوم بتحسين وقت البدء بعشرة في المائة. بعد تنزيل ClickOnce و التحقق من صحة السجلات, يبدأ تحميل التطبيق و يبدأ شريط التقدم بالتحديث.

راجع أيضًا:

المهام

كيفية القيام بما يلي: إنشاء نموذج ملف مشروع لتطبيق مستعرض WPF XAML

المبادئ

كيفية القيام بما يلي: تكوين Visual Studio لتصحيح تطبيقات مستعرض XAML لنداء خدمة ويب

نشر أحد تطبيقات WPF (WPF)