Π§ΠΈΡ‚Π°ΠΉΡ‚Π΅ ΠΊΠ½ΠΈΠ³ΠΈ ΠΎΠ½Π»Π°ΠΉΠ½ Π½Π° Bookidrom.ru! БСсплатныС ΠΊΠ½ΠΈΠ³ΠΈ Π² ΠΎΠ΄Π½ΠΎΠΌ ΠΊΠ»ΠΈΠΊΠ΅

Π§ΠΈΡ‚Π°Ρ‚ΡŒ ΠΎΠ½Π»Π°ΠΉΠ½ Β«ΠžΡΠ½ΠΎΠ²Ρ‹ проСктирования ΠΊΠΎΡ€ΠΏΠΎΡ€Π°Ρ‚ΠΈΠ²Π½Ρ‹Ρ… систСм». Π‘Ρ‚Ρ€Π°Π½ΠΈΡ†Π° 76

Автор Π‘Π΅Ρ€Π³Π΅ΠΉ Π—Ρ‹ΠΊΠΎΠ²

ΠŸΠ΅Ρ€Π΅ΠΉΠ΄Π΅ΠΌ ΠΊ Π±ΠΎΠ»Π΅Π΅ ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎΠΌΡƒ описанию срСды хостинга Windows (Process) Activation Services ΠΈΠ»ΠΈ W(P)AS, которая являСтся стандартной срСдой хостинга (рис. 12.2). Она встроСна Π² Π½ΠΎΠ²Ρ‹Π΅ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½Ρ‹Π΅ систСмы – Windows Vista ΠΈ ΡΠ΅Ρ€Π²Π΅Ρ€Π½ΡƒΡŽ ОБ Windows Server 2008, ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ ряд возмоТностСй, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Ρ€Π°Π½ΡŒΡˆΠ΅ Π±Ρ‹Π»ΠΈ доступны Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ‡Π΅Ρ€Π΅Π· Internet Information Service. W(P)AS позволяСт Ρ€Π°Π·ΠΌΠ΅Ρ‰Π°Ρ‚ΡŒ сСрвисы Π² Π³ΠΈΠ±ΠΊΠΎΠΉ срСдС, которая Π½Π΅ Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ использования ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»Π° HTTP. ΠŸΡ€Π΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠΈΠΌ, Ρ‡Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ ΠΎΠ΄Π½ΠΎΠ½Π°ΠΏΡ€Π°Π²Π»Π΅Π½Π½ΠΎΠ΅ взаимодСйствиС с Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌ сСрвисом ΠΈ ΠΊΠΎΠ½Π΅Ρ‡Π½Ρ‹ΠΉ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ этого сСрвиса, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ довольно часто находится Π² отсоСдинСнном ΠΎΡ‚ сСрвиса состоянии. Π’ Π΄Π°Π½Π½ΠΎΠΌ случаС Π² качСствС транспортного уровня Π»ΡƒΡ‡ΡˆΠ΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ MSMQ, Ρ‡Π΅ΠΌ HTTP, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π½Π΅ сохраняСт состояния. Или, допустим, Ρƒ сСрвиса ΠΌΠ½ΠΎΠ³ΠΎ ΠΊΠ»ΠΈΠ΅Π½Ρ‚ΠΎΠ², с ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌΠΈ ΠΎΠ½ часто обмСниваСтся нСбольшими ΠΏΠΎ Ρ€Π°Π·ΠΌΠ΅Ρ€Ρƒ сообщСниями. Π’ этом ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ» HTTP Ρ‚Π°ΠΊΠΆΠ΅ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ΠΈΡ‚ Π² мСньшСй стСпСни, ΠΈ Π²Ρ‹Π³ΠΎΠ΄Π½Π΅Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ» TCP. ΠŸΡ€ΠΈ этом ΠΆΠ΅Π»Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Ρ‚ΡŒ ΠΌΠ½ΠΎΠΆΠ΅ΡΡ‚Π²Π΅Π½Π½ΠΎΡΡ‚ΡŒ ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»ΠΎΠ². Π’Π°ΠΊΡƒΡŽ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ Π΄Π°Π΅Ρ‚ W(P)AS, эта срСда ΠΌΠ½ΠΎΠ³ΠΎΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»ΡŒΠ½Π°Ρ, здСсь Π½Π΅ трСбуСтся ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠ΅ использованиС ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»Π° ΠΎΠ±ΠΌΠ΅Π½Π° HTTP, Ρ‚. Π΅. осущСствляСтся Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ Ρ€Π°Π±ΠΎΡ‚Ρ‹ Π² Π³ΠΈΠ±ΠΊΠΎΠΉ срСдС. Π­Ρ‚Π° Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ поддСрТиваСтся Π·Π° счСт Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ шаблона Listener Adapter, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ абстрагируСт ΡΠ»ΡƒΡˆΠ°Ρ‚Π΅Π»Π΅ΠΉ, ΠΎΡΡƒΡ‰Π΅ΡΡ‚Π²Π»ΡΡŽΡ‰ΠΈΡ… взаимодСйствиС с процСссами, ΠΎΡ‚ ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π°, ΠΎΡ‚ процСссов управлСния.

