في هذا التمرين، ستقوم بتنفيذ معالج HTTP في تطبيق ويب ASP.NET لإرجاع موجز GeoRSS. GeoRSS هو معيار لتضمين البيانات الجغرافية المكانية في خلاصات RSS، وهو يحدد تنسيقًا محددًا يسمى GeoRSS GML لتضمين البيانات بتنسيق GML في الخلاصات. يمكن لتطبيقات العميل الاشتراك في خلاصات GeoRSS بنفس طريقة خلاصات RSS العادية. يمكن بسهولة استيراد البيانات بتنسيق GeoRSS إلى عنصر تحكم Microsoft Virtual Earth VEMap.
ملاحظة: يمكنك نسخ التعليمات البرمجية المستخدمة في هذا التمرين من صفحة موقع الويب المكتملة في C:SQLHOLSSpatial وVESolutionStoreFinderSite.
تنفيذ معالجات HTTP
1. ابدأ تشغيل Microsoft Visual Studio 2008.
2. من القائمة ملف، انقر فوق فتح موقع ويب، ثم افتح موقع الويب C:SQLHOLsSpatial وVEStarterStoreFinderSite.
3. في Solution Explorer، قم بتوسيع App_Code، ثم انقر نقرًا مزدوجًا فوق GeoRSSHandler.vb لفتحه في محرر التعليمات البرمجية.
ملاحظة: معالج HTTP عبارة عن وحدة تعليمات برمجية تعالج طلبات HTTP إلى تطبيق ويب. تتم عادةً معالجة الطلبات المقدمة إلى تطبيقات ويب ASP.NET بواسطة معالج طلب ASP.NET الافتراضي، ولكن يمكنك إنشاء معالجات مخصصة لامتدادات ملفات محددة. في هذا المثال، ستقوم بتنفيذ معالج يتعامل مع طلبات الملفات ذات الامتداد .georss.
4. تحقق من الكود الموجود. تسمى العملية التي تتعامل مع الطلبات الواردة ProcessRequest. يرجى ملاحظة أن هذا الإجراء غير مكتمل ويحتوي على تعليقات مستفيضة يجب إضافتها إلى الكود.
5. ضمن التعليق إنشاء موجز GeoRSS، أضف التعليمات البرمجية التالية لبدء إنشاء موجز GeoRSS الذي سيتم إرجاعه بواسطة معالج HTTP.
rssOutput.AppendLine(" rssOutput.AppendLine("xmlns:georss='http://www.georss.org/georss'") rssOutput.AppendLine("xmlns:gml='http://www.opengis.net/gml '>") rssOutput.AppendLine("") rssOutput.AppendLine("مواقع المتجر") rssOutput.AppendLine("") rssOutput.AppendLine("" + System.DateTime.Now + "") rssOutput.AppendLine("") rssOutput.AppendLine("خادم SQL") rssOutput.AppendLine("")
6. تحت التعليق فتح اتصال بقاعدة البيانات، أضف الكود التالي.
sqlConn.Open()
7. ضمن التعليق، استخدم عملية GetStoresGML المخزنة للحصول على جميع المتاجر افتراضيًا، أضف الكود التالي.
spName = "GetStoresGML"
ملاحظة: بشكل افتراضي، تقوم الطلبات المقدمة إلى معالج HTTP هذا باستدعاء الإجراء GetStoresGML المخزن وإرجاع موجز GeoRSS الذي يحتوي على جميع المتاجر.
8. ضمن التعليق إذا تم توفير معلمة searchFrom، استخدم GetNearbyStores وأضف إحداثيات خطوط الطول والعرض المقدمة كمعلمات، وأضف التعليمة البرمجية التالية.
Dim searchFrom As String = context.Request.QueryString("SearchFrom") إذا لم يكن البحث من لا شيء، ثم spName = "GetNearbyStoresGML" Dim latLong() As String = Split(searchFrom, ", 2) cmd.Parameters.Add(New) SqlParameter("Lat"، latLong(0))) cmd.Parameters.Add(New SqlParameter("Long"، latLong(1))) End If
ملاحظة: إذا كان الطلب يحتوي على معلمة باسم SearchFrom (على افتراض أنه يحتوي على زوج مفصول بفواصل من إحداثيات خطوط الطول والعرض)، فسيقوم المعالج باستخراج قيم خطوط الطول والعرض من هذه المعلمة واستخدام الإجراء GetNearbyStoresGML المخزن لإرجاع GeoRSS خلاصة تحتوي على متاجر ضمن دائرة نصف قطرها 100 كيلومتر من نقطة البحث المطلوبة.
9. ضمن التعليق حدد اسم الإجراء المخزن كنص الأمر، أضف الكود التالي.
cmd.CommandText = spName
10. ضمن التعليق قم بإنشاء عنصر لهذا الصف، أضف التعليمة البرمجية التالية لإنشاء علامة لكل صف في نتيجة الإجراء المخزن.
rssOutput.AppendLine("")
11. ضمن التعليق استخدم العمودين 0 و1 للعنوان والوصف، أضف التعليمة البرمجية التالية لإنشاء "، GeomRdr.GetValue(0))) استنادًا إلى البيانات التي يتم إرجاعها بواسطة الإجراء المخزن.
rssOutput.AppendLine(String.Format("{0}", _ GeomRdr.GetValue(1)))
12. ضمن التعليق أضف عنصرًا، أضف الكود التالي لإنشاء عنصر لهذا الإدخال.
rssOutput.AppendLine("")
13. ضمن التعليق احصل على مثيل GML الجغرافي من العمود 2، أضف الكود التالي لاسترداد بيانات GML من نتيجة الإجراء المخزن.
gml = GeomRdr.GetValue(2).ToString()
14. ضمن التعليق أضف العناصر إلى مخرجات XML، أضف التعليمة البرمجية التالية لإضافة بيانات GML إلى موجز GeoRSS.
rssOutput.AppendLine(gml)
15. تحت التعليق إغلاق والعناصر، أضف الكود التالي.
rssOutput.AppendLine("") rssOutput.AppendLine("")
16. ضمن التعليق أغلق المستند وأرسله كرد، أضف الكود التالي لإكمال تغذية GeoRSS وإرساله إلى الطالب.
rssOutput.Append("") context.Response.Write(rssOutput.ToString())
17. احفظ GeoRSSHandler.vb.
سجل معالج HTTP
1. في Solution Explorer، انقر نقرًا مزدوجًا فوق web.config لفتحه في المحرر.
2. في القسم، أسفل التعليق سجل GeoRSSHandler لطلبات .georss، أضف XML التالي.
<إضافة فعل = "*" المسار = "*.georss" type = "GeoRSSHandler" validate = "false"/>
ملاحظة: يجب عليك تسجيل معالجات HTTP لامتدادات ملفات محددة حتى تقوم خدمات معلومات الإنترنت بإعادة توجيه طلبات هذه الملفات إلى المعالج الصحيح.
3. احفظ web.config.
اختبار معالج HTTP
1. في Solution Explorer، انقر فوق ملف مشروع موقع الويب الموجود في جذر الشجرة، ثم اضغط على F4 لعرض خصائصه.
2. يرجى الانتباه إلى سمة رقم المنفذ.
3. في قائمة الموقع، انقر فوق خيارات التشغيل.
4. حدد عنوان URL الخاص بالتشغيل، وأدخل عنوان URL التالي (استبدل المنفذ بقيمة سمة رقم المنفذ لموقع الويب)، ثم انقر فوق موافق.
http://localhost:/storefindersite/test.georss
5. في القائمة تصحيح، انقر فوق بدء التنفيذ دون تصحيح الأخطاء.
6. عند فتح برنامج Microsoft Internet Explorer ®، قم بعرض الصفحة التي تحتوي على موجز RSS لاسم المتجر.
7. في Internet Explorer، انقر بزر الماوس الأيمن فوق أي مكان على صفحة الويب، ثم انقر فوق عرض المصدر لفتح الملف المصدر للصفحة في "المفكرة". لاحظ أن مصدر هذه الصفحة هو خلاصة GeoRSS التي تم إنشاؤها بواسطة معالج HTTP الذي قمت بإنشائه مسبقًا.
8. أغلق المفكرة.
9. في شريط العناوين في Internet Explorer، قم بإلحاق سلسلة الاستعلام التالية بعنوان URL ثم اضغط على Enter.
?البحث من=34.000000,-118.000000
10. تأكد من أن خلاصة GeoRSS التي تم إنشاؤها تحتوي على منطقة البحث وجميع المخازن الموجودة بها.
11. أغلق إنترنت إكسبلورر