You are on page 1of 35

‫"ﻳﺎ أ ﺎ اﻟﺬﻳﻦ آﻣﻨﻮا اﺗﻘﻮا ﷲ و ﻗﻮﻟﻮا ﻗﻮﻻ‬

‫ﺳﺪﻳﺪا‪ .‬ﻳﺼ ﻟﻜﻢ أﻋﻤﺎﻟﻜﻢ و ﻐﻔﺮ ﻟﻜﻢ‬

‫ذﻧﻮ ﻜﻢ وﻣﻦ ﻳﻄﻊ ﷲ و رﺳﻮﻟﮫ ﻓﻘﺪ ﻓﺎز ﻓﻮزا‬

‫ﻋﻈﻴﻤﺎ"‬

‫ﺣﺰاب ‪ 70 :‬و ‪71‬‬


‫ﻓﺼﻮل اﻟﻜﺘﺎب‬
‫ﻟﻔ ﻢ ﺗﻘﻨﻴﺔ ‪3............................................... :WCF‬‬ ‫ﻣﺪﺧﻞ أﺳﺎ‬
‫أﺑﺠﺪﻳﺎت ﺗﻘﻨﻴﺔ ‪7........................................................... :WCF‬‬
‫إ ﺸﺎء ‪ Service‬ﺑﺎﺳﺘﻌﻤﺎل ﺗﻘﻨﻴﺔ ‪10........................................ :WCF‬‬
‫ﺗﺬﻛﺮة ﺧﺘﺎﻣﻴﺔ وﻣﺜﺎل ﻣﻦ ﻋﻤﻖ ‪15......................................... :WCF‬‬
‫ﺧﺎﺗﻤﺔ‪34......................................................................... :‬‬