Рис. 12.2. Π‘Ρ…Π΅ΠΌΠ° Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ хостинга Π² срСдС W(P)AS

На рис. 12.2, Π³Π΄Π΅ ΠΏΠΎΠΊΠ°Π·Π°Π½Π° схСма взаимодСйствия процСссов Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»ΠΎΠ² с хостом процСсса, Ρ‚. Π΅. с Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠ΅ΠΉ хостинга Π½Π° основС Ρ‚Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΠΈ W(P)AS, Π²ΠΈΠ΄Π½ΠΎ, Ρ‡Ρ‚ΠΎ ΠΌΠΎΠ³ΡƒΡ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»Ρ‹ взаимодСйствия, ΠΈ с Ρ‚ΠΎΡ‡ΠΊΠΈ зрСния хоста Π±Π΅Π·Ρ€Π°Π·Π»ΠΈΡ‡Π½ΠΎ, ΠΊΠ°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, ΠΏΠΎ ΠΊΠ°ΠΊΠΎΠΌΡƒ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎ ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»Ρƒ ΠΎΡ€Π³Π°Π½ΠΈΠ·ΠΎΠ²Π°Π½ΠΎ это взаимодСйствиС. Π’ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ ΠΈ взаимодСйствиС Ρ‚ΠΎΡ‡ΠΊΠ°-Ρ‚ΠΎΡ‡ΠΊΠ°, ΠΈ взаимодСйствиС ΠΏΠΎ ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»Ρƒ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π½Π΅ сохраняСт состояниС, HTTP, ΠΈ взаимодСйствиС ΠΏΠΎ TCP-ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»Ρƒ, ΠΈ взаимодСйствиС ΠΏΠΎ ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»Ρƒ, скаТСм, MSMQ. Рассмотрим нСбольшой ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Π²Π΅Π±-сСрвиса Π² Ρ€Π°ΠΌΠΊΠ°Ρ… Ρ‚Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΠΈ WCF, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΠ΅Ρ‚ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΊΠ°Π»ΡŒΠΊΡƒΠ»ΡΡ‚ΠΎΡ€Π°.

РассмотрСнный Π² ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰Π΅ΠΉ Π³Π»Π°Π²Π΅ (см. рис. 11.1) ΠΏΡ€ΠΈΠΌΠ΅Ρ€ задСйствовал всСго ΠΎΠ΄Π½Ρƒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ – вычислСниС ΠΊΠ²Π°Π΄Ρ€Π°Ρ‚Π½ΠΎΠ³ΠΎ корня. Π’ Π΄Π°Π½Π½ΠΎΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ Π±ΡƒΠ΄Π΅Ρ‚ рассмотрСн достаточно простой ΠΊΠ°Π»ΡŒΠΊΡƒΠ»ΡΡ‚ΠΎΡ€, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ осущСствляСт Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ слоТСния, вычитания, умноТСния, дСлСния (рис. 12.3). Он заимствован ΠΈΠ· стандартных ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΎΠ² ΠΊΠΎΠ΄Π° Microsoft (эти ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ располоТСны Π½Π° Micfosoft.Servicemo del. Samples), Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½ ΠΊΠ°ΠΊ интСрфСйс, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ называСтся ICalculator.

Рис. 12.3. ОписаниС сСрвиса WCF, Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΡŽΡ‰Π΅Π³ΠΎ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΊΠ°Π»ΡŒΠΊΡƒΠ»ΡΡ‚ΠΎΡ€Π°

