Professional Documents
Culture Documents
ﻋﻈﻴﻤﺎ"
][2
ﻟﻔ ﻢ ﺗﻘﻨﻴﺔ :WCF ﻣﺪﺧﻞ أﺳﺎ
ﺷ ﺪت ﺑ ﻴﺎت ﻧﻈﻤﺔ اﳌﻌﻠﻮﻣﺎﺗﻴﺔ ﺗﻄﻮرا ﻣ ﻮﻇﺎ ﻣﻊ ﻣﺮور اﻟﺰﻣﻦ ،ﺑﺪء ﻣﻦ اﻟﺒ ﻴﺔ
ﺎﻧﺖ ﺗﻘﺪم ﻟﻠﻤﺴﺘﺨﺪﻣ ن أﻧﻈﻤﺔ أﺣﺎدﻳﺔ ا ﺪﻣﺔ ،ﻋﺒﺎرة ﻋﻦ ﺗﻄﺒﻴﻘﺎت اﻟﺘﻘﻠﻴﺪﻳﺔ اﻟ
ﻋﻤﻠﮫ ،إذ اﻧﻔﺮادﻳﺔ ﺸﺘﻐﻞ ﻋﻠ ﺎ ﻣﺴﺘﺨﺪم واﺣﺪ ،ﺑﻞ وﻻ ﺗﻘﺪم ﻟﮫ ﻞ ﻣﺎ ﻳﺤﺘﺎﺟﮫ
ﺑﺮﻧﺎﻣﺞ ﺧﺎص ﻳﻀﻄﺮ أن ﻳﻮزع ﻣ ﺎﻣﮫ ﺑ ن ﻋﺪة ﺑﺮاﻣﺞ ،ﻓﻴﻘﻮم ﺑﺈدﺧﺎل اﳌﻌﻄﻴﺎت
ﺑﻘﻮاﻋﺪ اﻟﺒﻴﺎﻧﺎت ،ﺛﻢ ﻌﺪ ذﻟﻚ ﻳﻘﻮم ﺑﺎﻻﺳﺘﻌﻼم ﻋﻦ ﺬﻩ اﻟﺒﻴﺎﻧﺎت ﻣﻦ ﺧﻼل ﺑﺮﻧﺎﻣﺞ آﺧﺮ
ء اﻟﺘﻘﺎر ﺮ Reportsﺗﻮﺟﮫ إ ﺑﺮﻧﺎﻣﺞ آﺧﺮ ﻣﺨﺼﺺ ﻟ ﺬا اﻟﻐﺮض ،ﻓﺈذا أراد أن ﻳ
و ﻜﺬا دواﻟﻴﻚ.
وﻇ ﺮت ﻛﺬﻟﻚ ﺑ ﻴﺎت أﺧﺮى ،ﻟﻌﻞ أﺑﺮز ﺎ ﺑ ﻴﺔ ﻧﻈﻤﺔ اﳌﻮﺟ ﺔ ﺧﺪﻣﻴﺎ Service Oriented
Architectureواﳌﻌﺮوﻓﺔ اﺧﺘﺼﺎرا ب ،SOAﺬﻩ ﻧﻈﻤﺔ اﻟ ﺗ ﻮن ﻋﺎدة ﺣﺎﺟﺔ إ
][3
ﺗﺼﺎل ﺑﺨﺪﻣﺎت اﻟﻮ ﺐ ﻐﺮض ﺳﺘﻔﺎدة ﻣ ﺎ ﻋ اﻟﻮﺻﻮل إ اﻟﻮﻇﺎﺋﻒ Methods
اﻟ ﺗﻘﺪﻣ ﺎ ﻓ ﺴﺘﺨﺪﻣ ﺎ.
واﻋﺘﻤﺪت ﻧﻈﻤﺔ اﳌﻮﺟ ﺔ ﺧﺪﻣﻴﺎ ﻋ ﺗﻘﻨﻴﺎت ﻋﺪﻳﺪة ﺴﻤﺢ ﺑﻨﻘﻞ اﻟﺒﻴﺎﻧﺎت اﻟ ﻣﺠﻴﺔ
ﻧ ﻧﺖ أو اﻟﺸﺒ ﺎت ا ﻠﻴﺔ ،ﻷﻧﮫ )اﻟ ﺎﺋﻨﺎت (Objectsﺑ ن ﻣﺨﺘﻠﻒ ﻣ ﻮﻧﺎت اﻟﻨﻈﺎم ﻋ
ﺎز ،إذ أن ﺬﻩ اﻟﺒ ﻴﺔ أن ﺗ ﻮن ﻣ ﻮﻧﺎت ﻧﻈﺎم ﻣﻌ ن ﻣﻮﺟﻮدة ﻋ ﻧﻔﺲ ا ﻟ ﺲ ﻟﺰاﻣﺎ
ﺬﻩ ﺬﻩ اﻟﺒ ﻴﺔ ﻣﻌﺪة ﺧﺼﻮﺻﺎ ﻟﻸﻧﻈﻤﺔ اﻟ ﺗﺘﻤ ﺑ ﺒﺎﻋﺪ ﻣ ﻮﻧﺎ ﺎ ﺟﻐﺮاﻓﻴﺎ ،و ﺴ
ﻧﻈﻤﺔ ﺑﺎﻷﻧﻈﻤﺔ اﳌﻮزﻋﺔ .Distributed Systems
][4
ﺬا اﻟﻜﺘ ﺐ ا ﺘﺼﺮ ،ﻓﻤﺎ ﻋ ﺻﺪﻳﻘﺘﻨﺎ اﻟﻐﺎﻟﻴﺔ ،WCFوﺳﻮف ﻧ ﻨﺎوﻟ ﺎ ﺑﺈذن ﷲ
ﺗﻘﻨﻴﺔ WCF؟ وﻣ ﻇ ﺮت؟ وﳌﺎذا ﺳﻨﺤﺘﺎﺟ ﺎ؟ وإذا اﺣﺘﺠﻨﺎ ﺎ ﻛﻴﻒ ﺴﺘﺨﺪﻣ ﺎ ؟
ﻣﻦ ﺗﻘﻨﻴﺔ WCFﻮ اﻟﺴﻤﺎح ﺑﻨﻘﻞ اﻟ ﺎﺋﻨﺎت Objectsﻋ اﻟﺸﺒ ﺎت اﻟ ﺪف اﻟﺮﺋ
ﻧ ﻧﺖ ﻣﻦ أﺟﻞ ﺗﻤﻜ ن اﻟﺘﻄﺒﻴﻘﺎت اﻟ ﺗﺤﺘﺎج ﺬﻩ ا ﻠﻴﺔ ﻟﻠﻤﺆﺳﺴﺎت أو ﻋ
اﻟ ﺎﺋﻨﺎت ﻣﻦ اﻟﻮﺻﻮل إ وﻇﺎﺋﻔ ﺎ واﺳﺘﻌﻤﺎﻟ ﺎ.
ﻟﻌﻤﻞ ذﻟﻚ ،ﻻﺑﺪ ﻣﻦ اﺳﺘﻀﺎﻓﺔ ﺧﺪﻣﺎت WCFﻋ ﺟ ﺎز ﺳ ﭬﺮ ،وإﻋﺪادﻩ ﺑﻜﻴﻔﻴﺔ ﺗﺠﻌﻠﮫ
ﻗﺎدرا ﻋ اﻟﺘﺠﺎوب ﻣﻊ اﺳﺘﻌﻼﻣﺎت اﻟﻌﻤﻼء .Clients
][5
ﺴﻤﺢ ﻟﮫ ﺑﺎﻻﺗﺼﺎل ﺑﺨﺪﻣﺎت WCFواﺳﺘﻌﻤﺎﻟ ﺎ اﻟﻌﻤﻴﻞ ﺟﻤﻴﻊ اﳌﻌﻠﻮﻣﺎت ﺳﺎﺳﻴﺔ اﻟ
ﺸ ﻞ ﺳﻠﻴﻢ.
][6
أﺑﺠﺪﻳﺎت ﺗﻘﻨﻴﺔ :WCF
ﻧﻈﻤﺔ اﳌﻌﻠﻮﻣﺎﺗﻴﺔ، ﻣﺮت ﻣ ﺎ ﺑ ﻴﺎت ﻃﻮار اﻟ ﻣﻘﺪﻣﺔ اﻟﻜﺘﺎب إ ﺗﻄﺮﻗﻨﺎ
ﻧﻈﻤﺔ اﳌﻮﺟ ﺔ ﺧﺪﻣﺎﺗﻴﺎ أو ﺧﺪﻣﻴﺎ Service Oriented واﺳﺘﻌﺮﺿﻨﺎ ﻣﻌﺎ ﺑ ﻴﺔ
Architectureاﳌﻌﺮوﻓﺔ اﺧﺘﺼﺎرا ب ،SOAﻣﻤﺎ اﺳﺘﺪرﺟﻨﺎ إ ا ﺪﻳﺚ ﻋﻦ ﻧﻈﻤﺔ
اﳌﻮزﻋﺔ Distributed Systemsوﻣﺎ ﺗﺤﺘﺎﺟﮫ ﻣﻦ ﺗﻘﻨﻴﺎت ﻟﺘﺒﺎدل اﻟﺒﻴﺎﻧﺎت ﺑ ن ﻣﺨﺘﻠﻒ
ﻣ ﻮﻧﺎ ﺎ اﳌﺘﺒﺎﻋﺪة ﺟﻐﺮاﻓﻴﺎ.
آﻟﻴﺔ أﻧﺘﺠ ﺎ ﻣﻴﻜﺮوﺳﻮﻓﺖ ﻣﻦ وﻛﺨﻼﺻﺔ ﻟ ﻞ ﻣﺎ ﺳﻠﻒ ﻳﻤﻜﻨﻨﺎ اﻟﻘﻮل أن ﺗﻘﻨﻴﺔ WCF
أﺟﻞ اﻟﺴﻤﺎح ﺑﺈ ﺸﺎء أﻧﻈﻤﺔ ذات ﺑ ﻴﺔ ﻣﻮﺟ ﺔ ﺧﺪﻣﻴﺎ ،SOAواﻟﻐﺮض ﻣ ﺎ ﻮ ﺗﺒﺎدل
اﻟﺒﻴﺎﻧﺎت ﺑ ن ﻣﺨﺘﻠﻒ ﻣ ﻮﻧﺎت اﻟﻨﻈﺎم ﻋ اﻟﻮﺳﻴﻂ اﻟﺸﺒ ﻲ )إﻣﺎ اﻧ ﻧﺖ أو ﺷﺒﻜﺔ ﻣﺤﻠﻴﺔ(.
][8
Bindingوﻋﻨﻮان اﻟﻮﺻﻮل إ Serviceﻓﺘﺒﻘﻰ ﺿﻤﻦ ﻣ ﺎم ﻣﺪﻳﺮ اﻟﺸﺒﻜﺔ Network
.Administrator
][9
إ ﺸﺎء Serviceﺑﺎﺳﺘﻌﻤﺎل ﺗﻘﻨﻴﺔ :WCF
ﻟﻨﺪﺧﻞ إ ﺑﺮﻧﺎﻣﺞ ﻓﻴﺠﻮال ﺳﺘﻮدﻳﻮ ،وﻧﻘﻮم ﺑﺈ ﺸﺎء ﻣﺸﺮوع ﺟﺪﻳﺪ ﻣﻦ ﻧﻮع WCF Service
اﻟﺼﻮرة اﻟﺘﺎﻟﻴﺔ: Applicationﻛﻤﺎ ﺗﻮ
ﺎ ﻌﺪ أن ﻳﺘﻢ ﻴﺌﺔ ﺑ ﺌﺔ اﻟﺘﻄﻮ ﺮ ،ﺳﺘﻼﺣﻆ أن اﳌﺸﺮوع ﻗﺪ ﺟﺎء ﻣﻌﮫ ﻌﺪة ﻣﻠﻔﺎت ﺗﻮ
اﻟﺼﻮرة اﻟﺘﺎﻟﻴﺔ:
][10
ﺗﺤﺪﺛﻨﺎ ﻗﺒﻞ ﻗﻠﻴﻞ ﻋﻦ اﻟﺘﻘﺴﻴﻢ ) ABC (Address, Binding, Contractﻧﻈﺮﺎ ،ن
ﺗﻤﺜﻴﻞ ﻓﻌ ﻟﺬﻟﻚ ،ﻟﻜﻦ ﺬا ﻟﻦ ﻳﻤﻨﻌﻨﺎ ﻣﻦ ﺷﺮح أ ﻢ اﳌﻠﻔﺎت اﻟﺼﻮرة اﻟ ﺗﺮا ﺎ أﻋﻼﻩ
ﺎﻵ ﻲ: أﻋﻼﻩ و
][11
ﻓﻨﻘﻮل أن اﻟﻮاﺟ ﺔ ﺗﻘﻮم ﺑﻮﺻﻒ اﻟﻮﻇﺎﺋﻒ ،Specificationﺑ ﻨﻤﺎ ﺗﻘﻮم اﻟﻔﺌﺔ اﻟ
ﻌﻤﻞ implementﻟ ﺬﻩ اﻟﻮاﺟ ﺔ ﺑ و ﺪ اﻟﻮﻇﺎﺋﻒ اﳌﻌﻠﻦ ﻋ ﺎ ﺑﺎﻷواﻣﺮ اﻟ ﻣﺠﻴﺔ
اﻟﻼزﻣﺔ و ﻮ ﻣﺎ ﻌﺮف ب .Implementation
.4اﳌﻠﻒ :Web.configﺴﻤﺢ ﻟﻨﺎ ﺬا اﳌﻠﻒ ﺑﺎﻟﺘﺤﻜﻢ إﻋﺪادات Serviceوﻧﻘﺎط
اﻟ ﺎﻳﺔ .endpoints
ﺛﻢ ﻧﺬ ﺐ إ أﺣﺪ ﻣﺘﺼﻔﺤﺎت اﻟﻮ ﺐ )ﻏﻮﻏﻞ ﻛﺮوم ﻣﺜﻼ( وﻧﻘﻮم ﺑﻠﺼﻖ اﻟﺮاﺑﻂ ﻟﺘﻈ ﺮ ﻟﻨﺎ
اﻟﺼﻔﺤﺔ اﻟﺘﺎﻟﻴﺔ:
][12
ﻛﻤﺎ ﺗﻼﺣﻆ ﻓﺎﻟﺼﻮرة أﻋﻼﻩ ﺗﺨ ﻧﺎ أﻧﮫ ﺗﻢ إ ﺸﺎء Serviceوأﻧﮫ ﺟﺎ ﺰ ﻟﻼﺳﺘﺨﺪام ﻣﻦ ﻗﺒﻞ
اﻟﻌﻤﻴﻞ ،ﻛﻤﺎ ﺗﻘﺪم ﻟﻨﺎ ﻧﻤﺎذج ﻟﻜﻴﻔﻴﺔ اﺳﺘﺨﺪام Serviceﻋ ﻣﺴﺘﻮى اﻟﻌﻤﻴﻞ ﺑﺎﺳﺘﺨﺪام
ﺷﺎرب. ﻟﻐ اﻟﻔﻴﺠﻮال ﺑ ﺴﻚ و
][13
[ServiceContract]
public interface IService1
{
[OperationContract]
string GetData(int value);
[OperationContract]
CompositeType GetDataUsingDataContract(CompositeType
composite);
}
[14]
ﺗﺬﻛﺮة ﺧﺘﺎﻣﻴﺔ وﻣﺜﺎل ﻣﻦ ﻋﻤﻖ :WCF
رأﻳﻨﺎ اﻟﻔﺼﻞ اﻟﺴﺎﺑﻖ اﻟﺴﺎﺑﻖ ﻛﻴﻒ ﻧﻘﻮم ﺑﺈ ﺸﺎء أول ﻣﺸﺮوع ﺑﺘﻘﻨﻴﺔ WCFﻋ ﺑ ﺌﺔ
ﻏﻀﻮن ا ﺼﺔ إ ﺷﺮح ﻣﺨﺘﻠﻒ اﳌﻠﻔﺎت اﻟ ﺗﺄ ﻲ ﻣﻊ اﻟﻔﻴﺠﻮال ﺳﺘﻮدﻳﻮ ،وﺗﻄﺮﻗﻨﺎ
ﺬﻩ اﻟﻨﻮﻋﻴﺔ ﻣﻦ اﳌﺸﺎر ﻊ ،ﻌﺪ أن ﻗﺪﻣﻨﺎ ﻟﻠﻨﻤﻮذج )ABC (Address, Binding, Contract
اﻟﺬي ﺗﺘ ﻨﺎﻩ ﺗﻘﻨﻴﺔ .WCF
ﺣﺼﺔ اﻟﻴﻮم إن ﺷﺎء ﷲ ﺳﻮف ﺴﺘﻤﺮ ﻣﻊ ﺬﻩ اﻟﺘﻘﻨﻴﺔ اﻟﻘﻮ ﺔ ،اﻟ ﺑﺎﺗﺖ ﺗﻠﻌﺐ دورا
ﺻﻨﺎﻋﺔ ﻧﻈﻤﺔ اﳌﻮزﻋﺔ ،ﻟﻜﻦ ﻗﺒﻞ ﻣﺒﺎﺷﺮة ذﻟﻚ ﻌﺎﻟﻮا ﺑﻨﺎ ﻧﺠﻴﺐ ﻋ ﺳﺆال ﺑﺎرزا
ﺬا اﻟﺼﻨﻒ ﻣﻦ اﻟﺒ ﻴﺎت: ﻳﻨ ﺶ دﻣﺎغ ﻞ ﻣﻘﺒﻞ ﻋ
و ﺼﻴﻐﺔ أﺧﺮى:
ﺣﺎﺟﺔ ﻣﺎﺳﺔ ﻟ ﺴﺖ ﺗﺮﻓﺎ ﺑﻘﺪر ﻣﺎ ﺬا اﻟﻨﻤﻂ اﻟﺒ ﻴﻮي اﻟ ﻣ ﺗﺒ إذن ﻓﺪوا
ﺗﻔﺮﺿ ﺎ ﻃﺒﻴﻌﺔ ﻧﻈﻤﺔ اﳌﺮاد إﺣﺪا ﺎ وﻛﺬﻟﻚ ﺳﺮﻋﺔ ﺗﻄﻮر ﺗﻜﻨﻮﻟﻮﺟﻴﺎ اﳌﻌﻠﻮﻣﻴﺎت اﻟ
ْ ً
ﻧﻤﺎط اﻟ ﻣﺠﻴﺔ اﻟﻜﻼﺳﻴﻜﻴﺔ ِﺑ َﻴﺔ ﻟﻢ ﻌﺪ ﺗﺼ ﳌﻮاﻛﺒﺔ ﻣﺴﺘﺠﺪات ﺑﺎﺗﺖ ﺗﺮى
اﻟﻌﺼﺮ.
ﺬا ﷲ ،ﻟﻨﻮاﺻﻞ اﳌﺸﻮار اﻟﺬي ﺑﺪأﻧﺎﻩ ﻣﻊ ﺗﻘﻨﻴﺔ ،WCFو ن ﻌﺎﻟﻮا ﺑﻨﺎ أﺣﺒ
ا ﺰء اﻟﺜﺎﻟﺚ ﺑﺤﻮل ﷲ ،ﺳﻨﻘﻮم ﺑﺈ ﺸﺎء ﺗﻄﺒﻴﻖ ﻣﻦ ﻧﻮع ﺧﺪﻣﺔ ،وﺳﻨﻘﻮم ﺑﺎﺳﺘﻀﺎﻓﺘﮫ،
ﺛﻢ ﻌﺪ ذﻟﻚ ﺳﻨﻘﻮم ﺑﺎﻻﺗﺼﺎل ﺑﮫ ﻣﻦ ﺗﻄﺒﻴﻖ آﺧﺮ ﻟ ﻲ ﻧﻈﻔﺮ ﺑﻤﺎ ﻳﻘﺪﻣﮫ ﻣﻦ وﻇﺎﺋﻒ،
ﺬا اﻟﻨﻮع ﻣﻦ اﻟﺒ ﻴﺎت اﳌﻌﻠﻮﻣﺎﺗﻴﺔ اﳌﺘﻘﺪﻣﺔ ،ﻋﻦ ﻣﺤﺎوﻟﺔ ﺴﻴﻄﺔ ﻣﻨﺎ إ اﻟﺘﺪﻟﻴﻞ ﻋ
اﻟﺒ ﻴﺎت اﳌﻮﺟ ﺔ ﺧﺪﻣﺎﺗﻴﺎ SOAأﺗﺤﺪث.
ﺴﺎب اﻟﻮزن اﳌﺜﺎ ﻟﻠﺬ ﻮر و ﻧﺎث ،ﺑﺤﻴﺚ اﳌﺜﺎل اﻟﺬي ﺳﻨﻌﻤﻞ ﻋﻠﻴﮫ ،ﻮ ﺗﻄﺒﻴﻖ
ﺬﻩ ء ﺗﻄﺒﻴﻘﺎ ﻳﻄﻠﺐ ﻣﻦ اﳌﺴﺘﺨﺪم إدﺧﺎل ﺟ ﺴﮫ وﻃﻮﻟﮫ ﺑﺎﻟﺴ ﺘﻤ ،و ﻨﺎء ﻋ ﺳﻨ
اﳌﺪﺧﻼت ،ﺳ ﺘﻢ اﺳﺘﺪﻋﺎء داﻟﺔ ﻣﻮﺟﻮدة ﻋ Serviceﻣﺴﺘﻀﺎف ﻋ ﺳ ﻓﺮ ،ﻓ ﺴﺘﻘﺒﻞ
ﺎﺗﮫ اﻟﺪاﻟﺔ اﻟﻘﻴﻢ اﳌﺮﺳﻠﺔ وﺗﺤﺴﺐ اﻟﻮزن اﳌﺜﺎ .
][16
ﺎص ﻳ ﻮن ﻗﺒﻞ أن ﻧﺒﺎﺷﺮ اﻟﻌﻤﻞ ،ﻳ ﺒ أن ﻌﻠﻢ أن ﺻﻴﻐﺔ ﺣﺴﺎب اﻟﻮزن اﳌﺜﺎ ﻟﻸ
ﻋ اﻟﺸ ﻞ اﻟﺘﺎ :
إذا ﺎن ا ﺲ ذﻛﺮا ،ﻓﺈن اﻟﻮزن اﳌﺜﺎ ﺴﺎوي اﻟﻄﻮل ﻧﺎﻗﺺ 0.90 100أي
][17
ﻌﺪ أن ﻳﺘﻢ إ ﺸﺎء اﳌﺸﺮوع ﺳﺘﻼﺣﻈﻮن ﻇ ﻮر ﻣﻠﻒ اﻟﻮاﺟ ﺔ ،IService1.csوﻣﻠﻒ
ا ﺪﻣﺔ Service1.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);
}
}
[19]
أﻣﺎ، ﻗﻤﻨﺎ ﺑﺤﺴﺎب اﻟﻮزن اﳌﺜﺎ ﺑﻨﺎء ﻋ ﻧﻮع ا ﺲ واﻟﻄﻮلIdealWeight اﻟﺪاﻟﺔ
: ﺸﺄن اﻟﺴﻄﺮ اﻟﺘﺎ
double Weight = sex == 'm' ? (height - 100) *
0.90: (height - 100) * 0.85;
[20]
: ﺣﺎل اﺳﺘﺨﺪﻣﻨﺎ اﻟﺮاﺑﻂ اﻟﺜﻼ ﻲ، أو ﻋ اﻟﺸ ﻞ اﻟﺘﺎ
وﻓﻴﻤﺎ، وﻣﻠﻒ ا ﺪﻣﺔ، ﻧ ﻮن ﻗﺪ اﻧ ﻴﻨﺎ ﻣﻦ إ ﺸﺎء اﻟﻮاﺟ ﺔ،ﷲ ﺬﻩ اﻟﻜﻴﻔﻴﺔ أﺣﺒ
:ﻳ اﻟ ﻮد اﻟﺸﺎﻣﻞ ﻟ ﻞ ﻣ ﻤﺎ
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;
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(result);
Console.Read();
}
}
}
[31]
اﳌﺜﺎل أﻋﻼﻩ ،ﻃﻠﺒﻨﺎ ﻣﻦ اﳌﺴﺘﺨﺪم إدﺧﺎل ﻃﻮﻟﮫ وﺟ ﺴﮫ ،ﺛﻢ اﺳﺘﺪﻋﻴﻨﺎ اﻟﺪاﻟﻴﺔ
ﻣﺠﺎل ﺳﻤﺎء اﻟﻜﻼس Service1واﻟ ﺗﻮﺟﺪ ﺑﺪور ﺎ IdealWeightاﳌﻮﺟﻮدة
.NS_Ideal_Weight
][32
ﺛﻢ ﻧﻀﻐﻂ ﻋﻠﻴﮫ ﺑﻴﻤ ن اﳌﺎوس وﻧﺨﺘﺎر ﻣﺮ Update Service Referenceاﻟﺬي ﺳﻴﻘﻮم
ﻌﻤﻠﻴﺔ اﻟﺘﺤﺪﻳﺚ:
][33
ﺧﺎﺗﻤﺔ:
ﷲ ﻧ ﻮن ﻗﺪ اﻧ ﻴﻨﺎ ﻣﻦ اﻟﻜﺘﺎب ،ﻋ أﻣﻞ أن أ ﻮن ﻗﺪ وﻓﻘﺖ ﺷﺮح ﻨﺎ أﺣﺒ إ
ﺬﻩ اﻟﺘﻘﻨﻴﺔ.
ء إذا ﻣﺎ ﺗﻢ ﻧﻘﺼﺎن ،ﻓﺈن وﺟﺪﺗﻢ ﻃﻴﺎت ﺬا اﻟﻜﺘﺎب أﺧﻄﺎء ﻟﻐﻮ ﺔ أو ﺗﻘﻨﻴﺔ أو ﻟﻞ
ﻟﺪﻳﻜﻢ ﻣﻼﺣﻈﺎت واﻗ اﺣﺎت ﻟﺘﺤﺴ ن إﻧﺘﺎﺟﺎﺗﻨﺎ اﳌﻜﺘﻮ ﺔ أو اﳌﺮﺋﻴﺔ ﻓﻼ ﺗ ددوا ﺑﻤﺮاﺳﻠﺘﻨﺎ
ﻋ اﻟﻌﻨﺎو ﻦ ﻟﻜ وﻧﻴﺔ اﻟﺘﺎﻟﻴﺔ:
mobarmijoun@gmail.com
how2progspace@gmail.com
][34