‫]‪[2‬‬
‫ﻟﻔ ﻢ ﺗﻘﻨﻴﺔ ‪:WCF‬‬ ‫ﻣﺪﺧﻞ أﺳﺎ‬
‫ﺷ ﺪت ﺑ ﻴﺎت ﻧﻈﻤﺔ اﳌﻌﻠﻮﻣﺎﺗﻴﺔ ﺗﻄﻮرا ﻣ ﻮﻇﺎ ﻣﻊ ﻣﺮور اﻟﺰﻣﻦ‪ ،‬ﺑﺪء ﻣﻦ اﻟﺒ ﻴﺔ‬
‫ﺎﻧﺖ ﺗﻘﺪم ﻟﻠﻤﺴﺘﺨﺪﻣ ن أﻧﻈﻤﺔ أﺣﺎدﻳﺔ ا ﺪﻣﺔ‪ ،‬ﻋﺒﺎرة ﻋﻦ ﺗﻄﺒﻴﻘﺎت‬ ‫اﻟﺘﻘﻠﻴﺪﻳﺔ اﻟ‬
‫ﻋﻤﻠﮫ‪ ،‬إذ‬ ‫اﻧﻔﺮادﻳﺔ ﺸﺘﻐﻞ ﻋﻠ ﺎ ﻣﺴﺘﺨﺪم واﺣﺪ‪ ،‬ﺑﻞ وﻻ ﺗﻘﺪم ﻟﮫ ﻞ ﻣﺎ ﻳﺤﺘﺎﺟﮫ‬
‫ﺑﺮﻧﺎﻣﺞ ﺧﺎص‬ ‫ﻳﻀﻄﺮ أن ﻳﻮزع ﻣ ﺎﻣﮫ ﺑ ن ﻋﺪة ﺑﺮاﻣﺞ‪ ،‬ﻓﻴﻘﻮم ﺑﺈدﺧﺎل اﳌﻌﻄﻴﺎت‬
‫ﺑﻘﻮاﻋﺪ اﻟﺒﻴﺎﻧﺎت‪ ،‬ﺛﻢ ﻌﺪ ذﻟﻚ ﻳﻘﻮم ﺑﺎﻻﺳﺘﻌﻼم ﻋﻦ ﺬﻩ اﻟﺒﻴﺎﻧﺎت ﻣﻦ ﺧﻼل ﺑﺮﻧﺎﻣﺞ آﺧﺮ‬
‫ء اﻟﺘﻘﺎر ﺮ ‪ Reports‬ﺗﻮﺟﮫ إ ﺑﺮﻧﺎﻣﺞ آﺧﺮ‬ ‫ﻣﺨﺼﺺ ﻟ ﺬا اﻟﻐﺮض‪ ،‬ﻓﺈذا أراد أن ﻳ‬
‫و ﻜﺬا دواﻟﻴﻚ‪.‬‬

‫أﻣﺎم ﺬﻩ اﻟﺘﻌﻘﻴﺪات‪ ،‬ﺎن ﻟﺰاﻣﺎ ﻋ اﳌﻌﻠﻮﻣﻴﺎت أن ﺗﺮ ﺑﻤﺠﺎل ﻧﻈﻤﺔ‪ ،‬ﻓﻈ ﺮ ﺟﻴﻞ‬


‫ﺟﺪﻳﺪ ﻣﻦ اﻟ ﻣﺠﻴﺎت ﻌﺘﻤﺪ ﻋ اﻟﺸﺒ ﺎت ‪ ،Networking platforms‬ﺑﺤﻴﺚ ﺴﻤﺢ ﺬﻩ‬
‫اﻟﺒ ﻴﺔ ا ﺪﻳﺪة ﺑﺘﻘﺴﻴﻢ اﳌ ﺎم ﺑ ن ﺟ ﺰة واﻟﺮ ﻂ ﻓﻴﻤﺎ ﺑﻴ ﺎ ﻋ اﻟﻮﺳﻴﻂ اﻟﺸﺒ ﻲ‪ ،‬ﻓﻌ‬
‫ﺳ ﻴﻞ اﳌﺜﺎل ﻟﻮ أردﻧﺎ ﻧﻈﺎﻣﺎ ﻣﺘﺼﻼ ﺑﻘﺎﻋﺪة ﺑﻴﺎﻧﺎت‪ ،‬ﻧﻘﻮم ﺑﺈﻋﺪاد ﺟ ﺎز ﺳ ﭬﺮ ﻧﻀﻊ ﻋﻠﻴﮫ‬
‫ﺑﺮﻧﺎﻣﺞ إدارة ﻗﻮاﻋﺪ اﻟﺒﻴﺎﻧﺎت‪ ،‬ﺛﻢ ﻧﻘﻮم ﺑﺘ ﺒ ﺖ اﻟﺘﻄﺒﻴﻖ ﻋ ﻣﺨﺘﻠﻒ ا ﻮاﺳ ﺐ اﻟﻌﻤﻴﻠﺔ‬
‫اﻟ ﻧﺮﺪ ﺎ أن ﺗﺘﻌﺎﻣﻞ ﻣﻌﮫ‪ ،‬وﻣﻨﮫ ﺳﻤﻴﺖ ﺬﻩ اﻟﺒ ﻴﺔ ﺑﺒ ﻴﺔ ﺧﺎدم ‪ /‬ﻋﻤﻴﻞ ‪Client‬‬
‫‪./Server -‬‬

‫وﻇ ﺮت ﻛﺬﻟﻚ ﺑ ﻴﺎت أﺧﺮى‪ ،‬ﻟﻌﻞ أﺑﺮز ﺎ ﺑ ﻴﺔ ﻧﻈﻤﺔ اﳌﻮﺟ ﺔ ﺧﺪﻣﻴﺎ ‪Service Oriented‬‬
‫‪ Architecture‬واﳌﻌﺮوﻓﺔ اﺧﺘﺼﺎرا ب ‪ ،SOA‬ﺬﻩ ﻧﻈﻤﺔ اﻟ ﺗ ﻮن ﻋﺎدة ﺣﺎﺟﺔ إ‬

‫]‪[3‬‬
‫ﺗﺼﺎل ﺑﺨﺪﻣﺎت اﻟﻮ ﺐ ﻐﺮض ﺳﺘﻔﺎدة ﻣ ﺎ ﻋ اﻟﻮﺻﻮل إ اﻟﻮﻇﺎﺋﻒ ‪Methods‬‬
‫اﻟ ﺗﻘﺪﻣ ﺎ ﻓ ﺴﺘﺨﺪﻣ ﺎ‪.‬‬

‫واﻋﺘﻤﺪت ﻧﻈﻤﺔ اﳌﻮﺟ ﺔ ﺧﺪﻣﻴﺎ ﻋ ﺗﻘﻨﻴﺎت ﻋﺪﻳﺪة ﺴﻤﺢ ﺑﻨﻘﻞ اﻟﺒﻴﺎﻧﺎت اﻟ ﻣﺠﻴﺔ‬
‫ﻧ ﻧﺖ أو اﻟﺸﺒ ﺎت ا ﻠﻴﺔ‪ ،‬ﻷﻧﮫ‬ ‫)اﻟ ﺎﺋﻨﺎت ‪ (Objects‬ﺑ ن ﻣﺨﺘﻠﻒ ﻣ ﻮﻧﺎت اﻟﻨﻈﺎم ﻋ‬
‫ﺎز‪ ،‬إذ أن‬ ‫ﺬﻩ اﻟﺒ ﻴﺔ أن ﺗ ﻮن ﻣ ﻮﻧﺎت ﻧﻈﺎم ﻣﻌ ن ﻣﻮﺟﻮدة ﻋ ﻧﻔﺲ ا‬ ‫ﻟ ﺲ ﻟﺰاﻣﺎ‬
‫ﺬﻩ‬ ‫ﺬﻩ اﻟﺒ ﻴﺔ ﻣﻌﺪة ﺧﺼﻮﺻﺎ ﻟﻸﻧﻈﻤﺔ اﻟ ﺗﺘﻤ ﺑ ﺒﺎﻋﺪ ﻣ ﻮﻧﺎ ﺎ ﺟﻐﺮاﻓﻴﺎ‪ ،‬و ﺴ‬
‫ﻧﻈﻤﺔ ﺑﺎﻷﻧﻈﻤﺔ اﳌﻮزﻋﺔ ‪.Distributed Systems‬‬

‫ﻣﻦ ﻏ ﺷﻚ ﺳﺒﻖ ﻟﻚ وأن ﺳﻤﻌﺖ ﺑﺎﻷﻧﻈﻤﺔ اﳌﻮزﻋﺔ أو اﻟﺘﻄﺒﻴﻘﺎت اﳌﻮزﻋﺔ ‪Distributed‬‬


‫‪ ،Applications‬ﻓ ﺑ ﻞ ﺴﺎﻃﺔ أﻧﻈﻤﺔ ﻣﺮﻛﺒﺔ وﻋﻨﺎﺻﺮ ﺎ ﻣﺘﻔﺮﻗﺔ ﻣ ﺎﻧﻴﺎ‪ ،‬وﺗﺘﻮاﺻﻞ ﺎﺗﮫ‬
‫ﻧ ﻧﺖ أو ﻋ اﻟﺸﺒﻜﺔ ا ﻠﻴﺔ‬ ‫ﻟﻴﺎت اﻟﺸﺒﻜﻴﺔ‪ ،‬إﻣﺎ ﻋ‬ ‫اﻟﻌﻨﺎﺻﺮ ﻓﻴﻤﺎ ﺑﻴ ﺎ ﻋ‬
‫ﻟﻠﻤﺆﺳﺴﺔ‪.‬‬

‫ﻋﻤﻠﻴﺔ ﺗﺒﺎدل اﻟ ﺎﺋﻨﺎت ﺑ ن ﻣﺨﺘﻠﻒ ﻣ ﻮﻧﺎت اﻟﻨﻈﺎم اﳌﻮزع ﺗﺤﺘﺎج إ ﻌﺾ اﻟﺘﻘﻨﻴﺎت‬


‫اﳌﺘﻘﺪﻣﺔ‪ ،‬ﻣﺜﻞ ﺗﻘﻨﻴﺔ ﺧﺪﻣﺎت اﻟﻮ ﺐ ‪ ،Web Services‬ﺗﻘﻨﻴﺔ ‪ ،.net remoting‬ﺗﻘﻨﻴﺔ ‪RMI‬‬
‫ﺴﻤﺢ ﺑﺎﻟﺘﻮاﺻﻞ ﺑ ن‬ ‫ﻟﻐﺔ ﺟﺎﻓﺎ‪ ،‬ﺗﻘﻨﻴﺔ )‪ COM (Component Object Model‬اﻟ‬
‫ﺎز‪ ،‬وﺗﻘﻨﻴﺔ )‪DCOM (Distributed COM‬‬ ‫اﻟﺘﻄﺒﻴﻘﺎت واﳌ ﻮﻧﺎت اﳌﻮﺟﻮدة ﻋ ﻧﻔﺲ ا‬
‫ﺔ اﳌﻮزﻋﺔ ﻣﻦ ﺗﻘﻨﻴﺔ ‪ COM‬ﺑﺤﻴﺚ ﺴﻤﺢ ﺑﺎﻟﺘﻮاﺻﻞ ﺑ ن اﻟﺘﻄﺒﻴﻘﺎت‬ ‫ﻌﺘ اﻟ‬ ‫اﻟ‬
‫واﳌ ﻮﻧﺎت اﳌﻮﺟﻮدة ﻋ ﻋﺪة أﺟ ﺰة ﻋ اﺳﺘﺨﺪام اﻟﺸﺒ ﺎت‪ ،‬و ﻮﺟﺪ ﻣﺎ ﻮ أﺣﺪث ﻣ ﺎ‬
‫ﻛﺘﻘﻨﻴﺔ ‪ ،COM+‬وﺗﻘﻨﻴﺎت أﺧﺮى ﻛﺜ ة إﻻ أﻧﻨﺎ ﺳﻨﻐﺾ اﻟﻄﺮف ﻋ ﻢ ﻠ ﺎ وﻧﺮﻛﺰ ﻓﻘﻂ‬

‫]‪[4‬‬
‫ﺬا اﻟﻜﺘ ﺐ ا ﺘﺼﺮ‪ ،‬ﻓﻤﺎ‬ ‫ﻋ ﺻﺪﻳﻘﺘﻨﺎ اﻟﻐﺎﻟﻴﺔ ‪ ،WCF‬وﺳﻮف ﻧ ﻨﺎوﻟ ﺎ ﺑﺈذن ﷲ‬
‫ﺗﻘﻨﻴﺔ ‪WCF‬؟ وﻣ ﻇ ﺮت؟ وﳌﺎذا ﺳﻨﺤﺘﺎﺟ ﺎ؟ وإذا اﺣﺘﺠﻨﺎ ﺎ ﻛﻴﻒ ﺴﺘﺨﺪﻣ ﺎ ؟‬

‫ﺑﺪاﻳﺔ‪ ،‬ﻓﺈن ﺗﻘﻨﻴﺔ ‪ WCF‬ﻌﺪ اﺧﺘﺼﺎرا ل ‪،Windows Communication Foundation‬‬


‫وﻗﺪ ﺻﺎﺣﺒﺖ إﺻﺪار اﻟﺪوت ﻧ ﺖ ﻓﺮ ﻤﻮورك ‪ ،3.5‬وﻃﺮﺣ ﺎ ﻣﻴﻜﺮوﺳﻮﻓﺖ ﻛﺘﻘﻨﻴﺔ ﺑﺪﻳﻠﺔ‬
‫ﻧﻈﻤﺔ اﳌﻮزﻋﺔ ﻹ ﺎء ﻣﺸﺎ ﻞ ﻋﺪم اﻟﺘﻮاﻓﻘﻴﺔ ﺑ ن ﻣ ﻮﻧﺎت‬ ‫ﻟﻠﺘﻘﻨﻴﺎت اﳌﺴﺘﺨﺪﻣﺔ‬
‫اﻟﻨﻈﺎم‪.‬‬

‫ﻮﺎ‬ ‫اﻟﺘﻄﺒﻴﻘﺎت اﳌﻮزﻋﺔ أن ﻣ ﻮﻧﺎ ﺎ ﻗﺎﺑﻠﺔ ﻹﻋﺎدة ﺳﺘﺨﺪام‪ ،‬إﺿﺎﻓﺔ إ‬ ‫ا ﻤﻴﻞ‬


‫ﻧﻔﺲ اﻟﻮﻗﺖ‪ ،‬و ﺟﻤﻞ ﻣﻦ ﺬا‬ ‫ﻣ ﻴﺄة ﻟﻼﺳﺘﺨﺪام اﳌﺘﻌﺪد ﻣﻦ ﻃﺮف ﻋﺪة ﺗﻄﺒﻴﻘﺎت‬
‫وذاك أن ﺬﻩ اﳌ ﻮﻧﺎت ﻣﺨﻔﻴﺔ ﻋﻦ ﻋ ن اﳌﺴﺘﺨﺪم اﻟ ﺎ ﻲ ‪ End User‬اﻟﺬي ﻻ ﻌﻠﻢ ﻣﺎ‬
‫اﻟﺬي ﻳﺠﺮي ﺧﻔﺎﻳﺎ اﻟﻨﻈﺎم اﻟﺬي ﺴﺘﻌﻤﻠﮫ‪ ،‬إذ ﻞ ﻣﺎ ﺗﻘﻊ ﻋﻠﻴﮫ ﻋﻴﻨﺎﻩ ﻳﺘﻤﺜﻞ واﺟ ﺎت‬
‫ﺳﺘﺨﺪام‪ ،‬إﻣﺎ ﻧﻤﺎذج و ﻨﺪوز ‪ Windows Forms‬أو ﺻﻔﺤﺎت و ﺐ ‪.Web Forms‬‬

‫ﻣﻦ ﺗﻘﻨﻴﺔ ‪ WCF‬ﻮ اﻟﺴﻤﺎح ﺑﻨﻘﻞ اﻟ ﺎﺋﻨﺎت ‪ Objects‬ﻋ اﻟﺸﺒ ﺎت‬ ‫اﻟ ﺪف اﻟﺮﺋ‬
‫ﻧ ﻧﺖ ﻣﻦ أﺟﻞ ﺗﻤﻜ ن اﻟﺘﻄﺒﻴﻘﺎت اﻟ ﺗﺤﺘﺎج ﺬﻩ‬ ‫ا ﻠﻴﺔ ﻟﻠﻤﺆﺳﺴﺎت أو ﻋ‬
‫اﻟ ﺎﺋﻨﺎت ﻣﻦ اﻟﻮﺻﻮل إ وﻇﺎﺋﻔ ﺎ واﺳﺘﻌﻤﺎﻟ ﺎ‪.‬‬

‫ﻟﻌﻤﻞ ذﻟﻚ‪ ،‬ﻻﺑﺪ ﻣﻦ اﺳﺘﻀﺎﻓﺔ ﺧﺪﻣﺎت ‪ WCF‬ﻋ ﺟ ﺎز ﺳ ﭬﺮ‪ ،‬وإﻋﺪادﻩ ﺑﻜﻴﻔﻴﺔ ﺗﺠﻌﻠﮫ‬
‫ﻗﺎدرا ﻋ اﻟﺘﺠﺎوب ﻣﻊ اﺳﺘﻌﻼﻣﺎت اﻟﻌﻤﻼء ‪.Clients‬‬

‫ﺟ ﺰة اﻟﻌﻤﻴﻠﺔ‬ ‫ﻣﻦ ﺟ ﺔ اﻟﻌﻤﻴﻞ ‪ ،Client Side‬وﻧﺘﺤﺪث ﻨﺎ ﻋﻦ اﻟﺘﻄﺒﻴﻖ اﳌﺜ ﺖ ﻋ‬


‫اﻟ ﺳ ﺴﺘﺨﺪم ﺧﺪﻣﺎت ‪ WCF‬اﳌﺮﻓﻮﻋﺔ ﻋ ﺳ ﭬﺮ‪ ،‬ﻓﻼ ﺑﺪ أن ﻧﻮﻓﺮ ﻟ ﺬا اﻟﺘﻄﺒﻴﻖ‬

‫]‪[5‬‬
‫ﺴﻤﺢ ﻟﮫ ﺑﺎﻻﺗﺼﺎل ﺑﺨﺪﻣﺎت ‪ WCF‬واﺳﺘﻌﻤﺎﻟ ﺎ‬ ‫اﻟﻌﻤﻴﻞ ﺟﻤﻴﻊ اﳌﻌﻠﻮﻣﺎت ﺳﺎﺳﻴﺔ اﻟ‬
‫ﺸ ﻞ ﺳﻠﻴﻢ‪.‬‬

‫]‪[6‬‬
‫أﺑﺠﺪﻳﺎت ﺗﻘﻨﻴﺔ ‪:WCF‬‬
‫ﻧﻈﻤﺔ اﳌﻌﻠﻮﻣﺎﺗﻴﺔ‪،‬‬ ‫ﻣﺮت ﻣ ﺎ ﺑ ﻴﺎت‬ ‫ﻃﻮار اﻟ‬ ‫ﻣﻘﺪﻣﺔ اﻟﻜﺘﺎب إ‬ ‫ﺗﻄﺮﻗﻨﺎ‬
‫ﻧﻈﻤﺔ اﳌﻮﺟ ﺔ ﺧﺪﻣﺎﺗﻴﺎ أو ﺧﺪﻣﻴﺎ ‪Service Oriented‬‬ ‫واﺳﺘﻌﺮﺿﻨﺎ ﻣﻌﺎ ﺑ ﻴﺔ‬
‫‪ Architecture‬اﳌﻌﺮوﻓﺔ اﺧﺘﺼﺎرا ب ‪ ،SOA‬ﻣﻤﺎ اﺳﺘﺪرﺟﻨﺎ إ ا ﺪﻳﺚ ﻋﻦ ﻧﻈﻤﺔ‬
‫اﳌﻮزﻋﺔ ‪ Distributed Systems‬وﻣﺎ ﺗﺤﺘﺎﺟﮫ ﻣﻦ ﺗﻘﻨﻴﺎت ﻟﺘﺒﺎدل اﻟﺒﻴﺎﻧﺎت ﺑ ن ﻣﺨﺘﻠﻒ‬
‫ﻣ ﻮﻧﺎ ﺎ اﳌﺘﺒﺎﻋﺪة ﺟﻐﺮاﻓﻴﺎ‪.‬‬

‫و ﻣﻌﺮض ﺣﺪﻳ ﻨﺎ ﻋﻦ ﺬﻩ اﻟﺘﻘﻨﻴﺎت رﻛﺰﻧﺎ ﻋ ﺗﻘﻨﻴﺔ ‪ ،WCF‬ﻌﺮﻓﻨﺎ ﻋﻠ ﺎ‪ ،‬ﻋ ﺗﺎر ﺨ ﺎ‪،‬‬


‫اﳌﺘﻤﺜﻞ اﻟﺴﻤﺎح ﺑﻨﻘﻞ اﻟ ﺎﺋﻨﺎت ‪ Objects‬ﻋ اﻟﺸﺒ ﺎت ا ﻠﻴﺔ‬ ‫ﺪﻓ ﺎ ﺳﺎ‬ ‫وﻋ‬
‫ﻧ ﻧﺖ ﻣﻦ أﺟﻞ ﺗﻤﻜ ن اﻟﺘﻄﺒﻴﻘﺎت اﻟ ﺗﺤﺘﺎج ﺬﻩ اﻟ ﺎﺋﻨﺎت ﻣﻦ‬ ‫ﻟﻠﻤﺆﺳﺴﺎت أو ﻋ‬
‫اﻟﻮﺻﻮل إ وﻇﺎﺋﻔ ﺎ ‪ Methods‬واﺳﺘﻌﻤﺎﻟ ﺎ‪.‬‬

‫آﻟﻴﺔ أﻧﺘﺠ ﺎ ﻣﻴﻜﺮوﺳﻮﻓﺖ ﻣﻦ‬ ‫وﻛﺨﻼﺻﺔ ﻟ ﻞ ﻣﺎ ﺳﻠﻒ ﻳﻤﻜﻨﻨﺎ اﻟﻘﻮل أن ﺗﻘﻨﻴﺔ ‪WCF‬‬
‫أﺟﻞ اﻟﺴﻤﺎح ﺑﺈ ﺸﺎء أﻧﻈﻤﺔ ذات ﺑ ﻴﺔ ﻣﻮﺟ ﺔ ﺧﺪﻣﻴﺎ ‪ ،SOA‬واﻟﻐﺮض ﻣ ﺎ ﻮ ﺗﺒﺎدل‬
‫اﻟﺒﻴﺎﻧﺎت ﺑ ن ﻣﺨﺘﻠﻒ ﻣ ﻮﻧﺎت اﻟﻨﻈﺎم ﻋ اﻟﻮﺳﻴﻂ اﻟﺸﺒ ﻲ )إﻣﺎ اﻧ ﻧﺖ أو ﺷﺒﻜﺔ ﻣﺤﻠﻴﺔ(‪.‬‬

‫ﻣﺪار ﻞ ﺬﻩ اﻟﺘﻘﻨﻴﺔ ﻋ ا ﺪﻣﺎت ‪ ،Services‬اﻟ ﺗﻤﺜﻞ ﺑﺪور ﺎ ﺗﻄﺒﻴﻘﺎ ﺴﺘﻘﺒﻞ‬


‫ﻃﻠﺒﺎت اﻟﻌﻤﻼء ‪ Requests‬و ﻘﻮم ﺑﺈرﺟﺎع اﻟﺮﺳﺎﺋﻞ ‪ Responses‬إﻟ ﻢ‪ ،‬ﺑﺼﺮف اﻟﻨﻈﺮ ﻋﻦ‬
‫ﺷﺎرب‬ ‫ﺗﻄﺒﻴﻘﺎ ﺑﻠﻐﺔ‬ ‫اﻟﺘﻘﻨﻴﺔ اﳌﺴﺘﺨﺪﻣﺔ ﻋ ﻣﺴﺘﻮى اﻟﻌﻤﻴﻞ‪ ،‬إذ ﻣﻦ اﳌﻤﻜﻦ أن ﻧ‬
‫أو ﻓﻴﺠﻮال ﺑ ﺴﻚ‪ ،‬ﺛﻢ ﻳﻘﻮم ﺗﻄﺒﻴﻖ ﻣ ﻣﺞ ﺑﻠﻐﺔ ﺟﺎﻓﺎ أو ‪ php‬ﺑﺎﻻﺳﺘﻔﺎدة ﻣﻨﮫ‪ ،‬و ﻮ ﻣﺎ‬
‫ﻌﺮف ﻋﺎﻣﺔ ﺧﺪﻣﺎت اﻟﻮ ﺐ ﺑﺎﻟﺘﻮاﻓﻘﻴﺔ ‪.Interoperability‬‬
‫]‪[7‬‬
‫ﻟﻜﻦ ﻛﻴﻒ ﻧﻘﻮم ﺑﺈ ﺸﺎء ‪Service‬؟ ﻛﻴﻒ ﺴﺘﻄﻴﻊ اﺳﺘﺪﻋﺎءﻩ؟ ﻛﻴﻒ ﻌﺮف ﻋﻨﻮان‬
‫اﻟﻮﺻﻮل إﻟﻴﮫ؟ ﻛﻴﻒ ﻌﺮف أﺳﻤﺎء اﻟﻮﻇﺎﺋﻒ اﻟ ﻳﻘﺪﻣ ﺎ؟ ‪..‬‬

‫ﺬﻩ ﺳﺌﻠﺔ ﻟ ﺲ ﺣﻜﺮا ﻋ ﺗﻘﻨﻴﺔ ‪ WCF‬ﻓﻘﻂ‪ ،‬ﺑﻞ ﻗﺪ ﺳﺒﻘ ﺎ‬ ‫ا ﻘﻴﻘﺔ ا ﻮاب ﻋ‬


‫ﺗﻘﻨﻴﺎت أﺧﺮى وﻗﺎﻣﺖ ﺑﺎﻋﺘﻤﺎد ﻧﻤﻂ ﻣﻮﺣﺪ ﺗﻔ ﻤﮫ ﺟﻤﻴﻊ اﻟﺘﻘﻨﻴﺎت‪ ،‬ﻓﻌ ﺳ ﻴﻞ اﳌﺜﺎل‬
‫ﺗﻘﻨﻴﺔ ‪ SOAP‬اﺗﺨﺬت ﻣﻦ ﻟﻐﺔ ‪ XML‬وﺳﻴﻄﺎ ﻟﻠﺘﻮاﺻﻞ ﺑ ن ﻣﺨﺘﻠﻒ اﻟﺘﻄﺒﻴﻘﺎت اﳌﺘﻌﺪدة‬
‫اﻟﺘﻘﻨﻴﺎت‪.‬‬

‫ﺑﻨﻘﺎط اﻟ ﺎﻳﺔ‬ ‫ﺗﻘﻨﻴﺔ ‪ WCF‬ﻓﺎﻟﺘﻮاﺻﻞ ﺑ ن اﻟﺘﻄﺒﻴﻘﺎت ﻳﺘﻢ ﻋ ﻣﺎ ﺴ‬ ‫أﻣﺎ‬


‫ﻞ ﻧﻘﻄﺔ ﺎﻳﺔ ﺗﻮﻓ اﳌﻌﻠﻮﻣﺎت اﻟﺜﻼﺛﺔ اﻟﺘﺎﻟﻴﺔ اﳌﻌﺮوﻓﺔ اﺧﺘﺼﺎرا ب‬ ‫‪ ،Endpoints‬وﻋ‬
‫‪:ABC‬‬

‫‪ .1‬اﻟﻌﻨﻮان ‪ :Address‬ﻣﻦ أﺟﻞ ﻣﻌﺮﻓﺔ راﺑﻂ اﻟﻮﺻﻮل إ ‪Service‬‬


‫‪ .2‬اﻟﺮ ﻂ ‪ :Binding‬ﻣﻦ أﺟﻞ ﺗﺤﺪﻳﺪ ﺧﺼﺎﺋﺺ ‪ ،Service‬ﻣﺜﻼ ﻣﺎ ﻮ ﺑﺮوﺗﻮ ﻮل‬
‫ﺗﺼﺎل اﳌﻌﺘﻤﺪ؟ ﻣﺎ ﻮ ﻣﺴﺘﻮى ا ﻤﺎﻳﺔ؟ ﻣﺎ ﻮ ﺗﺮﻣ ‪Service‬؟ وﻣﺎ إ ذﻟﻚ‪.‬‬
‫ﺗﻔﺎق ﻌﺮ ﻔﺎ ﻟ ﺎﻓﺔ ﻣ ﻮﻧﺎت ‪ ،Service‬ﻌﺮ ﻒ‬ ‫‪ .3‬ﺗﻔﺎق ‪ :Contract‬ﺸﻤﻞ‬
‫ﻋﻨﺎﺻﺮ ‪Service‬‬ ‫اﻟﻮﻇﺎﺋﻒ‪ ،‬ا ﺼﺎﺋﺺ‪ ،..‬إذ ﻳﻜﻔﻲ ﻗﺮاءة ﺗﻔﺎق ﳌﻌﺮﻓﺔ ﻣﺎ‬
‫اﻟﺬي ﻳﻘﻮم ﺑﺘﻄﺒﻴﻘ ﺎ‪.‬‬

‫ﺺ ﺣﺴﺐ‬ ‫ﻣﻦ إﻳﺠﺎﺑﻴﺎت ﺬا اﻟﺘﻘﺴﻴﻢ أﻧﮫ ﺴﻤﺢ ﺑﺘﻮز ﻊ اﳌ ﺎم‪ ،‬ﺑﺤﻴﺚ ﻳﺘ ﻠﻒ ﻞ‬


‫ﺗﺨﺼﺼﮫ ﺑﺠﺰء ﻣﻦ أﺟﺰاء اﻟﺜﻼﺛﻴﺔ أﻋﻼﻩ‪ ،‬ﻣﺜﻼ إ ﺸﺎء ﺗﻔﺎق و ﻌﺮﻒ اﻟﻮﻇﺎﺋﻒ اﳌ ﻮﻧﺔ‬
‫ﻟﻞ ‪ Service‬ﻳﺒﻘﻰ ﻣﻦ اﺧﺘﺼﺎص اﳌﻄﻮر ‪ ،Developer‬ﺑ ﻨﻤﺎ ﺗﺤﺪﻳﺪ ﺧﺼﺎﺋﺺ اﻟﺮ ﻂ‬

‫]‪[8‬‬
‫‪ Binding‬وﻋﻨﻮان اﻟﻮﺻﻮل إ ‪ Service‬ﻓﺘﺒﻘﻰ ﺿﻤﻦ ﻣ ﺎم ﻣﺪﻳﺮ اﻟﺸﺒﻜﺔ ‪Network‬‬
‫‪.Administrator‬‬

‫ﺴﻤﺢ ﺗﻘﻨﻴﺔ ‪ WCF‬ﺑﺎﻟﺘﻮاﺻﻞ ﻣﻊ ‪ Service‬ﻋ ﻋﺪة ﻗﻨﻮات ﻟﻼﺗﺼﺎل ) ‪ (...http, TCP,‬ﻣﻤﺎ‬


‫ﻌ أﻧﮫ ﻣﻦ اﳌﻤﻜﻦ ﻓﺘﺢ ﻋﺪة ﻧﻘﺎط ﺎﻳﺔ ‪ Endpoints‬ﻟﻼﺗﺼﺎل ب ‪ Service‬و ﺎﻟﺘﺎ‬
‫ﺴﺘﻄﻴﻊ اﻟﻌﻤﻴﻞ اﺧﺘﻴﺎر ﻃﺮﻘﺔ اﻟﺘﻮاﺻﻞ ﻣﻊ ‪ Service‬اﻟ ﺗﻨﺎﺳﺒﮫ‪.‬‬

‫]‪[9‬‬
‫إ ﺸﺎء ‪ Service‬ﺑﺎﺳﺘﻌﻤﺎل ﺗﻘﻨﻴﺔ ‪:WCF‬‬
‫ﻟﻨﺪﺧﻞ إ ﺑﺮﻧﺎﻣﺞ ﻓﻴﺠﻮال ﺳﺘﻮدﻳﻮ‪ ،‬وﻧﻘﻮم ﺑﺈ ﺸﺎء ﻣﺸﺮوع ﺟﺪﻳﺪ ﻣﻦ ﻧﻮع ‪WCF Service‬‬
‫اﻟﺼﻮرة اﻟﺘﺎﻟﻴﺔ‪:‬‬ ‫‪ Application‬ﻛﻤﺎ ﺗﻮ‬

‫ﺎ‬ ‫ﻌﺪ أن ﻳﺘﻢ ﻴﺌﺔ ﺑ ﺌﺔ اﻟﺘﻄﻮ ﺮ‪ ،‬ﺳﺘﻼﺣﻆ أن اﳌﺸﺮوع ﻗﺪ ﺟﺎء ﻣﻌﮫ ﻌﺪة ﻣﻠﻔﺎت ﺗﻮ‬
‫اﻟﺼﻮرة اﻟﺘﺎﻟﻴﺔ‪:‬‬

‫]‪[10‬‬
‫ﺗﺤﺪﺛﻨﺎ ﻗﺒﻞ ﻗﻠﻴﻞ ﻋﻦ اﻟﺘﻘﺴﻴﻢ )‪ ABC (Address, Binding, Contract‬ﻧﻈﺮﺎ‪ ،‬ن‬
‫ﺗﻤﺜﻴﻞ ﻓﻌ ﻟﺬﻟﻚ‪ ،‬ﻟﻜﻦ ﺬا ﻟﻦ ﻳﻤﻨﻌﻨﺎ ﻣﻦ ﺷﺮح أ ﻢ اﳌﻠﻔﺎت‬ ‫اﻟﺼﻮرة اﻟ ﺗﺮا ﺎ أﻋﻼﻩ‬
‫ﺎﻵ ﻲ‪:‬‬ ‫أﻋﻼﻩ و‬

‫أن ﻧﻘﻮم‬ ‫أن ﻧﻤﺮ ﺎ‪ ،‬ﺑﺤﻴﺚ ﻳ ﺒ‬ ‫‪ .1‬اﳌﻠﻒ ‪ :IService1.cs‬و أول ﻣﺮﺣﻠﺔ ﻳ ﺒ‬


‫ﺑﺘﻌﺮ ﻒ ﺟﻤﻴﻊ اﻟﻮﻇﺎﺋﻒ اﻟ ﺳﻴﻘﺪﻣ ﺎ ‪ Service‬ﻋ ﺷ ﻞ واﺟ ﺔ ‪) Interface‬ﳌﻦ‬
‫ﻻ ﻌﺮف اﻟﻮاﺟ ﺎت ﻳﺮ ﻗﺮاءة ﻣﻘﺎﻟﺔ "وﺟﻮﻩ ﺋﺘﻼف و ﺧﺘﻼف ﺑ ن اﻟﻔﺌﺎت‬
‫ﺬا اﻟﻌﺪد(‪.‬‬ ‫ا ﺮدة واﻟﻮاﺟ ﺎت" و ﻣ ﺸﻮرة‬
‫ﺬﻩ اﻟﻮاﺟ ﺔ ﻋﺎدة ب" ﺗﻔﺎق ‪ ،"Contract‬و ﻋﺒﺎرة ﻋﻦ ﻣﻠﻒ ﺑﺎﻣﺘﺪاد‬ ‫ﺴ‬
‫‪ .vb‬أو ‪ .cs‬ﺣﺴﺐ ﻟﻐﺔ اﻟ ﻣﺠﺔ اﳌﺴﺘﻌﻤﻠﺔ‪ ،‬و ﻞ اﻟﻮﻇﺎﺋﻒ اﳌﻌﺮﻓﺔ ﻋ ﻣﺴﺘﻮا ﺎ‬
‫ﺗ ﻮن ﻣﺴﺒﻮﻗﺔ ﺑﺎﻟﻮاﺻﻔﺔ ‪OperationContract‬‬
‫‪ .2‬اﳌﻠﻒ ‪ :Service1.svc‬ﺴﻤﺢ ﻟﻨﺎ ﺬا اﳌﻠﻒ ﺑ ﺸﺮ ‪ Service‬ﻋ راﺑﻂ ﻣﻌ ن ‪.URL‬‬
‫‪ .3‬اﳌﻠﻒ ‪ :Service1.svc.cs‬ﺬا اﳌﻠﻒ ﻋﺒﺎرة ﻋﻦ ﻓﺌﺔ ‪ Class‬ﺗﻘﻮم ﺑﺘﻄﺒﻴﻖ اﻟﻮاﺟ ﺔ‬
‫‪ IService‬و ﺎﻟﺘﺎ ﻳﻠﻮﻣ ﺎ إﻋﺎدة ﻌﺮ ﻒ ﺟﻤﻴﻊ وﻇﺎﺋﻔ ﺎ‪ ،‬ﻳﻤﻜﻨﻨﺎ ﺗ ﺴﻴﻂ اﳌﻌ أﻛ‬

‫]‪[11‬‬
‫ﻓﻨﻘﻮل أن اﻟﻮاﺟ ﺔ ﺗﻘﻮم ﺑﻮﺻﻒ اﻟﻮﻇﺎﺋﻒ ‪ ،Specification‬ﺑ ﻨﻤﺎ ﺗﻘﻮم اﻟﻔﺌﺔ اﻟ‬
‫ﻌﻤﻞ ‪ implement‬ﻟ ﺬﻩ اﻟﻮاﺟ ﺔ ﺑ و ﺪ اﻟﻮﻇﺎﺋﻒ اﳌﻌﻠﻦ ﻋ ﺎ ﺑﺎﻷواﻣﺮ اﻟ ﻣﺠﻴﺔ‬
‫اﻟﻼزﻣﺔ و ﻮ ﻣﺎ ﻌﺮف ب ‪.Implementation‬‬
‫‪ .4‬اﳌﻠﻒ ‪ :Web.config‬ﺴﻤﺢ ﻟﻨﺎ ﺬا اﳌﻠﻒ ﺑﺎﻟﺘﺤﻜﻢ إﻋﺪادات ‪ Service‬وﻧﻘﺎط‬
‫اﻟ ﺎﻳﺔ ‪.endpoints‬‬

‫إذا ﻗﻤﻨﺎ ﺑ ﻨﻔﻴﺬ اﻟﺘﻄﺒﻴﻖ ﻋ اﻟﻀﻐﻂ ﻋ اﻟﺰر ‪ ،F5‬ﺳﺘﻼﺣﻆ أن اﻟﺘﻄﺒﻴﻖ ﻓﺘﺢ ﻋ‬


‫راﺑﻂ ‪ Service‬ﻋ اﻟﻀﻐﻂ ﺑﻴﻤ ن اﻟﻔﺄرة‬ ‫ﺗﻄﺒﻴﻖ اﺳﻤﮫ ‪ ،WCF Test Client‬ﻳﻤﻜﻨﻨﺎ‬
‫ﻋ اﻟﺮاﺑﻂ ﻛﻤﺎ ﻳ ‪:‬‬

‫ﺛﻢ ﻧﺬ ﺐ إ أﺣﺪ ﻣﺘﺼﻔﺤﺎت اﻟﻮ ﺐ )ﻏﻮﻏﻞ ﻛﺮوم ﻣﺜﻼ( وﻧﻘﻮم ﺑﻠﺼﻖ اﻟﺮاﺑﻂ ﻟﺘﻈ ﺮ ﻟﻨﺎ‬
‫اﻟﺼﻔﺤﺔ اﻟﺘﺎﻟﻴﺔ‪:‬‬
‫]‪[12‬‬
‫ﻛﻤﺎ ﺗﻼﺣﻆ ﻓﺎﻟﺼﻮرة أﻋﻼﻩ ﺗﺨ ﻧﺎ أﻧﮫ ﺗﻢ إ ﺸﺎء ‪ Service‬وأﻧﮫ ﺟﺎ ﺰ ﻟﻼﺳﺘﺨﺪام ﻣﻦ ﻗﺒﻞ‬
‫اﻟﻌﻤﻴﻞ‪ ،‬ﻛﻤﺎ ﺗﻘﺪم ﻟﻨﺎ ﻧﻤﺎذج ﻟﻜﻴﻔﻴﺔ اﺳﺘﺨﺪام ‪ Service‬ﻋ ﻣﺴﺘﻮى اﻟﻌﻤﻴﻞ ﺑﺎﺳﺘﺨﺪام‬
‫ﺷﺎرب‪.‬‬ ‫ﻟﻐ اﻟﻔﻴﺠﻮال ﺑ ﺴﻚ و‬

‫ن ﻟﻨﻌﺪ إ اﳌﺸﺮوع‪ ،‬وﻧﻘﻮم ﺑﺎﻟﺪﺧﻮل إ اﻟﻮاﺟ ﺔ ‪:IService1.cs‬‬

‫]‪[13‬‬
[ServiceContract]
public interface IService1
{
[OperationContract]
string GetData(int value);

[OperationContract]
CompositeType GetDataUsingDataContract(CompositeType
composite);
}

‫ﺴﺒﻖ ﻋﻤﻠﻴﺔ‬ ‫[ اﻟ‬ServiceContract] ‫ء ﻳﻘﻊ ﻧﻈﺮﻧﺎ ﻋﻠﻴﮫ ﻮ اﻟﻮاﺻﻔﺔ‬ ‫اﳌﻔ ض أول‬


WCF ‫ ﺪﻣﺎت‬Contract ‫ﻮن ﺬﻩ ﺧ ة ﺗﻤﺜﻞ اﺗﻔﺎﻗﺎ‬ ‫اﻟﺘﺼﺮ ﺢ ﻋﻦ اﻟﻮاﺟ ﺔ وﺗﺪل ﻋ‬
‫ﺴﺒﻖ اﻟﺘﺼﺮ ﺢ ﻋﻦ اﻟﻮﻇﺎﺋﻒ‬ ‫[ اﻟ‬OperationContract] ‫ وﻛﺬﻟﻚ اﻟﻮاﺻﻔﺔ‬،Service
Service ‫وﺗﺪل ﻋ أن ﺬﻩ ﺧ ة ﺟﺰء ﻣﻦ اﻟﻮاﺟ ﺔ اﻟ ﺗﻤﺜﻞ اﺗﻔﺎﻗﻴﺔ ا ﺪﻣﺔ‬
.Contract

‫ و‬،‫ﺗﺤﺘﻮي ﺬﻩ اﻟﻮاﺟ ﺔ اﻟ ﺗﻢ إ ﺸﺎؤ ﺎ اﻓ اﺿﻴﺎ اﳌﺸﺮوع ﻋ وﻇﻴﻔﺘ ن اﺛ ﺘ ن‬


‫ واﻟﺜﺎﻧﻴﺔ اﺳﻤ ﺎ‬.value ‫اﺳﻤﮫ‬ ‫ و ﺴﺘﻘﺒﻞ ﺑﺮاﻣ ا ﻣﻦ ﻧﻮع رﻗ‬GetData ‫اﺳﻤ ﺎ‬
‫ اﺳﻤﮫ‬CompositeType ‫ﺴﺘﻘﺒﻞ ﺑﺮاﻣ ا ﻣﻦ ﻧﻮع‬ ‫ و‬GetDataUsingDataContract
.composite

[14]
‫ﺗﺬﻛﺮة ﺧﺘﺎﻣﻴﺔ وﻣﺜﺎل ﻣﻦ ﻋﻤﻖ ‪:WCF‬‬
‫رأﻳﻨﺎ اﻟﻔﺼﻞ اﻟﺴﺎﺑﻖ اﻟﺴﺎﺑﻖ ﻛﻴﻒ ﻧﻘﻮم ﺑﺈ ﺸﺎء أول ﻣﺸﺮوع ﺑﺘﻘﻨﻴﺔ ‪ WCF‬ﻋ ﺑ ﺌﺔ‬
‫ﻏﻀﻮن ا ﺼﺔ إ ﺷﺮح ﻣﺨﺘﻠﻒ اﳌﻠﻔﺎت اﻟ ﺗﺄ ﻲ ﻣﻊ‬ ‫اﻟﻔﻴﺠﻮال ﺳﺘﻮدﻳﻮ‪ ،‬وﺗﻄﺮﻗﻨﺎ‬
‫ﺬﻩ اﻟﻨﻮﻋﻴﺔ ﻣﻦ اﳌﺸﺎر ﻊ‪ ،‬ﻌﺪ أن ﻗﺪﻣﻨﺎ ﻟﻠﻨﻤﻮذج )‪ABC (Address, Binding, Contract‬‬
‫اﻟﺬي ﺗﺘ ﻨﺎﻩ ﺗﻘﻨﻴﺔ ‪.WCF‬‬

‫ﺣﺼﺔ اﻟﻴﻮم إن ﺷﺎء ﷲ ﺳﻮف ﺴﺘﻤﺮ ﻣﻊ ﺬﻩ اﻟﺘﻘﻨﻴﺔ اﻟﻘﻮ ﺔ‪ ،‬اﻟ ﺑﺎﺗﺖ ﺗﻠﻌﺐ دورا‬
‫ﺻﻨﺎﻋﺔ ﻧﻈﻤﺔ اﳌﻮزﻋﺔ‪ ،‬ﻟﻜﻦ ﻗﺒﻞ ﻣﺒﺎﺷﺮة ذﻟﻚ ﻌﺎﻟﻮا ﺑﻨﺎ ﻧﺠﻴﺐ ﻋ ﺳﺆال‬ ‫ﺑﺎرزا‬
‫ﺬا اﻟﺼﻨﻒ ﻣﻦ اﻟﺒ ﻴﺎت‪:‬‬ ‫ﻳﻨ ﺶ دﻣﺎغ ﻞ ﻣﻘﺒﻞ ﻋ‬

‫ﳌﺎذا ﺳﻨﺤﺘﺎج إ إ ﺸﺎء ﺗﻄﺒﻴﻖ ﺣﺎﺟﺔ إ اﻟﺘﻮاﺻﻞ ﻣﻊ ﺗﻄﺒﻴﻖ آﺧﺮ؟‬

‫و ﺼﻴﻐﺔ أﺧﺮى‪:‬‬

‫ﻣ ﻧﺤﺘﺎج إ ﺑﺮﻣﺠﺔ ﺗﻄﺒﻴﻖ ﻻ ﻳﻜﺘﻤﻞ ﻋﻤﻠﮫ إﻻ ﻇﻞ ﺗﻮاﺻﻠﮫ ﻣﻊ ﺗﻄﺒﻴﻖ آﺧﺮ؟‬

‫ا ﻮاب ﻋﻦ ﺬا اﻟﺴﺆال وﻏ ﻩ ﻣﻦ ﺳﺌﻠﺔ اﳌﻤﺎﺛﻠﺔ )أﺳﻤ ﺎ اﻟﺮواﻓﺪ اﻟ ﺗﺼﺐ آﺧﺮ‬