На Π²Ρ…ΠΎΠ΄ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ, которая прСдставляСт собой ΠΊΠΎΠ½Ρ‚Ρ€Π°ΠΊΡ‚-интСрфСйс, снабТСнный Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚ΠΎΠΌ Service Contract, ΠΈ Π² ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ ΠΌΡ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚ Operation Contract. КаТдая опСрация прСдставляСт собой ΠΌΠ΅Ρ‚ΠΎΠ΄, Π½Π° Π²Ρ…ΠΎΠ΄ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ ΠΏΠΎΡΡ‚ΡƒΠΏΠ°ΡŽΡ‚ Π΄Π²Π° значСния Ρ‚ΠΈΠΏΠ° Double – число с ΠΏΠ»Π°Π²Π°ΡŽΡ‰Π΅ΠΉ Ρ‚ΠΎΡ‡ΠΊΠΎΠΉ Π΄Π²ΠΎΠΉΠ½ΠΎΠΉ точности, Π²Ρ‹Ρ…ΠΎΠ΄ Ρ‚ΠΎΠΆΠ΅ прСдставляСт собой число Ρ‚ΠΈΠΏΠ° Double. Рассмотрим, ΠΊΠ°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ рСализуСтся класс, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ выполняСт этот ΠΊΠΎΠ½Ρ‚Ρ€Π°ΠΊΡ‚. ΠœΡ‹ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅ΠΌ, Ρ‡Ρ‚ΠΎ это класс общСдоступный Calculator Service ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ Ρ‚ΠΎΡ‚ интСрфСйс, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π±Ρ‹Π» Ρ€Π°Π½Π΅Π΅ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½, ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹ΠΉ Π½Π°ΠΌΠΈ интСрфСйсный ΠΊΠΎΠ½Ρ‚Ρ€Π°ΠΊΡ‚ ICalulator. ΠšΠΎΠ½Ρ‚Ρ€Π°ΠΊΡ‚ Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΠ΅Ρ‚ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΉ интСрфСйс ΠΈ Π½Π΅ Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ Π½ΠΈΠΊΠ°ΠΊΠΈΡ… Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚ΠΎΠ². ЀактичСски Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΡŽΡ‚ΡΡ Ρ‚Π΅ ΠΆΠ΅ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ, Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°ΡŽΡ‚ΡΡ значСния суммы, разности, произвСдСния ΠΈΠ»ΠΈ частного. ΠŸΡ€ΠΈ этом осущСствлСниС вычислСний рСализуСтся достаточно Π½Π°ΠΈΠ²Π½ΠΎ, Ρ‚. Π΅. Π½Π΅Ρ‚ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ, скаТСм, Π½Π° Π½ΡƒΠ»Π΅Π²ΠΎΠΉ Π΄Π΅Π»ΠΈΡ‚Π΅Π»ΡŒ ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΡ…, Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, Π²Π°ΠΆΠ½Ρ‹Ρ… ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΎΠΊ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΠΎΡ‚Ρ€Π΅Π±ΠΎΠ²Π°Π»ΠΈΡΡŒ Π±Ρ‹. Π—Π΄Π΅ΡΡŒ осущСствляСтся просто ΠΎΠ±Ρ€Π°Ρ‰Π΅Π½ΠΈΠ΅ ΠΊ стандартным функциям, ΠΈ Π±ΡƒΠ΄Π΅Ρ‚, Π²ΠΈΠ΄ΠΈΠΌΠΎ, задСйствовано стандартноС ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ CLR, ΠΏΡ€ΠΈ ошибкС, скаТСм, дСлСния Π½Π° ноль ΠΈΠ»ΠΈ Π΄Ρ€ΡƒΠ³ΠΎΠΉ арифмСтичСской ошибкС, которая Π²ΠΎΠ·Π½ΠΈΠΊΠ½Π΅Ρ‚ Π² случаС ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ Ρ‚ΠΎΠ³ΠΎ ΠΈΠ»ΠΈ ΠΈΠ½ΠΎΠ³ΠΎ Ρ€ΠΎΠ΄Π°. ΠŸΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠΈΠΌ обсуТдСниС ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π° – Π²Π΅Π±-сСрвиса, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΠ΅Ρ‚ ΠΏΡ€ΠΎΡΡ‚Π΅ΠΉΡˆΠΈΠΉ ΠΊΠ°Π»ΡŒΠΊΡƒΠ»ΡΡ‚ΠΎΡ€. ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎ ΠΌΡ‹ создали описаниС ΠΊΠΎΠ΄Π° Π² Ρ„ΠΎΡ€ΠΌΠ΅ интСрфСйса ΠΈ ΠΊΠΎΠ½Ρ‚Ρ€Π°ΠΊΡ‚Π°, ΠΌΡ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΎΠ½Π½Ρ‹ΠΉ Ρ„Π°ΠΉΠ», ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π±ΡƒΠ΄Π΅Ρ‚ располоТСн Π½Π° сСрвСрС. Π­Ρ‚ΠΎ, СстСствСнно, XML-ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΎΠ΅ описаниС, ΠΈ ΠΎΠ½ΠΎ достаточно Π³Ρ€ΠΎΠΌΠΎΠ·Π΄ΠΊΠΎΠ΅.

