تقييم الموضوع :
  • 0 أصوات - بمعدل 0
  • 1
  • 2
  • 3
  • 4
  • 5
مقدمة عن تقنية Silverlight 2 (مترجم )
#3
اليوم ننشئ تطبيق SilverLight لمشروعنا

كما رأينا في النقطة 2 نقوم باضافة تطبيق Silverlight
بعدها نقوم باضافة LABEL نسميه Helloworld مثلا للصفحة Page.xaml من أجل عرض نتيجة خدمة الوب التي سنتصل بها
في صفحة الكود Page.xaml.cs نقوم بكتابة الكود اللازم لعرض النتيجة داخل الLABEL
عن طريق الHttpRequest

كود :
[color=#000000][COLOR=#0000bb][/color][color=#007700]public [/color][color=#0000bb]partial [/color][color=#007700]class [/color][color=#0000bb]Page [/color][color=#007700]: [/color][COLOR=#0000bb]Canvas
[/COLOR][COLOR=#007700]{
    [/COLOR][COLOR=#ff8000]// an BrowserHttpRequest for execute our HTTP Request
    [/COLOR][color=#007700]private [/color][color=#0000bb]BrowserHttpWebRequest mRequest[/color][COLOR=#007700];

    public [/COLOR][color=#0000bb]void Page_Loaded[/color][color=#007700]([/color][color=#0000bb]object o[/color][color=#007700], [/color][color=#0000bb]EventArgs e[/color][COLOR=#007700])
    {
        [/COLOR][COLOR=#ff8000]// Required to initialize variables
        [/COLOR][color=#0000bb]InitializeComponent[/color][COLOR=#007700]();

        try
        {
            [/COLOR][COLOR=#ff8000]// replace the port by yours
            [/COLOR][color=#0000bb]mRequest [/color][color=#007700]= new [/color][color=#0000bb]BrowserHttpWebRequest[/color][color=#007700](new [/color][color=#0000bb]Uri[/color][color=#007700]([/color][color=#dd0000]"http://localhost:50436/Service1.asmx/HelloWorld?input=Sky"[/color][COLOR=#007700]));

            [/COLOR][COLOR=#ff8000]// Get the response to the request
            // You can call it asynchronously too
            [/COLOR][color=#0000bb]HttpWebResponse response [/color][color=#007700]= ([/color][color=#0000bb]HttpWebResponse[/color][color=#007700])[/color][color=#0000bb]mRequest[/color][color=#007700].[/color][color=#0000bb]GetResponse[/color][COLOR=#007700]();

            [/COLOR][COLOR=#ff8000]// Read response
            [/COLOR][color=#0000bb]StreamReader responseReader [/color][color=#007700]= new [/color][color=#0000bb]StreamReader[/color][color=#007700]([/color][color=#0000bb]response[/color][color=#007700].[/color][color=#0000bb]GetResponseStream[/color][COLOR=#007700]());
            [/COLOR][COLOR=#ff8000]// Read all the responde (ie : the XML text returned)
            [/COLOR][color=#0000bb]string allResponse [/color][color=#007700]= [/color][color=#0000bb]responseReader[/color][color=#007700].[/color][color=#0000bb]ReadToEnd[/color][COLOR=#007700]();
            [/COLOR][COLOR=#ff8000]// We create en XML Reader with the XML text returned
            [/COLOR][color=#0000bb]XmlReader xr [/color][color=#007700]= [/color][color=#0000bb]XmlReader[/color][color=#007700].[/color][color=#0000bb]Create[/color][color=#007700](new [/color][color=#0000bb]StringReader[/color][color=#007700]([/color][color=#0000bb]allResponse[/color][COLOR=#007700]));
            [/COLOR][COLOR=#ff8000]// Method return string so we search the string markup
            [/COLOR][color=#0000bb]xr[/color][color=#007700].[/color][color=#0000bb]ReadToFollowing[/color][color=#007700]([/color][color=#dd0000]"string"[/color][COLOR=#007700]);
            [/COLOR][COLOR=#ff8000]// Get following text node
            [/COLOR][color=#0000bb]xr[/color][color=#007700].[/color][color=#0000bb]Read[/color][COLOR=#007700]();

            [/COLOR][COLOR=#ff8000]// we display the result in the TextBlock
            [/COLOR][color=#0000bb]helloWorld[/color][color=#007700].[/color][color=#0000bb]Text [/color][color=#007700]= [/color][color=#0000bb]xr[/color][color=#007700].[/color][color=#0000bb]Value[/color][COLOR=#007700];

            [/COLOR][COLOR=#ff8000]// Close th XmlReader and the HTTP Request
            [/COLOR][color=#0000bb]xr[/color][color=#007700].[/color][color=#0000bb]Close[/color][COLOR=#007700]();
            [/COLOR][color=#0000bb]mRequest[/color][color=#007700].[/color][color=#0000bb]Close[/color][COLOR=#007700]();
        }
        catch ([/COLOR][color=#0000bb]Exception ex[/color][COLOR=#007700])
        {
            [/COLOR][COLOR=#ff8000]// if error, we display the exception's message in the textblock
            [/COLOR][color=#0000bb]helloWorld[/color][color=#007700].[/color][color=#0000bb]Text [/color][color=#007700]= [/color][color=#0000bb]ex[/color][color=#007700].[/color][color=#0000bb]Message[/color][COLOR=#007700];
        }
    }
}  
[/COLOR][color=#0000bb][/color][/COLOR]

المفروض كل شئ أصبح جاهز
لكن ليس بعد , فعند استعراض الصفحة تحدث مشكلة فيعرض لنا النص التالي:

اقتباس:
[TABLE="width: 100%"]
[TR]
[TD="class: alt2"]Cross domain calls are not supported by BrowserHttpWebRequest [/TD]
[/TR]
[/TABLE]

لكننا نشغل الخدمة على نفس الخادم المستعمل للSilverlight
المشكل حدث لاننا لا نشغلها على نفس المنفذ


من أجل حل هذه المشكلة نذهب إلى تطبيق الWeb Service الذي انشأناه بالزر الأيمن نضغط على Add Silverlight Link ونضيف تطبيق الsilverlight الذي أنشاناه
بذلك يتم اضافة مرجع لتطبيق الSilverlight داخل خدمة الوب ويقوم بنسخ الصفحة Page.xaml
داخل مجلد مشروع خدمة الوب المنشئ ولاننسى أيضا نسخ TestPage.html, TestPage.html.js ايضا

الأن نستعرض الملف TestPage.html الموجود حاليا في مجلد خدمة الوب وبذلك يتم تشغيل الصفحة بدون مشاكل


في المرة القادمة سنرى طريقة أخرى للتعامل مع خدمات الوب مع تطبيقات Silverlight

}}}
تم الشكر بواسطة:


الردود في هذا الموضوع
مقدمة عن تقنية Silverlight 2 (مترجم ) - بواسطة Raggi Tech - 07-10-12, 12:11 PM


التنقل السريع :


يقوم بقرائة الموضوع: بالاضافة الى ( 1 ) ضيف كريم