‫ﻧﻈﻤﺔ اﳌﻮزﻋﺔ( ﻳﻤﻜﻦ ﺗﻨﻮ ﻌﮫ ﺣﺴﺐ ا ﺎﺟﺔ‬ ‫اﺳﺘﺨﺪام‬ ‫ﺑﺤﺮ دوا‬ ‫اﳌﻄﺎف‬
‫اﻟ ﻣﺠﻴﺔ‪.‬‬
‫ً‬
‫ﻓﺈن ا ﺎﺟﺔ إ أﻧﻈﻤﺔ ﻣﻮزﻋﺔ وﺗﻄﺒﻴﻘﺎت ﺗﺘﻮاﺻﻞ ﻓﻴﻤﺎ ﺑﻴ ﺎ ﺗ ﻮن ُﻣ ِ ﱠ ﺔ ﺣﻴﻨﻤﺎ ﻧﺮ ﺪ‬
‫ﺗﺮﻛ اﻟﺒﻴﺎﻧﺎت ﻧﻘﻄﺔ واﺣﺪة ﻣﺘﻌﺪدة اﻟﻔﺮوع‪ ،‬ﺄن ﻳﺘﻢ اﻟﺘﻮاﺻﻞ ﺑ ن ﻧﻈﻤﺔ اﻟﻌﻤﻴﻠﺔ‬
‫اﳌﻮزﻋﺔ ﻋ ﻋﺪة أﺟ ﺰة‪ ،‬و ن اﻟﻨﻈﺎم اﳌﺮﻛﺰي اﳌﺜ ﺖ ﻋ ﺟ ﺎز اﻟﺴ ﭬﺮ‪ .‬أو ﺣﻴﻨﻤﺎ ﻧﺮ ﺪ‬
‫]‪[15‬‬
‫إ ﺸﺎء ﺗﻄﺒﻴﻖ ﺣﺎﺟﺔ إ ﻣﻮارد ﺧﺎرﺟﻴﺔ ﻻ ﻳﻤﻜﻨﮫ اﻟﻮﺻﻮل إﻟ ﺎ إﻻ ﻋ وﺳﻴﻂ ﺷﺒ ﻲ‬
‫)أﻧ ﻧﺖ‪ ،‬ﺷﺒ ﺎت داﺧﻠﻴﺔ أو ﺧﺎرﺟﻴﺔ(‪ .‬أو ﺣﻴﻨﻤﺎ ﻧﺮ ﺪ ﺗﻘﺴﻴﻢ اﳌ ﺎم ﺑ ن ﻋﺪة ﺗﻄﺒﻴﻘﺎت‬
‫ﻟﺮﻓﻊ ﺟﻮدة اﻟﻨﻈﺎم و ﺴ ﻴﻞ ﻋﻤﻠﻴﺎت اﻟﺼﻴﺎﻧﺔ واﳌﺘﺎ ﻌﺔ‪ .‬أو ﺣﻴﻨﻤﺎ ﻧﺮ ﺪ اﺳ ﺜﻤﺎر ﻣﻨﺎﻓﻊ‬
‫ﺗﻄﺒﻴﻘﺎت ﺟﺎ ﺰة و ﺴﺘﻌﻤﻠ ﺎ ﺗﻄﺒﻴﻘﻨﺎ ﺑﺪل إﻋﺎدة ﺑﺮﻣﺠ ﺎ ﻣﻦ اﻟﺼﻔﺮ ور ﻤﺎ ﺑﺠﻮدة ﺗﻘﻞ‬
‫إ‬ ‫ﻋﻦ ﺗﻠﻚ اﻟ ﺗﺘﺼﻒ ﺎ اﻟﺘﻄﺒﻴﻘﺎت ا ﺎ ﺰة اﻟ ﺗﻠ ﺣﺎﺟﺘﻨﺎ‪ .‬أو ﺣﻴﻨﻤﺎ ﺴ‬
‫اﻟﺘﺤﻜﻢ ﺗﻄﺒﻴﻖ ﻣﻌ ن ﻋ ﺗﻄﺒﻴﻖ آﺧﺮ‪ .‬وﻗﺲ ﻋ ذﻟﻚ‪...‬‬

‫ﺣﺎﺟﺔ ﻣﺎﺳﺔ‬ ‫ﻟ ﺴﺖ ﺗﺮﻓﺎ ﺑﻘﺪر ﻣﺎ‬ ‫ﺬا اﻟﻨﻤﻂ اﻟﺒ ﻴﻮي اﻟ ﻣ‬ ‫ﺗﺒ‬ ‫إذن ﻓﺪوا‬
‫ﺗﻔﺮﺿ ﺎ ﻃﺒﻴﻌﺔ ﻧﻈﻤﺔ اﳌﺮاد إﺣﺪا ﺎ وﻛﺬﻟﻚ ﺳﺮﻋﺔ ﺗﻄﻮر ﺗﻜﻨﻮﻟﻮﺟﻴﺎ اﳌﻌﻠﻮﻣﻴﺎت اﻟ‬
‫ْ ً‬
‫ﻧﻤﺎط اﻟ ﻣﺠﻴﺔ اﻟﻜﻼﺳﻴﻜﻴﺔ ِﺑ َﻴﺔ ﻟﻢ ﻌﺪ ﺗﺼ ﳌﻮاﻛﺒﺔ ﻣﺴﺘﺠﺪات‬ ‫ﺑﺎﺗﺖ ﺗﺮى‬
‫اﻟﻌﺼﺮ‪.‬‬

‫ﺬا‬ ‫ﷲ‪ ،‬ﻟﻨﻮاﺻﻞ اﳌﺸﻮار اﻟﺬي ﺑﺪأﻧﺎﻩ ﻣﻊ ﺗﻘﻨﻴﺔ ‪ ،WCF‬و‬ ‫ن ﻌﺎﻟﻮا ﺑﻨﺎ أﺣﺒ‬
‫ا ﺰء اﻟﺜﺎﻟﺚ ﺑﺤﻮل ﷲ‪ ،‬ﺳﻨﻘﻮم ﺑﺈ ﺸﺎء ﺗﻄﺒﻴﻖ ﻣﻦ ﻧﻮع ﺧﺪﻣﺔ‪ ،‬وﺳﻨﻘﻮم ﺑﺎﺳﺘﻀﺎﻓﺘﮫ‪،‬‬
‫ﺛﻢ ﻌﺪ ذﻟﻚ ﺳﻨﻘﻮم ﺑﺎﻻﺗﺼﺎل ﺑﮫ ﻣﻦ ﺗﻄﺒﻴﻖ آﺧﺮ ﻟ ﻲ ﻧﻈﻔﺮ ﺑﻤﺎ ﻳﻘﺪﻣﮫ ﻣﻦ وﻇﺎﺋﻒ‪،‬‬
‫ﺬا اﻟﻨﻮع ﻣﻦ اﻟﺒ ﻴﺎت اﳌﻌﻠﻮﻣﺎﺗﻴﺔ اﳌﺘﻘﺪﻣﺔ‪ ،‬ﻋﻦ‬ ‫ﻣﺤﺎوﻟﺔ ﺴﻴﻄﺔ ﻣﻨﺎ إ اﻟﺘﺪﻟﻴﻞ ﻋ‬
‫اﻟﺒ ﻴﺎت اﳌﻮﺟ ﺔ ﺧﺪﻣﺎﺗﻴﺎ ‪ SOA‬أﺗﺤﺪث‪.‬‬

‫ﺴﺎب اﻟﻮزن اﳌﺜﺎ ﻟﻠﺬ ﻮر و ﻧﺎث‪ ،‬ﺑﺤﻴﺚ‬ ‫اﳌﺜﺎل اﻟﺬي ﺳﻨﻌﻤﻞ ﻋﻠﻴﮫ‪ ،‬ﻮ ﺗﻄﺒﻴﻖ‬
‫ﺬﻩ‬ ‫ء ﺗﻄﺒﻴﻘﺎ ﻳﻄﻠﺐ ﻣﻦ اﳌﺴﺘﺨﺪم إدﺧﺎل ﺟ ﺴﮫ وﻃﻮﻟﮫ ﺑﺎﻟﺴ ﺘﻤ ‪ ،‬و ﻨﺎء ﻋ‬ ‫ﺳﻨ‬
‫اﳌﺪﺧﻼت‪ ،‬ﺳ ﺘﻢ اﺳﺘﺪﻋﺎء داﻟﺔ ﻣﻮﺟﻮدة ﻋ ‪ Service‬ﻣﺴﺘﻀﺎف ﻋ ﺳ ﻓﺮ‪ ،‬ﻓ ﺴﺘﻘﺒﻞ‬
‫ﺎﺗﮫ اﻟﺪاﻟﺔ اﻟﻘﻴﻢ اﳌﺮﺳﻠﺔ وﺗﺤﺴﺐ اﻟﻮزن اﳌﺜﺎ ‪.‬‬

‫]‪[16‬‬
‫ﺎص ﻳ ﻮن‬ ‫ﻗﺒﻞ أن ﻧﺒﺎﺷﺮ اﻟﻌﻤﻞ‪ ،‬ﻳ ﺒ أن ﻌﻠﻢ أن ﺻﻴﻐﺔ ﺣﺴﺎب اﻟﻮزن اﳌﺜﺎ ﻟﻸ‬
‫ﻋ اﻟﺸ ﻞ اﻟﺘﺎ ‪:‬‬

‫إذا ﺎن ا ﺲ ذﻛﺮا‪ ،‬ﻓﺈن اﻟﻮزن اﳌﺜﺎ ﺴﺎوي اﻟﻄﻮل ﻧﺎﻗﺺ ‪ 0.90 100‬أي‬

‫‪Ideal Weight = (Height – 100) * 0.90‬‬

‫إذا ﺎن ا ﺲ أﻧ ‪ ،‬ﻓﺈن اﻟﻮزن اﳌﺜﺎ ﺴﺎوي اﻟﻄﻮل ﻧﺎﻗﺺ ‪ 0.85 100‬أي‬

‫‪Ideal Weight = (Height – 100) * 0.85‬‬

‫ء ﻣﺸﺮوﻋﺎ ﺟﺪﻳﺪا ﻋ اﻟﻔﻴﺠﻮال ﺳﺘﻮدﻳﻮ ﻣﻦ ﻧﻮع ‪WCF Service‬‬ ‫ﻌﺎﻟﻮا ﺑﻨﺎ ﻧ‬


‫‪ ،Library‬وﻟﻨﻘﻢ ﺑﺈﻋﻄﺎﺋﮫ ﺳﻢ ‪ WCF.Ideal Weight‬ﻣﺜﻼ‪:‬‬

‫]‪[17‬‬
‫ﻌﺪ أن ﻳﺘﻢ إ ﺸﺎء اﳌﺸﺮوع ﺳﺘﻼﺣﻈﻮن ﻇ ﻮر ﻣﻠﻒ اﻟﻮاﺟ ﺔ ‪ ،IService1.cs‬وﻣﻠﻒ‬
‫ا ﺪﻣﺔ ‪ Service1.cs‬اﻟ ﺳﺘﻘﻮم ﺑﺘﻄﺒﻴﻖ ﻋﻨﺎﺻﺮ اﻟﻮاﺟ ﺔ‪ ،‬وﻗﺪ ﺗﻘﺪم ﺷﺮﺣ ﻤﺎ‬
‫ا ﺰء اﻟﺴﺎﺑﻖ ﻣﻦ اﻟﺴﻠﺴﻠﺔ‪.‬‬

‫ن‪ ،‬ﺳﻨﺄ ﻲ إ ﻣﻠﻒ اﻟﻮاﺟ ﺔ ‪ ،IService1.cs‬وﺳﻨﻘﻮم ﺑﺈزاﻟﺔ ﻞ ﻣﺎ ﻓﻴﮫ ﻣﻦ ﻌﺮﻔﺎت‬


‫ﻟﻠﻮﻇﺎﺋﻒ‪ ،‬وﺳﻨﻘﻮم ﺑﺘﻌﺮ ﻒ اﻟﻮﻇﻴﻔﺔ اﻟ ﺳﺘﻘﻮم ﺑﺤﺴﺎب اﻟﻮزن اﳌﺜﺎ ‪ ،‬وﺻﻴﻐ ﺎ ﻛﻤﺎ‬
‫ﻳ ‪:‬‬

‫]‪[OperationContract‬‬
‫;)‪string IdealWeight(double height, char sex‬‬

‫اﻟﻮﻇﻴﻔﺔ ﻛﻤﺎ ﺗﻼﺣﻈﻮن‪ ،‬ﺴﺘﻘﺒﻞ ﺑﺮاﻣ ﻳﻦ‪ ،‬أوﻟ ﻤﺎ ﻋﺸﺮي ‪ double‬ﻣﻦ أﺟﻞ اﺳﺘﻘﺒﺎل‬
‫اﻟﻄﻮل‪ ،‬واﻟﺜﺎ ﻲ ﺣﺮ ‪ char‬ﻣﻦ أﺟﻞ اﺳﺘﻘﺒﺎل ا ﺲ إﻣﺎ )‪ m (male‬أو )‪.f (female‬‬

‫]‪[18‬‬
:IService1.cs ‫وﻓﻴﻤﺎ ﻳ ا ﺘﻮى اﻟ ﺎﻣﻞ ﻟﻠﻮاﺟ ﺔ‬
using System.ServiceModel;

namespace WCF.Ideal_Weight
{
[ServiceContract]
public interface IService1
{
[OperationContract]
string IdealWeight(double height, char sex);
}
}

‫ وﻧﻘﻮم ﺑﺈزاﻟﺔ ﻣﺎ ﺑﮫ ﻣﻦ وﻇﺎﺋﻒ ﻗﺪﻳﻤﺔ ﻧﺎﺗﺠﺔ‬،Service1.cs ‫ ﺳﻨﺪﺧﻞ إ ﻣﻠﻒ‬،‫ﻌﺪ ذﻟﻚ‬


‫ وﺳﻨﻘﻮم ﺑﻜﺘﺎﺑﺔ اﻟ ﻮد ا ﺎص ﺑﺎﻟﻮﻇﻴﻔﺔ اﻟ‬،‫ﻋﻦ اﻟﺘﻌﺮ ﻔﺎت اﻟﺴﺎﺑﻘﺔ داﺧﻞ اﻟﻮاﺟ ﺔ‬
: ‫ﻗﻤﻨﺎ ﺑﺘﻌﺮ ﻔ ﺎ ﻋ اﻟﺸ ﻞ اﻟﺘﺎ‬

public string IdealWeight(double height, char sex)


{
double Weight = sex == 'm' ? (height - 100) *
0.90: (height - 100) * 0.85;

return string.Format("The ideal Weight is: {0} -


This function is called from a WCF Service", Weight);
}

[19]
‫ أﻣﺎ‬،‫ ﻗﻤﻨﺎ ﺑﺤﺴﺎب اﻟﻮزن اﳌﺜﺎ ﺑﻨﺎء ﻋ ﻧﻮع ا ﺲ واﻟﻄﻮل‬IdealWeight ‫اﻟﺪاﻟﺔ‬
: ‫ﺸﺄن اﻟﺴﻄﺮ اﻟﺘﺎ‬
double Weight = sex == 'm' ? (height - 100) *
0.90: (height - 100) * 0.85;

‫ و ﻤﻜﻨﻨﺎ اﺳ ﺒﺪاﻟﮫ ﺑﺎﻟﺒ ﻴﺔ اﻟﺸﺮﻃﻴﺔ اﻟﻌﺎدﻳﺔ‬،‫ﻓﻘﺪ اﺳﺘﺨﺪﻣﻨﺎ اﻟﺮاﺑﻂ اﻟﺸﺮﻃﻲ اﻟﺜﻼ ﻲ‬


: ‫ ﻛﻤﺎ ﻳ‬if ‫ﺑﺎﺳﺘﺨﺪام‬
double Weight;
if (sex == 'm')
Weight = (height - 100) * 0.90;
else Weight= (height - 100) * 0.85;

:if ‫ﻟﺘﺼﺒﺢ اﻟﺪاﻟﺔ ﻋ اﻟﺸ ﻞ اﻟﺘﺎ ﻋﻨﺪ اﺳﺘﺨﺪام اﻟ ﻠﻤﺔ‬

public string IdealWeight(double height, char sex)


{
double Weight;
if (sex == 'm')
Weight = (height - 100) * 0.90;
else Weight= (height - 100) * 0.85;

return string.Format("The ideal Weight is: {0} -


This function is called from a WCF Service", Weight);
}

[20]
:‫ ﺣﺎل اﺳﺘﺨﺪﻣﻨﺎ اﻟﺮاﺑﻂ اﻟﺜﻼ ﻲ‬، ‫أو ﻋ اﻟﺸ ﻞ اﻟﺘﺎ‬

public class Service1 : IService1


{
public string IdealWeight(double height, char sex)
{
double Weight = sex == 'm' ? (height - 100) *
0.90: (height - 100) * 0.85;

return string.Format("The ideal Weight is: {0} -


This function is called from a WCF Service", Weight);
}
}

‫ وﻓﻴﻤﺎ‬،‫ وﻣﻠﻒ ا ﺪﻣﺔ‬،‫ ﻧ ﻮن ﻗﺪ اﻧ ﻴﻨﺎ ﻣﻦ إ ﺸﺎء اﻟﻮاﺟ ﺔ‬،‫ﷲ‬ ‫ﺬﻩ اﻟﻜﻴﻔﻴﺔ أﺣﺒ‬
:‫ﻳ اﻟ ﻮد اﻟﺸﺎﻣﻞ ﻟ ﻞ ﻣ ﻤﺎ‬

:IService1.cs ‫اﻟﻜﻮد ا ﺎص ﺑﺎﻟﻮاﺟ ﺔ‬

using System.ServiceModel;

namespace WCF.Ideal_Weight
{
[ServiceContract]
public interface IService1
{
[OperationContract]
string IdealWeight(double height, char sex);
}
}
[21]
:Service1.cs ‫اﻟﻜﻮد ا ﺎص ﺑﺎ ﺪﻣﺔ‬
namespace WCF.Ideal_Weight
{
public class Service1 : IService1
{
public string IdealWeight(double height, char sex)
{
double Weight = sex == 'm' ? (height - 100) *
0.90: (height - 100) * 0.85;

return string.Format("The ideal Weight is: {0} -


This function is called from a WCF Service", Weight);
}
}
}

WCF Test Client ‫ ﺳﺘﻈ ﺮ ﻟﻨﺎ واﺟ ﺔ‬،‫ ﻻﺧﺘﺒﺎر ا ﺪﻣﺔ‬F5 ‫ﻟﻨﻘﻢ ن ﺑﺎﻟﻀﻐﻂ ﻋ‬
:‫اﻟﺘﺎﻟﻴﺔ‬

[22]
‫ﻟﻮ ﺿﻐﻄﻨﺎ ﻣﺮﺗ ن ﻋ اﺳﻢ اﻟﺪاﻟﺔ ‪ IdealWeight‬ﻓﺴﻮف ﺗﻈ ﺮ ﻟﻨﺎ اﻟﺼﻔﺤﺔ ﻋ اﻟﺸ ﻞ‬
‫اﻟﺘﺎ ‪:‬‬

‫]‪[23‬‬
‫ﻳﻤﻜﻨﻨﺎ أن ﻧﺠﺮب اﻟﺪاﻟﺔ ﻣﻦ ﻨﺎ‪ ،‬ﻟﻨﻘﻢ ﺑﺈدﺧﺎل ﻗﻴﻤﺔ ﻋﺸﺮﺔ ﻟﻠﻄﻮل‪ ،‬وﻗﻴﻤﺔ ﺣﺮﻓﻴﺔ‬
‫ﻟ ﺲ وﻧﻀﻐﻂ ﻋ اﻟﺰر ‪ ،Invoke‬ﺳﺘﻼﺣﻈﻮن ﻇ ﻮر اﻟﻨ ﻴﺠﺔ اﻟﺘﺎﻟﻴﺔ‪:‬‬

‫]‪[24‬‬
‫أدﺧﻠﻨﺎ اﻟﻄﻮل اﻟﻘﻴﻤﺔ اﻟﻌﺸﺮ ﺔ ‪ 168.7‬ﺳ ﺘﻤ ‪ ،‬و ا ﺲ ا ﺮف ‪ ،m‬ﻓﺘﻢ إرﺳﺎﻟ ﻤﺎ‬
‫ﺳﻔﻞ‪.‬‬ ‫إ اﻟﺪاﻟﺔ وﻗﺎﻣﺖ ﺑﺤﺴﺎ ﻤﺎ وﺗﻢ إرﺟﺎع اﻟﻨ ﻴﺠﺔ اﻟﻈﺎ ﺮة‬

‫ﻣﺸﺮوﻋﺎ‬ ‫إذن و ا ﻤﺪ‪ ،‬اﻟﺘﻄﺒﻴﻖ ﻌﻤﻞ ﺑﻨﺠﺎح‪ ،‬ﻳﻤﻜﻨﻨﺎ اﺧﺘﺒﺎرﻩ ﻣﻦ ﻣ ﺎن آﺧﺮ‪ ،‬ﺳﻨ‬
‫آﺧﺮ ﺑﻤﻌﺰل ﻋﻦ ﺬا اﳌﺸﺮوع‪ ،‬وﺳﻨﻘﻮم ﺑﺎﻻﺳﺘﻔﺎدة ﻣﻦ ﺬﻩ اﻟﺪاﻟﺔ اﻟ ﻳﻘﺪﻣ ﺎ ﺬا‬
‫اﻟﺴ ﭬ ﺲ‪.‬‬

‫ء ﻣﺸﺮوﻋﺎ ﺟﺪﻳﺪا‪ ،‬ﻣﻦ أي ﻧﻮع ﻧﺮﺪ ﺳﻮاء‬ ‫ﻌﺎﻟﻮا ﺑﻨﺎ ﻧﻔﺘﺢ اﻟﻔﻴﺠﻮال ﺳﺘﻮدﻳﻮ وﻧ‬
‫‪ ،Windows Forms Application‬أو ‪ .ConsoleApplication‬وﻟﻴﻜﻦ ﻣﺜﻼ ﻣﻦ ﻧﻮع‬
‫‪ Console‬ﻟ ﻲ ﻧﺮﻛﺰ اﻟ ﻮد ﻓﻘﻂ‪:‬‬

‫]‪[25‬‬
‫ﺬا‬ ‫ﻌﺪ أن ﻳﺘﻢ إ ﺸﺎء اﳌﺸﺮوع‪ ،‬ﺳﻨﻘﻮم ﺑﺮ ﻄﮫ ﻣﻊ راﺑﻂ ا ﺪﻣﺔ‪ ،‬ﻛﻴﻒ ﻧﺤﺼﻞ ﻋ‬
‫اﻟﺮاﺑﻂ‪ ،‬اﳌﺴﺄﻟﺔ ﺴﻴﻄﺔ وﻗﺪ رأﻳﻨﺎ ذﻟﻚ ا ﺰء اﳌﻨﺼﺮم‪ ،‬إذ ﻳﻜﻔﻲ أن ﻌﻮد إ ﺗﻄﺒﻴﻖ‬
‫اﻟﺮاﺑﻂ ﻛﻤﺎ ﻳ ‪:‬‬ ‫‪ ،WCF Test Client‬وﻧﻘﻮم ﺑ‬

‫]‪[26‬‬
‫‪ ،Console‬وﻧﻀﻐﻂ ﺑﻴﻤ ن اﻟﻔﺄرة ﻋ اﳌﺸﺮوع‬ ‫ﺛﻢ ﻌﻮد إ اﳌﺸﺮوع اﻟﺬي أ ﺸﺄﻧﺎﻩ‬
‫اﻟﺼﻮرة أدﻧﺎﻩ‪:‬‬ ‫وﻧﻘﻮم ﺑﺎﺧﺘﻴﺎر ﻣﺮ ‪ Service Reference‬ﻛﻤﺎ ﺗﻮ‬

‫ﻟﺘﻄﺎﻟﻌﻨﺎ اﻟﻮاﺟ ﺔ اﻟﺘﺎﻟﻴﺔ‪:‬‬

‫]‪[27‬‬
‫ﻣﺮ ﻊ اﻟﻨﺺ ‪ Address‬ﺳﻨﻘﻮم ﺑﻠﺼﻖ راﺑﻂ اﻟﻮﺻﻮل إ ‪ Service‬وﻧﻀﻐﻂ ﻋ اﻟﺰر ‪Go‬‬
‫ﻟﻴﺘﻢ اﻟﺒﺤﺚ ﻋﻦ ‪ Service‬ﺛﻢ ﺟﻠﺐ ﺎﻓﺔ وﻇﺎﺋﻔﮫ ﻛﻤﺎ ﻳ ‪:‬‬

‫]‪[28‬‬
‫ﻳﻤﻜﻨﻨﺎ أن ﻐ اﺳﻢ ﻣﺠﺎل ﺳﻤﺎء ‪ Namespace‬ﻣﻦ اﻟﻘﻴﻤﺔ ‪ ServiceReference1‬إ‬
‫اﺳﻢ آﺧﺮ ﻳ ﻮن أﻛ وﺿﻮﺣﺎ وﻟﻴﻜﻦ ﻣﺜﻼ ‪:NS_Ideal_Weight‬‬

‫]‪[29‬‬
‫ﻌﺪ ذﻟﻚ‪ ،‬ﻳﻤﻜﻨﻨﺎ اﺳﺘﺨﺪام ﻋﻨﺎﺻﺮ ا ﺪﻣﺔ ﺑ ﻞ ﺳ ﻮﻟﺔ‪ ،‬ﻟﻜﻦ ﺸ ط اﻟﺴ ﭬﺮ اﻟﺬي‬
‫ﺴﺘﻀﻴﻒ ا ﺪﻣﺔ أن ﻳ ﻮن ﺷﻐﺎﻻ إذا أردﻧﺎ أن ﻳﺘﻢ ﻋﻤﻞ اﻟﻮﻇﺎﺋﻒ ﺑﻨﺠﺎح وإﻻ ﻓﺈن‬
‫اﻟﻌﻤﻠﻴﺔ ﺳﺘﻔﺸﻞ‪ ،‬إذ ﻻ ﻳﻤﻜﻦ اﺳﺘﺪﻋﺎء وﻇﺎﺋﻒ ﻣﻮﺟﻮدة ﻋ ﺳ ﭬ ﺲ ﻣﺴﺘﻀﺎف ﻋ‬
‫ﺳ ﭬﺮ ﻏ ﺷﻐﺎل‪.‬‬

‫]‪[30‬‬
‫ء ﺑﺮﻧﺎﻣﺠﺎ ﻣﻦ‬ ‫ ﺑﻘﻲ ﻋﻠﻴﻨﺎ ﻓﻘﻂ أن ﻧﺄ ﻲ وﻧ‬،‫ﻜﺬا ﻧ ﻮن ﻗﺪ ﻗﻄﻌﻨﺎ ﺷﻮاط اﳌ ﻤﺔ‬
‫ ﻟﻨﺄت إذن إ ﻣﺤﺮر اﻟ ﻮد وﻟﻨﻜﺘﺐ‬،‫ وﻧﻘﻮم ﺑﺘﺠﺮ ﺎ‬،IdelaWeight ‫ﺧﻼﻟﮫ ﺴﺘﺪ اﻟﺪاﻟﺔ‬
:‫اﻟﺸﻔﺮة اﻟﺘﺎﻟﻴﺔ‬

using System;

namespace CONSOLE.WCF_TEST
{
class Program
{
static void Main(string[] args)
{
double height;
char sex;

Console.WriteLine("Enter your height (cm): ");


height = double.Parse(Console.ReadLine());

Console.WriteLine("Enter your sex (m / f): ");


sex = char.Parse(Console.ReadLine());

NS_Ideal_Weight.Service1Client service = new


NS_Ideal_Weight.Service1Client();

string result = service.IdealWeight(height, sex);

Console.WriteLine(result);

Console.Read();

}
}
}
[31]
‫اﳌﺜﺎل أﻋﻼﻩ‪ ،‬ﻃﻠﺒﻨﺎ ﻣﻦ اﳌﺴﺘﺨﺪم إدﺧﺎل ﻃﻮﻟﮫ وﺟ ﺴﮫ‪ ،‬ﺛﻢ اﺳﺘﺪﻋﻴﻨﺎ اﻟﺪاﻟﻴﺔ‬
‫ﻣﺠﺎل ﺳﻤﺎء‬ ‫اﻟﻜﻼس ‪ Service1‬واﻟ ﺗﻮﺟﺪ ﺑﺪور ﺎ‬ ‫‪ IdealWeight‬اﳌﻮﺟﻮدة‬
‫‪.NS_Ideal_Weight‬‬

‫ﻋﻨﺪ اﻟﺘﻨﻔﻴﺬ ﺳﻨﺤﺼﻞ ﻋ اﻟﻨ ﻴﺠﺔ اﻟﺘﺎﻟﻴﺔ‪:‬‬

‫و ﺬا ﻌ أن ﺗﺼﺎل ﺑﺎﻟﺴ ﻓ ﺲ ﺗﻢ ﺑﻨﺠﺎح‪.‬‬

‫اﳌﺸﺮوع‬ ‫إذا ﻗﻤﻨﺎ ﺑﺎﻟﺘﻌﺪﻳﻞ ﻋ ﻣﻠﻒ ا ﺪﻣﺔ ‪ Service‬وأردﻧﺎ ﺗﺤﺪﻳﺚ اﻟﻌﻨﺎﺻﺮ‬


‫اﳌﺴﺘﻔﻴﺪ‪ ،‬ﻳﻜﻔﻲ أن ﻧﺄ ﻲ إ ﻣﺠﻠﺪ ا ﺪﻣﺔ اﻟﻨﺎﺗﺞ ﻋﻦ ﻋﻤﻠﻴﺔ اﻟﺮ ﻂ اﻟﻈﺎ ﺮ اﻟﺼﻮرة‬
‫أﺳﻔﻠﮫ‪:‬‬

‫]‪[32‬‬
‫ﺛﻢ ﻧﻀﻐﻂ ﻋﻠﻴﮫ ﺑﻴﻤ ن اﳌﺎوس وﻧﺨﺘﺎر ﻣﺮ ‪ Update Service Reference‬اﻟﺬي ﺳﻴﻘﻮم‬
‫ﻌﻤﻠﻴﺔ اﻟﺘﺤﺪﻳﺚ‪:‬‬

‫]‪[33‬‬
‫ﺧﺎﺗﻤﺔ‪:‬‬
‫ﷲ ﻧ ﻮن ﻗﺪ اﻧ ﻴﻨﺎ ﻣﻦ اﻟﻜﺘﺎب‪ ،‬ﻋ أﻣﻞ أن أ ﻮن ﻗﺪ وﻓﻘﺖ ﺷﺮح‬ ‫ﻨﺎ أﺣﺒ‬ ‫إ‬
‫ﺬﻩ اﻟﺘﻘﻨﻴﺔ‪.‬‬

‫أدﻋﻮ ﻟﻜﻢ ﺑﺎﻟﺘﻮﻓﻴﻖ واﻟﺴﺪاد ودام ﻟﻜﻢ اﻟ ﺸﺮ واﻟﻔﺮح‪.‬‬

‫ء إذا ﻣﺎ ﺗﻢ ﻧﻘﺼﺎن‪ ،‬ﻓﺈن وﺟﺪﺗﻢ ﻃﻴﺎت ﺬا اﻟﻜﺘﺎب أﺧﻄﺎء ﻟﻐﻮ ﺔ أو ﺗﻘﻨﻴﺔ أو‬ ‫ﻟﻞ‬
‫ﻟﺪﻳﻜﻢ ﻣﻼﺣﻈﺎت واﻗ اﺣﺎت ﻟﺘﺤﺴ ن إﻧﺘﺎﺟﺎﺗﻨﺎ اﳌﻜﺘﻮ ﺔ أو اﳌﺮﺋﻴﺔ ﻓﻼ ﺗ ددوا ﺑﻤﺮاﺳﻠﺘﻨﺎ‬
‫ﻋ اﻟﻌﻨﺎو ﻦ ﻟﻜ وﻧﻴﺔ اﻟﺘﺎﻟﻴﺔ‪:‬‬
‫‪mobarmijoun@gmail.com‬‬
‫‪how2progspace@gmail.com‬‬

‫وﻛﺬﻟﻚ ز ﺎرﺗﻨﺎ ﻋ ﻣﻮﻗﻊ أ ﺎدﻳﻤﻴﺔ اﳌ ﻣﺠ ن اﻟﻌﺮب‪:‬‬


‫‪www.mobarmjoun.com‬‬

‫وﻣﺘﺎ ﻌﺘﻨﺎ ﻋ ﻗﻨﺎﺗﻨﺎ ﻋ اﻟﻴﻮﺗﻴﻮب وﺻﻔﺨﺘﻨﺎ ﻋ اﻟﻔ ﺴﺒﻮك‪:‬‬


‫‪www.youtube.com/EssaadaniTV‬‬
‫‪www.facebook.com/EssaadaniPage‬‬

‫]‪[34‬‬

You might also like