Π’ Π΄Π°Π½Π½ΠΎΠΌ случаС ΠΎΠ½ΠΎ прСдставлСно Π½Π° рис. 12.4. Π§Ρ‚ΠΎ Ρ…Π°Ρ€Π°ΠΊΡ‚Π΅Ρ€Π½ΠΎΠ³ΠΎ Π² нашСм описании сСрвиса с этой Ρ‚ΠΎΡ‡ΠΊΠΈ зрСния ΠΌΠΎΠΆΠ½ΠΎ Π·Π°ΠΌΠ΅Ρ‚ΠΈΡ‚ΡŒ? ΠŸΡ€Π΅ΠΆΠ΄Π΅ всСго, здСсь описана конСчная Ρ‚ΠΎΡ‡ΠΊΠ°, Ρ‡Π΅Ρ€Π΅Π· ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ вСдСтся взаимодСйствиС. БвязываниС ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΎ ΠΊΠ°ΠΊ WSHTTP Binding, Ρ‚. Π΅. ΠΌΡ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ Ρ‚ΠΈΠΏ связывания с ΡƒΡ‡Π΅Ρ‚ΠΎΠΌ ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»Π° HTTP. ΠŸΡ€ΠΈ описании Π²Π΅Π±-сСрвиса ΠΌΡ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ нашС ABC. Π’ Ρ€Π°ΠΌΠΊΠ°Ρ… Π²Ρ‹Π±Ρ€Π°Π½Π½ΠΎΠΉ сСрвисной ΠΌΠΎΠ΄Π΅Π»ΠΈ Π½Π° основС пространства ΠΈΠΌΠ΅Π½ System Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±Ρ‹Ρ‚ΡŒ описано ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅, связанноС с описаниСм Calculator Service, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ Ρ€Π°Π½Π΅Π΅, Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΠ΅Ρ‚ интСрфСйсный ΠΊΠΎΠ½Ρ‚Ρ€Π°ΠΊΡ‚ ΠΈ располоТСн Π²Π½ΡƒΡ‚Ρ€ΠΈ пространства ΠΈΠΌΠ΅Π½ Micfosoft.Servicemodel.Samples. ΠŸΡ€ΠΈ этом опрСдСляСтся конфигурация повСдСния Calculator Service Behaviour, Π° ΠΈΠΌΠ΅Π½Π½ΠΎ ΠΊΠ°ΠΊΠΎΠΉ адрСс интСрфСйса поставляСтся хостом, Π³Π΄Π΅ хранится этот интСрфСйс. Π”Π°Π»Π΅Π΅ указываСтся Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹ΠΉ адрСс, привязка ABC, которая ΠΈΠΌΠ΅Π΅Ρ‚ Π²ΠΈΠ΄ HTTPBinding, ΠΈ, Π½Π°ΠΊΠΎΠ½Π΅Ρ†, интСрфСйсный ΠΊΠΎΠ½Ρ‚Ρ€Π°ΠΊΡ‚, Ρ‚. Π΅. Ρ‚ΠΎΡ‚ самый интСрфСйс ICalculator, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Ρƒ нас описан. ΠžΡΠΎΠ±Π΅Π½Π½ΠΎΡΡ‚ΠΈ использования связывания Ρ‚ΠΈΠΏΠ° wsHttpBinding состоят Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ Π² качСствС ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»Π° взаимодСйствия ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ» HTTP, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π½Π΅ сохраняСт состояния, ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ стандартныС ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»Ρ‹ Π²Π΅Π±-сСрвисов WS для ΠΎΡ€Π³Π°Π½ΠΈΠ·Π°Ρ†ΠΈΠΈ взаимодСйствия ΠΌΠ΅ΠΆΠ΄Ρƒ ΠΊΠ»ΠΈΠ΅Π½Ρ‚ΠΎΠΌ ΠΈ сСрвСром с Ρ‚ΠΎΡ‡ΠΊΠΈ зрСния адрСсации, бСзопасности. БСрвисы WCF Π½Π΅ ΠΎΡΡƒΡ‰Π΅ΡΡ‚Π²Π»ΡΡŽΡ‚ экспорт своих ΠΌΠ΅Ρ‚Π°Π΄Π°Π½Π½Ρ‹Ρ… ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ ΠΏΡ€ΠΈ Ρ‚Π°ΠΊΠΎΠ³ΠΎ Ρ€ΠΎΠ΄Π° связывании. Для этого сСрвису Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ явно ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ Ρ‚ΠΎΡ‡ΠΊΡƒ ΠΎΠ±ΠΌΠ΅Π½Π° ΠΌΠ΅Ρ‚Π°Π΄Π°Π½Π½Ρ‹Ρ… Π² Π²ΠΈΠ΄Π΅ Metadata Exchange, Π΅Π΅ конфигурация явно присутствуСт Π² Ρ„Π°ΠΉΠ»Π΅ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ: явно ΡƒΠΊΠ°Π·Π°Π½Ρ‹ ABC адрСс, связываниС ΠΈ ΠΊΠΎΠ½Ρ‚Ρ€Π°ΠΊΡ‚. Π’ΠΎΡ‚ Ρ‚Π°ΠΊΠΎΠ΅ нСбольшоС описаниС ΠΊΠΎΠ΄Π° Π·Π°Π²Π΅Ρ€ΡˆΠ°Π΅Ρ‚ наш сСрвис.

По Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π°ΠΌ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ сСрвиса осущСствляСтся автоматизированная гСнСрация ΠΊΠΎΠ΄Π° для ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π°, которая выполняСтся ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ ΡƒΡ‚ΠΈΠ»ΠΈΡ‚Ρ‹ SWSUtil.exe. НСкоторыС Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚Ρ‹ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ этого ΠΊΠΎΠ΄Π° (рис. 12.5), ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΡŽΡ‰ΠΈΠ΅ собой основныС элСмСнты этого ΠΊΠΎΠ΄Π°, выглядят ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ: Π² этом описании ΠΏΡ€ΠΈΡΡƒΡ‚ΡΡ‚Π²ΡƒΡŽΡ‚ интСрфСйсы, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π½Π°Π·Ρ‹Π²Π°ΡŽΡ‚ΡΡ ICalculator ΠΈ ICalculatorClient. Π”Π°Π½ΠΎ описаниС класса ICalculatorClient, всС, Ρ‡Ρ‚ΠΎ касаСтся Π΅Π³ΠΎ ΠΊΠΎΠ½Π΅Ρ‡Π½Ρ‹Ρ… Ρ‚ΠΎΡ‡Π΅ΠΊ с Ρ‚ΠΎΡ‡ΠΊΠΈ зрСния адрСсов ΠΈ основных Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΎΠ½ Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΠ΅Ρ‚. Π€ΡƒΠ½ΠΊΡ†ΠΈΠΈ add, substract, multiply, divide, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Ρ‹ для этого интСрфСйса.

Рис. 12.4. Π€Π°ΠΉΠ» ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ WCF-сСрвиса

