السلام عليكم ورحمة الله وبركاته.
بعد ما توليت الاشراف على منتدى السي شارب وأصبح من واجبي فتح كل موضوع ورؤية كل رد وكل مشاركه .. أتت الى فكرة عمل برنامج يجلب ويفتح لي كل المشاركات الجديده وينبهني عند وجود ردود جديده والخ , ولكن نظرا لانشغالي الشديد والجديد لم أقم بتنفيذ أى شئ.
ولكن منذ عدة أيام فكرت بأن انفذ شئ من تلك الفكره ... فقمت والحمد لله وكبدايه بعمل XML Web Service لتجلب آخر مواضيع المنتدى وسميتها ArabTeamTopTopics واختصارها ATTT أو A3T :D
أنا للأسف حتى الآن لا أمتلك خبره اطلاقا في ذلك الوجه الآخر في الدوت نت المسمى Web Applications ولكن وجدت عمل Web Service بسيطه كهذه لا يتطلب معلومات كبيره.
عموما على كل حال ... خدمة الـ ATTT ( كل ماأقولها أضحك :) ) تحتوي على Method واحده حتى الآن اسمها GetTop وهى تأخذ عدد Integer وهو عدد المواضيع التي تريد استرجاعها و الداله ترجع DataSet تحتوي على جدولين بينهما علاقه ::
- جدول Forums ويتكون من ID , Name و الـ ID هو PrimaryKey.
ويحتوي هذا الجدول على بعض من أسماء المنتديات و الـ ID الخاص بهم.
- جدول TopicsAndLinks ويتكون من Topic , Link , ForumID و Link هو Unique.
ويحتوي هذا الجدول على المواضيع الجديده ووصلاتها المباشره ورقم المنتدى ... وطبعا العلاقه بين الجدولين اتضحت الآن فهناك علاقه بين Forums.ID and TopicsAndLinks.ForumID وهى العلاقه الوحيده الموجوده في الـ DataSet التي ترجعها الداله GetTop.
عموما استخدام الخدمه سهل .. افتح الـ Visual Studio .net واعمل مشروع جديد وسمه ArabTeamWSTest مثلا.
من الـ Solution Explorer اضغط Right Click بالماوس على اسم مشروعك أو على References واختار Add Web Reference ... سيطلب منك ادخال عنوان الخدمه فقم بادخال هذا العنوان ::
http://www40.brinkster.com/myxmlservices/A...mTopTopics.asmx
واضغط Enter ... انتظر التحميل ... ثم اكتب للخدمه اسما وليكن ArabTeamWS واضغط OK.
بعد ذلك يمكنك استخدامها من خلال عمل Object عادي ::
ArabTeamWS.ArabTeamTopTopics A3T = new ArabTeamWSTest.ArabTeamWS.ArabTeamTopTopics();
ArabTeamWS هو الاسم الذي أسنداه للخدمه و ArabTeamWSTest هو اسم المشروع.
بعد ذلك استدعي دالة GetTop ومرر لها عدد المواضيع التي تريد أن تجلبها لك الخدمه بشرط أن لا يزيد عن 20 , واجعل الداله ترجع ما تريده في DataSet.
DataSet myDataSet = A3T.GetTop(20);
بعد ذلك اعمل ما تريده بـ myDataSet فهى تحتوي على الجدولين بالفعل الآن .. ممكن مثلا تعمل Bind لـ DataGrid عندك ::
dataGrid1.DataSource = myDataSet;
عموما افعل ما تريده بها واستفيد من العلاقه الموجوده بين الجدولين في معرفة اسم المنتدى الذي ينتمي اليه كل الموضوع لأن هذه خاصيه غير موجوده في المنتدى :P
أنا قمت بعمل برنامج يستخدم هذه الخدمه موجود في المرفقات كعرض لها ... يقوم بعرض آخر المواضيع في ListBox وعندما تقف على أى موضوع يكتب اسم المنتدى الذي ينتمي اليه في ComboBox :
كما يمكنك استخدام الـ ComboBox في فلترة المواضيع على حسب المنتدى الذي تريده وفي الصوره التاليه أقوم بفلترة المواضيع على أساس مواضيع منتدى Visual Basic فقط :
وطبعا عندما تضغط Double Click على اسم الموضوع يقوم البرنامج بفتحه لك بنافذه جديد في الـ Internet Explorer.
ولكن أتوقع أن يقوم اخواننا في قسم السي شارب أوالفيجوال بيسيك بعمل برامج أفضل من ذلك.
هام :: هذه الخدمه غير رسميه من المنتدى هنا ولذلك ان لم تعمل لديك لا تراسل الاداره ... أيضا ان توفر لي الوقت سأقوم بعمل أكثر من نسخه من دالة GetTop لتجلب آخر 10 مواضيع مثلا من منتدى معين قد مرر اسمه اليها.
أيضا أنا لم أضف كل أسماء المنتديات لكثرتهم وسأضيف البقيه قريبا ان شاء الله.
أنا كتبتها على أكثر من مره وكانت تجربه والآن اتضحت لي الصوره ويمكنني كتابتها بشكل أفضل ولكن لا أمتلك وقت لذا يمكن أن تجدها بطيئه قليلا وأى Bugs تلائيها ابأه قولي عليها :D.


