Π‘Π΅ΡΠ²ΠΈΡΡ ΠΊΠΎΠ½ΡΡΠ°ΠΊΡΠΎΠ² WCF
ΠΠ»Ρ ΠΏΠΎΡΡΡΠΎΠ΅Π½ΠΈΡ ΡΠ°ΡΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΡΡ ΡΡΠ΅Π΄ΡΡΠ² ΠΊΠ°ΠΊ WCF ΠΈΠ»ΠΈ .Net Remoting ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ ΠΏΡΠΈΠ½ΡΠΈΠΏ ΠΏΠΈΡΠΎΠ³Π° ΠΈΠ· ΡΠ»ΠΎΠ΅Π², ΠΊΠ°ΠΆΠ΄ΡΠΉ ΡΠ»ΠΎΠΉ ΠΊΠΎΡΠΎΡΠΎΠ³ΠΎ ΠΎΡΠ²Π΅ΡΠ°Π΅Ρ Π·Π° ΡΠ²ΠΎΠΉ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΡΠΉ ΡΡΠΎΠ²Π΅Π½Ρ Π°Π±ΡΡΡΠ°ΠΊΡΠΈΠΈ ΠΈ Π½Π΅ Π·Π½Π°Π΅Ρ Π½ΠΈΡΠ΅Π³ΠΎ ΠΎ Π½ΠΈΠΆΠ΅Π»Π΅ΠΆΠ°ΡΠΈΡ ΡΡΠΎΠ²Π½ΡΡ . Π’ΠΎ Π΅ΡΡΡ ΠΈΠ½ΡΡΠ°ΡΡΡΡΠΊΡΡΡΠ° WCF ΡΠΎΡΡΠΎΠΈΡ ΠΈΠ· Π΄Π²ΡΡ Π³Π»Π°Π²Π½ΡΡ ΡΡΠΎΠ²Π½Π΅ΠΉ: Service Model Layer ΠΈ Channel Layer. ΠΠ΅ΡΠ²ΡΠΉ ΡΡΠΎΠ²Π΅Π½Ρ Π±Π»ΠΈΠΆΠ΅ ΠΊ ΡΠ°ΠΌΠΎΠΌΡ ΡΠ΅ΡΠ²ΠΈΡΡ ΠΊΠ»ΠΈΠ΅Π½ΡΠ° ΠΈ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠΈΠ²Π°Π΅Ρ ΠΏΡΠ΅Π²ΡΠ°ΡΠ΅Π½ΠΈΠ΅ ΠΌΠ΅ΡΠΎΠ΄Π° ΠΈ Π΅Π³ΠΎ… Π§ΠΈΡΠ°ΡΡ Π΅ΡΡ >
Π‘Π΅ΡΠ²ΠΈΡΡ ΠΊΠΎΠ½ΡΡΠ°ΠΊΡΠΎΠ² WCF (ΡΠ΅ΡΠ΅ΡΠ°Ρ, ΠΊΡΡΡΠΎΠ²Π°Ρ, Π΄ΠΈΠΏΠ»ΠΎΠΌ, ΠΊΠΎΠ½ΡΡΠΎΠ»ΡΠ½Π°Ρ)
Windows Communication Foundation (WCF) — ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΡΠΉ ΡΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊ, ΠΏΡΠ΅Π΄Π½Π°Π·Π½Π°ΡΠ΅Π½Π½ΡΠΉ Π΄Π»Ρ ΠΎΠ±ΠΌΠ΅Π½Π° Π΄Π°Π½Π½ΡΠΌΠΈ ΠΌΠ΅ΠΆΠ΄Ρ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡΠΌΠΈ, ΠΊΠΎΡΠΎΡΡΠ΅ Π²Ρ ΠΎΠ΄ΡΡ Π² ΡΠΎΡΡΠ°Π² .NET Framework. ΠΠ½ ΡΠ²Π»ΡΠ΅ΡΡΡ Π»ΠΎΠ³ΠΈΡΠ΅ΡΠΊΠΈΠΌ ΡΠ°Π·Π²ΠΈΡΠΈΠ΅ΠΌ ΠΏΡΠ΅Π΄ΡΠ΄ΡΡΠΈΡ ΡΠ΅Ρ Π½ΠΎΠ»ΠΎΠ³ΠΈΠΉ ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ ΠΠ°ΠΉΠΊΡΠΎΡΠΎΡΡ, Π² ΡΠ°ΡΡΠ½ΠΎΡΡΠΈ Π²Π΅Π±-ΡΠ΅ΡΠ²ΠΈΡΠΎΠ², .Net Remoting ΠΈ DCOM. WebSphere Integration Developer ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΡ ΠΈΠ½ΡΠ΅Π³ΡΠ°ΡΠΈΠΈ Π΄Π»Ρ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ Π½Π° ΠΏΠ»Π°ΡΡΠΎΡΠΌΠ΅ Eclipse 3.0 SCA ΠΌΠΎΠ΄ΡΠ»Π΅ΠΉ ΠΈ ΡΠ΅ΡΠ²ΠΈΡΠ½ΡΠΉ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ ΠΏΡΠΈ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ.
Π ΠΎΡΠ½ΠΎΠ²Π΅ WCF Π»Π΅ΠΆΠΈΡ SOA, ΠΊΠΎΡΠΎΡΠ°Ρ Π·Π°ΠΊΠ»ΡΡΠ°Π΅ΡΡΡ Π² ΡΠΎΠΌ, ΡΡΠΎ Π½Π° ΡΠ΅ΡΠ²Π΅ΡΠ΅ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ Π½Π΅ΠΊΠΎΡΠΎΡΠΎΠ΅ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΡΠ΅ΡΠ²ΠΈΡΠΎΠ², ΠΊΠΎΡΠΎΡΡΠ΅ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΡΡ ΡΠΎΠ±ΠΎΠΉ Π³ΡΡΠΏΠΏΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΉ, ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΡΡ Π² Π½Π΅ΠΊΠΎΡΠΎΡΠΎΠΌ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ΅ Π΄Π»Ρ ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΡ Π°Π±ΡΡΡΠ°ΠΊΡΠ½ΡΡ Π²Ρ ΠΎΠ΄Π½ΡΡ /ΠΈΡΡ ΠΎΠ΄Π½ΡΠ· ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠ². ΠΡΠ΅ ΡΡΠΎ ΠΎΠΏΠΈΡΡΠ²Π°Π΅ΡΡΡ Π² ΡΠ·ΡΠΊΠ΅ WSDL (Web Service Description Language) ΠΈ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ Π²ΡΡΡΠ°Π²Π»Π΅Π½ΠΎ Π²Π²Π΅ΡΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ, ΡΠ°ΠΊ Π½Π°Π·ΡΠ²Π°Π΅ΠΌΡΡ mex-endpoints (Metadata Exchange Endpoints). ΠΡΠΎ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΠΏΠΎΠ»ΡΡΠΈΡΡ «ΠΌΠ΅ΡΠ°Π΄Π°Π½Π½ΡΠ΅» ΡΠ΅ΡΠ²ΠΈΡΠ°. ΠΠΎΠ΄ΠΊΠ»ΡΡΠ°ΡΡΡ ΠΊ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΡ, ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ»ΡΡΠΈΡΡ ΠΎΠΏΠΈΡΠ°Π½ΠΈΠ΅ ΡΠ΅ΡΠ²ΠΈΡΠ° ΠΈ Π²ΡΠ΅Ρ Π΅Π³ΠΎ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΉ, Π° ΡΠ°ΠΊΠΆΠ΅ ΡΠ³Π΅Π½Π΅ΡΠΈΡΠΎΠ²Π°ΡΡ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠΈΠΉ ΠΏΡΠΎΠΊΡΠΈ-ΠΊΠ»Π°ΡΡ Π΄Π»Ρ Π·Π°Π΄Π°Π½Π½ΠΎΠ³ΠΎ ΡΠ·ΡΠΊΠ° ΠΈΠ»ΠΈ ΠΏΠ»Π°ΡΡΠΎΡΠΌΡ. Π‘Π΅ΡΠ²ΠΈΡ ΠΎΠΏΠΈΡΡΠ²Π°Π΅ΡΡΡ Π² ΡΠ·ΡΠΊΠ΅ WCF, Π° ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π΅Π³ΠΎ ΠΌΠΎΠΆΠ½ΠΎ Ρ Java/Python/Ruby ΠΈ Ρ. ΠΏ. ΠΠ»ΠΈΠ΅Π½ΡΡ Π² ΡΠ²ΠΎΡ ΠΎΡΠ΅ΡΠ΅Π΄Ρ ΠΈΠΌΠ΅ΡΡ Π½Π° ΡΡΠΎΡΠΎΠ½Π΅ ΠΏΡΠΎΠΊΡΠΈ-ΠΊΠ»Π°ΡΡΡ, ΠΊΠΎΡΠΎΡΡΠ΅ ΡΠΎΠ΄Π΅ΡΠΆΠ°Ρ ΡΡΡΠ»ΠΊΡ Π½Π° ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠΈΠ΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ Π½Π° ΡΡΠΎΡΠΎΠ½Π΅ ΡΠ΅ΡΠ²ΠΈΡΠ°.
Π ΠΏΡΠ΅Π΄Π΅Π»Π°Ρ WCF MS.Net Π΄Π΅ΠΉΡΡΠ²ΡΠ΅Ρ ΡΠ΅Ρ Π½ΠΎΠ»ΠΎΠ³ΠΈΡ ΠΈ ΡΠ°Π±ΡΠΈΠΊΠΈ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌ Π΄Π»Ρ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΡ Π²Π΅Π±-ΡΠ»ΡΠΆΠ±, Π° ΡΠ°ΠΊΠΆΠ΅ ΡΠ°Π±ΡΠΈΠΊΠ° ΡΠ΅ΡΠ²ΠΈΡΠΎΠ². ΠΡΠ½ΠΎΠ²Ρ ΡΠ΅Ρ Π½ΠΎΠ»ΠΎΠ³ΠΈΠΈ ΡΠΎΡΡΠ°Π²Π»ΡΡΡ ΡΡ Π΅ΠΌΡ, «ΡΠ΅ΡΠ΅ΠΏΡΡ «, ΠΌΠ΅ΡΠΎΠ΄Ρ ΠΈ ΡΡΠ΅Π΄ΡΡΠ²Π° ΠΏΠΎΡΡΡΠΎΠ΅Π½ΠΈΡ ΡΠ°Π±ΡΠΈΠΊ ΡΠ°Π·Π½ΠΎΠ³ΠΎ Π½Π°Π·Π½Π°ΡΠ΅Π½ΠΈΡ.
Π€Π°Π±ΡΠΈΠΊΠ° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌ ΡΠ΅ΡΠ²ΠΈΡΠ½ΠΎΠ³ΠΎ ΡΠΈΠΏΠ° Π²ΠΊΠ»ΡΡΠ°Π΅Ρ Π² ΡΠ΅Π±Ρ Π½Π°Π±ΠΎΡ ΠΏΠΎΡΡΠ΅Π±Π½ΡΡ ΡΠ΅ΡΡΡΡΠΎΠ², Π±Π»ΠΎΠΊΠΎΠ² ΠΊΠΎΠ΄Π°, Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈ, ΠΎΠ±ΡΠ°Π·ΡΠΎΠ² ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ, Π°Π²ΡΠΎΠΌΠ°ΡΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Π½ΡΡ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠΎΠ² ΠΈ ΠΏΠ°ΡΠ΅ΡΠ½ΠΎΠ² VSIP Π΄Π»Ρ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ Π½Π° ΠΈΡ ΠΎΡΠ½ΠΎΠ²Π΅ ΡΠ°Π·Π½ΡΡ ΠΏΠ°ΠΊΠ΅ΡΠΎΠ². ΠΡΡΠΏΠΏΠ° Ρ&Ρ Microsofts ΡΠΎΠ·Π΄Π°Π΅Ρ ΡΠ΅ΠΊΠΎΠΌΠ΅Π½Π΄Π°ΡΠΈΠΈ, ΡΡ Π΅ΠΌΡ ΠΈ ΠΌΠ΅ΡΠΎΠ΄Ρ, Π° ΡΠ°ΠΊΠΆΠ΅ ΡΡΠ°Π½Π΄Π°ΡΡΡ ΠΈΡ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠ°ΠΌΠΈ Π³ΠΎΡΠΎΠ²ΠΎΠΉ ΠΏΡΠΎΠ΄ΡΠΊΡΠΈΠΈ. Π€Π°Π±ΡΠΈΠΊΠ° ΡΠ΅ΡΠ²ΠΈΡΠΎΠ² Π΄Π°Π΅Ρ ΡΠ΅ΠΊΠΎΠΌΠ΅Π½Π΄Π°ΡΠΈΠΈ Π΄Π»Ρ ΠΈΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ ΠΏΡΠΈ ΠΏΡΠΎΠ΅ΠΊΡΠΈΡΠΎΠ²Π°Π½ΠΈΠΈ ΠΈ ΠΊΠΎΠ½ΡΡΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΠΈ, ΠΊΠΎΡΠΎΡΡΠ΅ Π½Π°ΠΊΠ°ΠΏΠ»ΠΈΠ²Π°ΡΡΡΡ Π² Global Bank. Π Π½ΠΈΠΌ ΠΎΡΠ½ΠΎΡΡΡΡΡ ASP.Net Π΄Π»Ρ ΠΏΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΡ Π² WCF.
Π€Π°Π±ΡΠΈΠΊΠΈ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌ ΠΈ ΡΠ΅ΡΠ²ΠΈΡΠΎΠ² Π±Π°Π·ΠΈΡΡΡΡΡΡ Π½Π° Π³ΠΎΡΠΎΠ²ΠΎΠΌ Π½Π°Π±ΠΎΡΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΡΡ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ² ΠΈ ΡΠ°Π·Π½ΠΎΠ³ΠΎ ΡΠΎΠ΄Π° ΡΠ΅ΡΠ²ΠΈΡΠΎΠ² Π² MS.Net. Π€ΡΠ½ΠΊΡΠΈΠΎΠ½ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ WCF Π·Π°Π²ΠΈΡΠΈΡ ΠΎΡ ΡΠ°ΠΊ Π½Π°Π·ΡΠ²Π°Π΅ΠΌΡΡ ΠΊΠΎΠ½Π΅ΡΠ½ΡΡ ΡΠΎΡΠ΅ΠΊ (endpoint), ΡΡΠΎ ΡΠΎΡΡΠ°Π²Π»ΡΠ΅Ρ ΡΠ²ΡΠ·Ρ «Address — Binding — Contract», «ΠΠΠ‘». ΠΠ°ΠΆΠ΄Π°Ρ ΡΠΎΡΡΠ°Π²Π»ΡΡΡΠ°Ρ ΠΈΠ³ΡΠ°Π΅Ρ Π²Π°ΠΆΠ½ΡΡ ΡΠΎΠ»Ρ:
" Address" ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ Π² ΡΠ΅Π±Π΅ ΠΌΠ΅ΡΡΠΎ ΡΠ°ΡΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΡ ΠΊΠΎΠ½Π΅ΡΠ½ΠΎΠΉ ΡΠΎΡΠΊΠΈ ΠΏΠΎ Π°Π±ΡΠΎΠ»ΡΡΠ½ΠΎΠΌΡ ΠΈΠ»ΠΈ ΠΎΡΠ½ΠΎΡΠΈΡΠ΅Π»ΡΠ½ΠΎΠΌΡ Π°Π΄ΡΠ΅ΡΡ;
" Binding" Π·Π°Π΄Π°Π΅Ρ ΠΏΡΠΈΠ²ΡΠ·ΠΊΡ ΠΈ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΡ ΡΡΠ°Π½ΡΠΏΠΎΡΡ, Π½Π° ΠΎΡΠ½ΠΎΠ²Π΅ ΠΊΠΎΡΠΎΡΠΎΠ³ΠΎ Π±ΡΠ΄Π΅Ρ ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΡΡ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΠΈΠ΅. Π ΠΎΠ±ΡΠ΅ΠΊΡΠ½ΠΎΠΉ ΠΌΠΎΠ΄Π΅Π»ΠΈ WCF Π΅ΡΡΡ ΡΡΠ΄ ΠΊΠ»Π°ΡΡΠΎΠ²ΠΏΡΠΈΠ²ΡΠ·ΠΎΠΊ (BasicHttpBinding Π·Π° HTTP, NetTcpBinding) Π·Π° ΡΡΠ°Π½ΡΠΏΠΎΡΡΠΎΠΌ TCP; ΠΎΠΏΠ΅ΡΠ°ΡΠΈΡ «Contract» Π·Π°Π΄Π°Π΅Ρ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΠΈΠ΅ ΠΊΠ»ΠΈΠ΅Π½ΡΠ° ΠΈ ΡΠ΅ΡΠ²ΠΈΡΠ° ΠΈ ΡΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°Π΅Ρ ΡΠ²ΡΠ·Ρ Ρ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠΈΠΌΠΈ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΡΠΌΠΈ ΡΠ΅ΡΠ²ΠΈΡΠ°, ΠΊΠΎΡΠΎΡΡΠΉ ΡΡΡΠΎΠΈΡ ΠΊΠ»Π°ΡΡ-ΠΏΡΠΎΠΊΡΠΈ Π½Π° ΡΡΠΎΡΠΎΠ½Π΅ ΠΊΠ»ΠΈΠ΅Π½ΡΠ°.
ΠΠ°ΠΊ ΠΏΡΠ°Π²ΠΈΠ»ΠΎ, Π½Π° ΡΠ΅ΡΠ²ΠΈΡΠ½ΠΎΠΉ ΡΡΠΎΡΠΎΠ½Π΅ Π·Π°Π΄Π°Π΅ΡΡΡ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎ ΠΊΠΎΠ½Π΅ΡΠ½ΡΡ ΡΠΎΡΠ΅ΠΊ. ΠΡΠΎΠΌΠ΅ ΡΠΎΠ³ΠΎ, ΠΌΠΎΠΆΠ½ΠΎ ΡΠ°Π·ΠΌΠ΅ΡΡΠΈΡΡ Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ ΡΠ΅ΡΠ²ΠΈΡΠΎΠ² Π½Π° ΡΠ΅ΡΠ²ΠΈΡΠ½ΠΎΠΉ ΡΡΠΎΡΠΎΠ½Π΅. Π ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ΅, ΡΠ΅ΡΠ²ΠΈΡΠ½Π°Ρ ΡΡΠΎΡΠΎΠ½Π° ΡΠ°ΡΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠ³ΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Π±ΡΠ΄Π΅Ρ Π²ΡΠ³Π»ΡΠ΄Π΅ΡΡ ΠΊΠ°ΠΊ ΡΠΎΠ²ΠΎΠΊΡΠΏΠ½ΠΎΡΡΡ ΠΊΠΎΠ½Π΅ΡΠ½ΡΡ ΡΠΎΡΠ΅ΠΊ. Π ΡΡΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ ΠΊΠ»ΠΈΠ΅Π½Ρ ΠΎΡΡΡΠ΅ΡΡΠ²Π»ΡΠ΅Ρ ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΠ΅ Ρ ΡΠΎΠΉ ΠΊΠΎΠ½Π΅ΡΠ½ΠΎΠΉ ΡΠΎΡΠΊΠΎΠΉ, ΠΊΠΎΡΠΎΡΠ°Ρ Π΅ΠΌΡ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ.
ΠΠ»Ρ ΠΏΠΎΡΡΡΠΎΠ΅Π½ΠΈΡ ΡΠ°ΡΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΡΡ ΡΡΠ΅Π΄ΡΡΠ² ΠΊΠ°ΠΊ WCF ΠΈΠ»ΠΈ .Net Remoting ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ ΠΏΡΠΈΠ½ΡΠΈΠΏ ΠΏΠΈΡΠΎΠ³Π° ΠΈΠ· ΡΠ»ΠΎΠ΅Π², ΠΊΠ°ΠΆΠ΄ΡΠΉ ΡΠ»ΠΎΠΉ ΠΊΠΎΡΠΎΡΠΎΠ³ΠΎ ΠΎΡΠ²Π΅ΡΠ°Π΅Ρ Π·Π° ΡΠ²ΠΎΠΉ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΡΠΉ ΡΡΠΎΠ²Π΅Π½Ρ Π°Π±ΡΡΡΠ°ΠΊΡΠΈΠΈ ΠΈ Π½Π΅ Π·Π½Π°Π΅Ρ Π½ΠΈΡΠ΅Π³ΠΎ ΠΎ Π½ΠΈΠΆΠ΅Π»Π΅ΠΆΠ°ΡΠΈΡ ΡΡΠΎΠ²Π½ΡΡ . Π’ΠΎ Π΅ΡΡΡ ΠΈΠ½ΡΡΠ°ΡΡΡΡΠΊΡΡΡΠ° WCF ΡΠΎΡΡΠΎΠΈΡ ΠΈΠ· Π΄Π²ΡΡ Π³Π»Π°Π²Π½ΡΡ ΡΡΠΎΠ²Π½Π΅ΠΉ: Service Model Layer ΠΈ Channel Layer. ΠΠ΅ΡΠ²ΡΠΉ ΡΡΠΎΠ²Π΅Π½Ρ Π±Π»ΠΈΠΆΠ΅ ΠΊ ΡΠ°ΠΌΠΎΠΌΡ ΡΠ΅ΡΠ²ΠΈΡΡ ΠΊΠ»ΠΈΠ΅Π½ΡΠ° ΠΈ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠΈΠ²Π°Π΅Ρ ΠΏΡΠ΅Π²ΡΠ°ΡΠ΅Π½ΠΈΠ΅ ΠΌΠ΅ΡΠΎΠ΄Π° ΠΈ Π΅Π³ΠΎ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠ² Π² ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ Π΄Π»Ρ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΠΈ Π±ΠΎΠ»Π΅Π΅ Π½ΠΈΠ·ΠΊΠΎΠΌΡ ΠΊΠ°Π½Π°Π»ΡΠ½ΠΎΠΌΡ ΡΡΠΎΠ²Π½Ρ. ΠΠ°Π½Π°Π»ΡΠ½ΡΠΉ ΡΡΠΎΠ²Π΅Π½Ρ (Channel Layer) ΠΈΠΊΠ°ΠΏΡΡΠ»ΠΈΡΡΡΡ Π² ΡΠ΅Π±Π΅ ΠΊΠ°Π½Π°Π» ΠΏΠ΅ΡΠ΅Π΄Π°ΡΠΈ Π΄Π°Π½Π½ΡΡ , ΠΊΠΎΡΠΎΡΡΡ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎ: ΠΊΠ°Π½Π°Π»ΠΎΠ², ΠΊΠΎΡΠΎΡΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡ ΠΊΠ°ΠΊ ΡΡΠ°Π½ΡΠΏΠΎΡΡ TCP, Http, Named Pipes ΠΈ Ρ. Π΄. ΠΠ°ΠΆΠ΄ΡΠΉ ΠΈΠ· ΡΡΠΈΡ ΡΡΠΎΠ²Π½Π΅ΠΉ ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ ΠΏΠΎΠ΄ΡΡΠΎΠ²Π½ΠΈ, ΠΈ ΠΌΠΎΠΆΠ΅Ρ Π²ΠΊΠ»ΡΡΠΈΡΡΡΡ Π² Π»ΡΠ±ΠΎΠΉ ΠΈΠ· Π½ΠΈΡ .
ΠΠΎΠ½ΡΡΠ°ΠΊΡΡ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΡΡ ΡΠΎΠ±ΠΎΠΉ ΠΎΠΏΠΈΡΠ°Π½ΠΈΠ΅ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠΉ, ΠΏΠ΅ΡΠ΅Π΄Π°Π½Π½ΡΡ ΠΊΠΎΠ½Π΅ΡΠ½ΡΠΌΠΈ ΡΠ»ΡΠΆΠ±Π°ΠΌΠΈ Ρ Π²ΠΎΠ·Π²ΡΠ°ΡΠΎΠΌ. ΠΠΎΠ½Π΅ΡΠ½Π°Ρ ΡΠΎΡΠΊΠ° Π΄ΠΎΠ»ΠΆΠ½Π° ΡΠΏΠ΅ΡΠΈΡΠΈΡΠΈΡΠΎΠ²Π°ΡΡΡ ΠΈ ΠΌΠΎΠΆΠ΅Ρ Π²ΡΠΏΠΎΠ»Π½ΡΡΡΡΡ Π² ΡΠΎΡΠΌΠ°ΡΠ΅ ΠΎΠΆΠΈΠ΄Π°Π΅ΠΌΡΡ Π΄Π°Π½Π½ΡΡ . Π‘ΠΎΠ²ΠΎΠΊΡΠΏΠ½ΠΎΡΡΡ ΡΡΠΈΡ ΡΠΏΠ΅ΡΠΈΡΠΈΠΊΠ°ΡΠΈΠΉ ΠΈ ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΊΠΎΠ½ ΡΠ°ΠΊΡΠΎΠΌ.
WCF ΡΠΎΠ΄Π΅ΡΠΆΠ°Ρ ΡΡΠΈ Π²ΠΈΠ΄Π° ΠΊΠΎΠ½ΡΡΠ°ΠΊΡΠΎΠ²:
- 1) ΡΠ΅ΡΠ²ΠΈΡΠΎΠ² Π΄Π»Ρ ΠΎΠΏΠΈΡΠ°Π½ΠΈΡ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΡΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΉ, ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π½ΡΡ ΡΠ΅ΡΠ²ΠΈΡΠΎΠΌ. ΠΠ½ΡΡΡΠΈ ΠΊΠΎΠ½ΡΡΠ°ΠΊΡΠ° ΡΠ΅ΡΠ²ΠΈΡΠ° ΠΈΠΌΠ΅ΡΡΡΡ ΠΊΠΎΠ½ΡΡΠ°ΠΊΡΡ ΠΎΠ± ΠΎΠΏΠ΅ΡΠ°ΡΠΈΡΡ , ΠΊΠ°ΠΊ ΠΎΡΠ΄Π΅Π»ΡΠ½ΡΠ΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ ΡΠ΅ΡΠ²ΠΈΡΠ°, ΠΎΡΠΎΡΡΠ΅ ΡΠ΅Π°Π»ΠΈΠ·ΡΡΡ ΡΡΠ½ΠΊΡΠΈΠΈ;
- 2) Π΄Π°Π½Π½ΡΡ , ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΡΡΠΈΡ ΡΠΎΡΠΌΠ°Ρ Π΄Π°Π½Π½ΡΡ , ΠΊΠΎΡΠΎΡΡΠΌΠΈ Π±ΡΠ΄ΡΡ ΠΎΠ±ΠΌΠ΅Π½ΠΈΠ²Π°ΡΡΡΡ ΡΠ΅ΡΠ²ΠΈΡΡ. ΠΡΠΎ ΠΎΡΠ½ΠΎΡΠΈΡΡΡ ΠΊΠ°ΠΊ ΠΊ Π·Π°ΠΏΡΠΎΡΡ Π½Π° ΡΠ΅ΡΠ²ΠΈΡ, ΡΠ°ΠΊ ΠΈ ΠΊ ΠΎΠΊΡΠ΅ΡΡ ΡΠ΅ΡΠ²ΠΈΡΠ°. ΠΡΠ»ΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΡΡ ΠΏΡΠΈΠΌΠΈΡΠΈΠ²Π½ΡΠ΅ ΡΠΈΠΏΡ — int, string ΠΈ Π΄Ρ., ΡΠΎ ΠΊΠΎΠ½ΡΡΠ°ΠΊΡ Π½Π΅ Π½ΡΠΆΠ΅Π½, ΠΏΠΎΡΠΎΠΌΡ ΡΡΠΎ .Net ΠΏΠΎΠ½ΠΈΠΌΠ°Π΅ΡΡΡ ΠΊΠ°ΠΊ ΡΠ΅ΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΡ ΠΈ Π΄ΠΈΡΠ΅ΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΡ ΡΠΈΠΏΠΎΠ². Π ΡΠ»ΡΡΠ°Π΅ ΠΏΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΡ ΠΊΠΎΠΌΠΏΠ»Π΅ΠΊΡΠ½ΡΡ ΡΠΈΠΏΠΎΠ² — Customers, Order ΠΈ Π΄Ρ., Π½ Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΡΠΊΠ°Π·Π°ΡΡ ΠΏΡΠΈΠ½ΡΠΈΠΏ ΡΠ΅ΡΠΈΠ°Π»ΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΠΈ Π΄ΠΈΡΠ΅ΡΠΈΠ°Π»ΠΈΠ·Π°ΠΈΠΈ ΡΡΠΈΡ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ²;
- 3) ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠΉ, ΠΊΠ°ΠΊ ΡΠΈΠΏ ΠΊΠΎΠ½ΡΡΠ°ΠΊΡΠ°, ΠΊΠΎΡΠΎΡΡΠΉ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π΄Π»Ρ ΡΠΎΠ³ΠΎ, ΡΡΠΎΠ±Ρ ΠΏΠΎΠ»ΡΡΠΈΡΡ ΠΊΠΎΠ½ΡΡΠΎΠ»Ρ Π½Π°Π΄ Π·Π°Π³Π»Π°Π²Π½ΠΎΠΌ SOAP ΠΏΠ°ΠΊΠ΅ΡΠ°.
ΠΡΠΈΠΌΠ΅Ρ ΠΎΠΏΠΈΡΠ°Π½ΠΈΡ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡ Π² ΡΠ·ΡΠΊΠ΅ XML.
ΠΠ»Ρ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠ΅Π½ΠΈΡ ΠΈΠ½ΡΠ΅ΡΠΎΠΏΠ΅ΡΠ°Π±Π΅Π»ΡΠ½ΠΎΡΡΠΈ ΠΊΠΎΠ½ΡΡΠ°ΠΊΡΠΎΠ² Ρ ΡΠΈΡΠΎΠΊΠΈΠΌ Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½ΠΎΠΌ ΡΠΈΡΡΠ΅ΠΌ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΡΡ ΡΠ·ΡΠΊΠΈ WSDL ΠΈ XSD, Π² ΡΡΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° ΡΠ°Π±ΠΎΡΠ°Π΅Ρ Ρ ΡΠΈΠ½Π°ΠΌΠΈ CLR ΠΈ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΠΎΡΠΎΠ±ΡΠ°Π·ΠΈΡΡ ΠΎΠ΄Π½Ρ ΡΠΈΡΡΠ΅ΠΌΡ ΡΠΈΠΏΠΎΠ² Π½Π° Π΄ΡΡΠ³ΡΡ. Π’Π°ΠΊΠ°Ρ Π·Π°Π΄Π°ΡΠ° ΡΠ΅ΡΠ°Π΅ΡΡΡ Π² ΡΡΠΈ ΡΡΠ°ΠΏΠ°.
Π‘Π½Π°ΡΠ°Π»Π° ΠΏΡΠΈ Π½Π°ΠΏΠΈΡΠ°Π½ΠΈΠΈ ΠΊΠΎΠ΄Π° ΡΠ»ΡΠΆΠ±Ρ ΠΏΠΎΡΡΠ°Π²Π»ΡΠ΅ΡΡΡ ΠΊΠ»Π°ΡΡ Ρ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΡΠΌΠΈ Π² WCF Π°ΡΡΠΈΠ±ΡΡΠ°ΠΌΠΈ [ServiceContract], [OperationContract], [FaultContract], [MessageContract] ΠΈ [DataContract].
ΠΡΠΈ Π½Π°ΠΏΠΈΡΠ°Π½ΠΈΠΈ ΠΊΠ»ΠΈΠ΅Π½ΡΡΠΊΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π° Π² ΡΠ΅ΡΠ²ΠΈΡΠ΅ ΠΏΡΠΈΠ²ΠΎΠ΄ΡΡΡΡ Π΄Π΅ΡΠ°Π»ΠΈ ΠΊΠΎΠ½ΡΡΠ°ΠΊΡΠ° ΠΏΠΎΡΡΠ΅Π΄ΡΡΠ²ΠΎΠΌ Visual Studio ΠΈΠ»ΠΈ ΡΡΠΈΠ»ΠΈΡΡ svcutil. exe, ΠΊΠΎΡΠΎΡΠ°Ρ Π²ΡΠ·ΡΠ²Π°Π΅Ρ ΠΈΠ½ΡΡΠ°ΡΡΡΡΠΊΡΡΡΠ½ΡΡ ΠΊΠΎΠ½Π΅ΡΠ½ΡΡ ΡΠΎΡΠΊΡ ΡΠ΅ΡΠ²ΠΈΡΠ° Π΄Π»Ρ Π²ΠΎΠ·Π²ΡΠ°ΡΠ° Π΄Π°Π½Π½ΡΡ , Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΡΡ Π΄Π»Ρ Π³Π΅Π½Π΅ΡΠ°ΡΠΈΠΈ WSDL Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ° ΠΏΡΠΈ ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΠΈ ΠΈΡ Π°ΡΡΠΈΠ±ΡΡΠΎΠ².
ΠΠ° ΡΡΠ°ΠΏΠ΅ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΠΊΠ»ΠΈΠ΅Π½ΡΠ° Π²ΡΠ·ΡΠ²Π°Π΅ΡΡΡ ΠΌΠ΅ΡΠΎΠ΄, ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΡΠΉ Π² ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ΅ ΡΠ΅ΡΠ²ΠΈΡΠ°, WCF ΡΠ΅ΡΠΈΠ°Π»ΠΈΠ·ΡΠ΅Ρ ΡΠΈΠΏΡ CLR ΠΈ Π²ΡΠ·ΠΎΠ² ΠΌΠ΅ΡΠΎΠ΄Π° Π² ΡΠΎΡΠΌΠ°Ρ XML ΠΈ ΠΏΠΎΡΡΠ»Π°Π΅Ρ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ Π² ΡΠ΅ΡΡ Π΄Π»Ρ ΠΏΡΠΈΠ²ΡΠ·ΠΊΠΈ ΠΈ ΡΡ Π΅ΠΌΡ ΠΊΠΎΠ΄ΠΈΡΠΎΠ²ΠΊΠΈ, ΡΠΎΠ³Π»Π°ΡΠΎΠ²Π°Π½Π½ΠΎΠΉ Ρ WSDL. ΠΡΠΈ ΡΡΠΎΠΌ ΡΡΠ°ΡΡΠ²ΡΡΡ ΡΠ΅ΡΡΡΠ΅ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΈΠΈ: Π΄Π²Π΅ ΡΠΎ ΡΡΠΎΡΠΎΠ½Ρ .NET ΠΈ Π΄Π²Π΅ ΡΠΎ ΡΡΠΎΡΠΎΠ½Ρ XML. Π‘ΠΎ ΡΡΠΎΡΠΎΠ½Ρ .NET ΠΈΠΌΠ΅Π΅ΡΡΡ ΡΠΈΠΏ CLR, ΠΊΠΎΡΠΎΡΡΠΉ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅Ρ ΡΡΡΡΠΊΡΡΡΡ Π΄Π°Π½Π½ΡΡ ΠΈ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΡΠ΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ, Π½ΠΎ ΡΡΠΎ Π΄Π΅Π»Π°Π΅ΡΡΡ Π»ΠΈΡΡ ΠΏΠΎΡΠ»Π΅ ΡΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ ΡΠΎΠ·Π΄Π°Π½ ΠΎΠ±ΡΠ΅ΠΊΡ ΡΠ°ΠΊΠΎΠ³ΠΎ ΡΠΈΠΏΠ°. Π‘ΠΎ ΡΡΠΎΡΠΎΠ½Ρ XML Π·Π°Π΄Π°Π΅ΡΡΡ XSD-ΠΎΠΏΠΈΡΠ°Π½ΠΈΠ΅ ΡΡΡΡΠΊΡΡΡΡ Π΄Π°Π½Π½ΡΡ , Π½ΠΎ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ ΠΎΡΡΡΠ΅ΡΡΠ²Π»ΡΠ΅ΡΡΡ Π»ΠΈΡΡ ΠΏΠΎΡΠ»Π΅ ΡΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ Π±ΡΠ΄Π΅Ρ ΡΠΎΠ·Π΄Π°Π½ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡ XML (XML Instance). ΠΡΠΈΠΌΠ΅Ρ ΠΎΠΏΠΈΡΠ°Π½ΠΈΡ WCF ΡΠ΅ΡΠ²ΠΈΡΠ° ΠΏΠΎΠ΄Π³ΠΎΡΠΎΠ²Π»Π΅Π½Π½ΡΠΉ ΠΈ Π°ΠΏΡΠΎΠ±ΠΈΡΠΎΠ²Π°Π½Π½ΡΠΉ ΡΡΡΠ΄Π΅Π½ΡΠΎΠΌ ΠΠΠ£ Π. Π Π°Π΄Π΅ΡΡΠΊΠΈΠΌ Π² ΡΠ°ΠΌΠΊΠ°Ρ ΠΌΠ°Π³ΠΈΡΡΡΠΎΠ²ΡΠΊΠΎΠΉ Π΄ΠΈΡΡΠ΅ΡΡΠ°ΡΠΈΠΈ (2012).