Заканчивая описаниС Ρ‚Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΠΉ WCF, хочСтся ΠΎΡ‚ΠΌΠ΅Ρ‚ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ эта тСхнология достаточно зрСлая, связана Π²ΠΎ ΠΌΠ½ΠΎΠ³ΠΎΠΌ с ядром Indigo, с достаточно ΠΏΠΎΠ·Π΄Π½ΠΈΠΌΠΈ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠ΅ΠΉ ОБ: это ΠΏΡ€Π΅ΠΆΠ΄Π΅ всСго Windows Vista, Windows Server 2008, ΠΈ здСсь рСализуСтся достаточно ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΠΎΠ΅ ΠΏΠΎ ΡΡ€Π°Π²Π½Π΅Π½ΠΈΡŽ, скаТСм, с Ρ‚Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΠ΅ΠΉ Remoting, взаимодСйствиС ΠΌΠ΅ΠΆΠ΄Ρƒ ΠΊΠ»ΠΈΠ΅Π½Ρ‚ΠΎΠΌ ΠΈ сСрвСром. Как ΠΌΡ‹ Π²ΠΈΠ΄Π΅Π»ΠΈ, сущСствуСт большоС количСство Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹Ρ… ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»ΠΎΠ² взаимодСйствия, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΡ€ΠΎΠ·Ρ€Π°Ρ‡Π½Ρ‹ΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ ΠΈΠ½ΠΊΠ°ΠΏΡΡƒΠ»ΠΈΡ€ΡƒΡŽΡ‚ΡΡ Π² Ρ‚Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΠΈ W(P)AS, Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹ взаимодСйствия ΠΊΠ°ΠΊ ΠΏΠΎ ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»Ρƒ HTTP, Ρ‚Π°ΠΊ ΠΈ ΠΏΠΎ ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»Ρƒ TCP, MSNQ ΠΈ Ρ‚. Π΄. ΠŸΡ€ΠΈ этом поддСрТиваСтся взаимодСйствиС Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ с прилоТСниями, Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Π½Π½Ρ‹ΠΌΠΈ Π½Π° основС Ρ‚Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΠΈ. NET, Π½ΠΎ ΠΈ Π½Π° основС Ρ†Π΅Π»ΠΎΠ³ΠΎ ряда Π΄Ρ€ΡƒΠ³ΠΈΡ… Ρ‚Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΠΉ. Π¦Π΅Π½Ρ‚Ρ€Π°Π»ΡŒΠ½Ρ‹ΠΌ понятиСм являСтся понятиС хостинга, это рСализация процСсса, которая ΠΎΡ‚Π²Π΅Ρ‡Π°Π΅Ρ‚ Π·Π° ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΡƒ контСкста выполнСния сСрвиса. ΠŸΡ€ΠΈΠ½Ρ†ΠΈΠΏΠΈΠ°Π»ΡŒΠ½ΠΎ Π²Π°ΠΆΠ½Ρ‹ процСссы прСобразования Π³Ρ€Π°Ρ„Π° ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² Π² Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ XML ΠΈ ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎ, сСриализация, дСсСриализация. БущСствуСт большоС количСство сцСнариСв для управлСния ΠΏΠΎΡ‚ΠΎΠΊΠ°ΠΌΠΈ Π΄Π°Π½Π½Ρ‹Ρ… ΠΊΠ°ΠΊ Π½Π° ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π΅, Ρ‚Π°ΠΊ ΠΈ Π½Π° сСрвСрС, ΠΏΡ€ΠΈ этом осущСствляСтся Π²Ρ‹Π±ΠΎΡ€ Π²ΠΈΠ΄Π° Π΄Π°Π½Π½Ρ‹Ρ…, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡ‚Π²ΡƒΡŽΡ‚, это ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ транзакциями, ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡ‚ΡŒΡŽ ΠΈ Ρ‚. Π΄. БущСствуСт большоС количСство Π²ΠΈΠ΄ΠΎΠ² связывания. Для Ρ‚ΠΎΠ³ΠΎ Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΡΡƒΡ‰Π΅ΡΡ‚Π²ΠΈΡ‚ΡŒ взаимодСйствиС, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ схСма ABC, адрСс, связываниС, ΠΊΠΎΠ½Ρ‚Ρ€Π°ΠΊΡ‚. ΠŸΡ€ΠΈΠΌΠ΅Π½ΡΠ΅Ρ‚ΡΡ Π΄Π΅Π²ΡΡ‚ΡŒ Ρ‚ΠΈΠΏΠΎΠ² связывания, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ зависят ΠΎΡ‚ нСобходимости ΠΎΠ±Π΅ΡΠΏΠ΅Ρ‡ΠΈΡ‚ΡŒ ΠΈΠ½Ρ‚Π΅Ρ€ΠΎΠΏΠ΅Ρ€Π°Π±Π΅Π»ΡŒΠ½ΠΎΠ΅ взаимодСйствиС, ΡΡ‚Π΅ΠΏΠ΅Π½ΡŒ бСзопасности, Π²ΠΈΠ΄ взаимодСйствия с ΡƒΡ‡Π΅Ρ‚ΠΎΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΠΎΠ³ΠΎ ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»Π°, с использованиСм Π²ΠΈΠ΄Π° сСтСвого взаимодСйствия Π² Π΅Π³ΠΎ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚ΠΈΠ·Π°Ρ†ΠΈΠΈ: трСбуСтся Π»ΠΈ связь Ρ‚ΠΎΡ‡ΠΊΠ° – Ρ‚ΠΎΡ‡ΠΊΠ° ΠΈΠ»ΠΈ локальноС соСдинСниС ΠΈ Ρ‚. Π΄. Бвязь ΠΌΠ΅ΠΆΠ΄Ρƒ ΠΊΠ»ΠΈΠ΅Π½Ρ‚ΠΎΠΌ ΠΈ сСрвСром осущСствляСтся Π½Π° основС ΠΊΠ°Π½Π°Π»ΠΎΠ², ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΡŽΡ‚ собой стСк ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»ΠΎΠ² Π½Π° основС Π΅Π΄ΠΈΠ½ΠΎΠ³ΠΎ интСрфСйса ICommunicationObject, ΠΊΠ°Π½Π°Π»Ρ‹ ΠΏΡ€ΠΈ этом дСлятся Π½Π° транспортныС ΠΈ ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»ΡŒΠ½Ρ‹Π΅ ΠΈ ΠΏΠΎΠ΄Ρ€Π°Π·ΡƒΠΌΠ΅Π²Π°ΡŽΡ‚ ΠΊΠ°ΠΊ ΠΎΠ΄Π½ΠΎΠ½Π°ΠΏΡ€Π°Π²Π»Π΅Π½Π½ΠΎΠ΅ взаимодСйствиС, Ρ‚Π°ΠΊ ΠΈ Π³ΠΈΠ±ΠΊΠΎΠ΅ взаимодСйствиС ΠΏΠΎ Π΄Π²ΡƒΠ½Π°ΠΏΡ€Π°Π²Π»Π΅Π½Π½ΠΎΠΉ дуплСксной схСмС. ΠšΠΎΠ½Ρ‚Ρ€Π°ΠΊΡ‚Ρ‹ Π² WCF ΠΈΠΌΠ΅ΡŽΡ‚ троякоС прСдставлСниС – для сСрвисов, для Π΄Π°Π½Π½Ρ‹Ρ… ΠΈ для сообщСний ΠΈ ΡΠ²Π»ΡΡŽΡ‚ΡΡ Π²Π°ΠΆΠ½ΠΎΠΉ Ρ‡Π°ΡΡ‚ΡŒΡŽ обСспСчСния взаимодСйствия ΠΌΠ΅ΠΆΠ΄Ρƒ ΠΊΠ»ΠΈΠ΅Π½Ρ‚ΠΎΠΌ ΠΈ сСрвСром ΠΏΠΎ схСмС ABC. WCF – это Microsoft-вСрсия Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ стратСгии сСрвисно-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠΉ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Ρ‹, Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ³ΠΎ обСспСчСния ΠΊΠ°ΠΊ сСрвиса, ΠΎΠ½Π° ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ всС Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹Π΅ классы. NET Framework, Ρ‚. Π΅. большоС количСство Π±Π°Π·ΠΎΠ²Ρ‹Ρ… ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ ΠΈ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚ΠΎΠ² ΠΏΠΎ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡ‚Π²ΠΈΡŽ ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π° ΠΈ сСрвиса, ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ Ρ‚Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΡŽ Remoting ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ Ρ‚Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΠΈ Microsoft, Π° Ρ‚Π°ΠΊΠΆΠ΅ Π΄Π°Π΅Ρ‚ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ взаимодСйствия ΠΏΠΎ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΌ ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»Π°ΠΌ SOAP ΠΈ HTTP с ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½Ρ‹ΠΌ обСспСчСниСм Π΄Ρ€ΡƒΠ³ΠΈΡ… ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»Π΅ΠΉ, Π² Ρ‚ΠΎΠΌ числС Π½Π° основС стандартизованного языка ΠΎΠ±ΠΌΠ΅Π½Π° сообщСниями WSDL Π½Π° основС ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»Π° XML.