рд╡рд┐рдЬрд╝реБрдЕрд▓ рд╕реНрдЯреВрдбрд┐рдпреЛ 2010 рдореЗрдВ рдбрдмреНрд▓реНрдпреВрд╕реАрдПрдл рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рдПрдХ рд╕рд░рд▓ рдЙрджрд╛рд╣рд░рдг рд╣реИред рднрд╛рдЧ 1

рджреЛ рднрд╛рдЧреЛрдВ рдЖрдк рдХрд╛ рдЗрдВрддрдЬрд╛рд░:



рдПрдХ рд▓рдВрдмреЗ рд╕рдордп рдХреЗ рдмрд╛рдж рд╕реЗ рдореИрдВрдиреЗ WCF рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рдореВрд▓ рдкреЛрд╕реНрдЯ A Simple Example рд▓рд┐рдЦрд╛ рд╣реИред рдпрд╣ рджреГрд╢реНрдп рд╕реНрдЯреВрдбрд┐рдпреЛ 2008 рд╕реЗ рдкрд╣рд▓реЗ рдерд╛, рдФрд░ рддрдм рд╕реЗ рдмрд╣реБрдд рдХреБрдЫ рдмрджрд▓ рдЧрдпрд╛ рд╣реИред рдЪреВрдВрдХрд┐ рдмрд╣реБрдд рд╕реЗ рд▓реЛрдЧ рдЕрднреА рднреА рдЙрд╕ рдкреЛрд╕реНрдЯ рдХреЗ рд▓рд┐рдП рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдореЗрдВ рд╕рд╡рд╛рд▓ рдкреВрдЫ рд░рд╣реЗ рд╣реИрдВ, рдЖрдЗрдП рджреЗрдЦреЗрдВ рдХрд┐ рд╕реЗрд╡рд╛ рдХреЛ рдмрдврд╝рд╛рдиреЗ рдФрд░ рд╢реБрд░реВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╣рдореЗрдВ рдЕрдм рдХреНрдпрд╛ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП, рдФрд░ рдХреНрд▓рд╛рдЗрдВрдЯ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд╕реЗ рднреА рдЗрд╕реЗ рдПрдХреНрд╕реЗрд╕ рдХрд░реЗрдВред

рдЗрд╕ рдмрд╛рд░ рд╣рдо рдХреНрд▓рд╛рд╕ рд▓рд╛рдЗрдмреНрд░реЗрд░реА (рдХреНрд▓рд╛рд╕ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдЕрд╕реЗрдВрдмрд▓реА - рдбреАрдПрд▓рдПрд▓) рдХреЗ рдЕрд╕реЗрдВрдмрд▓реА рд╕реЗ рд╢реБрд░реВ рдХрд░реЗрдВрдЧреЗ, рдФрд░ рд╣рдо рдХрдВрд╕реЛрд▓ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЗ рдЕрдВрджрд░ рднреА рд╕рд░реНрд╡рд┐рд╕ рджреЗрдВрдЧреЗред рдХреНрд▓рд╛рдЗрдВрдЯ рдлрд┐рд░ рд╕реЗ рд╡рд┐рдВрдбреЛрдЬ рдлреЙрд░реНрдо рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдЧрд╛ред рд╣рд╛рд▓рд╛рдБрдХрд┐ рд╣рдо рд╕рдм рдХреБрдЫ Visual Studio 2010 рдореЗрдВ рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди VS2008 рдХреЗ рд▓рд┐рдП рднреА рдмрд╣реБрдд рдХреБрдЫ рд▓рд╛рдЧреВ рд╣реИред рдореИрдВ рдЗрд╕ рдмрд╛рдд рдХрд╛ рдЙрд▓реНрд▓реЗрдЦ рдХрд░реВрдВрдЧрд╛ рдХрд┐ рдЬрдм рдРрд╕рд╛ рдирд╣реАрдВ рд╣реЛрдЧрд╛ рдФрд░ рдХреЛрдИ рд╡рд┐рдХрд▓реНрдк рдкреЗрд╢ рдХрд░реЗрдЧрд╛ред рдЗрд╕ рдмрд╛рд░ рдореИрдВ рдереЛрдбрд╝рд╛ рдФрд░ рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ рдмрддрд╛рдКрдВрдЧрд╛ рдХрд┐ рд╣рдореЗрдВ рдХреНрдпрд╛ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП, рдЗрд╕рд▓рд┐рдП рдпрд╣ рдкрдж рдореВрд▓ рдПрдХ рд╕реЗ рдереЛрдбрд╝рд╛ рдЕрдзрд┐рдХ рд╣реЛрдЧрд╛ред

рдкрд░рд┐рдпреЛрдЬрдирд╛ рдирд┐рд░реНрдорд╛рдг


рдкрд╣рд▓реЗ рдПрдХ рдирдИ рд╢реНрд░реЗрдгреА рдХреА рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдмрдирд╛рдПрдВ рдЬрд╣рд╛рдВ рд╣рдо рд╕реНрд╡рдпрдВ рд╕реЗрд╡рд╛ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рддреЗ рд╣реИрдВред рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдЯреЗрдореНрдкрд▓реЗрдЯ рдХреЗ рд░реВрдк рдореЗрдВ рдирдП рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдФрд░ рдХреНрд▓рд╛рд╕ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХрд╛ рдЪрдпрди рдХрд░реЗрдВред рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХрд╛ рдирд╛рдо "EmailService" рдФрд░ рд╕рдорд╛рдзрд╛рди рдХрд╛ рдирд╛рдо "WCFSimpleExample2010" рдЗрдВрдЧрд┐рдд рдХрд░реЗрдВред рдпрджрд┐ рдЖрдк рд╕рдорд╛рдзрд╛рди рдХрд╛ рдирд╛рдо рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рддреЛ рдЬрд╛рдБрдЪреЗрдВ рдХрд┐ рд╕рдорд╛рдзрд╛рди рдХреЗ рд▓рд┐рдП рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдмрдирд╛рдПрдБ рдХрд╛ рдЪрдпрди рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред



рдЕрдиреБрдмрдВрдз рдирд┐рд░реНрдорд╛рдг


рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рд╣рдо рдХреЗрд╡рд▓ рдПрдХ рд╡рд┐рдзрд┐ рдпрд╛ рдПрдХ рдСрдкрд░реЗрд╢рди рдХреЗ рд╕рд╛рде рдПрдХ рдЕрдиреБрдмрдВрдз рдмрдирд╛рдПрдВрдЧреЗ, рдЬреИрд╕рд╛ рдХрд┐ рдЙрдиреНрд╣реЗрдВ рдбрдмреНрд▓реНрдпреВрд╕реАрдПрдл рдореЗрдВ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред рдлрд╝рд╛рдЗрд▓ рдХреЛ IEmailValidator.cs рдкрд░ рдирд╛рдо рдмрджрд▓реЗрдВ рдФрд░ рдЙрд╕реА рдирд╛рдо рд╕реЗ рдПрдХ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдмрдирд╛рдПрдБред
рдЕрдм ValidateAddress рд╡рд┐рдзрд┐ рдХреЗ рд╣рд╕реНрддрд╛рдХреНрд╖рд░ рдХреЛ рдЬреЛрдбрд╝реЗрдВ, рдЬреЛ рдЯрд╛рдЗрдк рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХреЗ рдПрдХ EmailAddress рддрд░реНрдХ рд▓реЗрддрд╛ рд╣реИ рдФрд░ рдПрдХ рдмреВрд▓рд┐рдпрди рдорд╛рди рд▓реМрдЯрд╛рддрд╛ рд╣реИред рдпрд╣ рдПрдХ рд╕рд╛рдорд╛рдиреНрдп рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рд╣реИ, рдХреБрдЫ рднреА рдЬрдЯрд┐рд▓ рдирд╣реАрдВ рд╣реИред
public interface IEmailValidator { bool ValidateAddress( string emailAddress); } * This source code was highlighted with Source Code Highlighter .
  1. public interface IEmailValidator { bool ValidateAddress( string emailAddress); } * This source code was highlighted with Source Code Highlighter .
  2. public interface IEmailValidator { bool ValidateAddress( string emailAddress); } * This source code was highlighted with Source Code Highlighter .
  3. public interface IEmailValidator { bool ValidateAddress( string emailAddress); } * This source code was highlighted with Source Code Highlighter .
  4. public interface IEmailValidator { bool ValidateAddress( string emailAddress); } * This source code was highlighted with Source Code Highlighter .
public interface IEmailValidator { bool ValidateAddress( string emailAddress); } * This source code was highlighted with Source Code Highlighter .

рдЕрдм рд╣рдореЗрдВ WCF рдХреЛ рд╕реВрдЪрд┐рдд рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП рдХрд┐ рдпрд╣ рд╣рдорд╛рд░рд╛ рдЕрдиреБрдмрдВрдз рд╣реИред рд╣рдо рдЗрд╕реЗ рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдХреЛ рдЬреЛрдбрд╝рдХрд░ рдХрд░рддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдкрд╣рд▓реЗ рд╣рдореЗрдВ System.ServiceModel рдХрд╛ рд╕рдВрджрд░реНрдн рдЬреЛрдбрд╝рдирд╛ рд╣реЛрдЧрд╛ред рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдкрд░ рд░рд╛рдЗрдЯ-рдХреНрд▓рд┐рдХ рдХрд░реЗрдВ рдФрд░ Add reference рдЪреБрдиреЗрдВ, рдлрд┐рд░ рд╕реВрдЪреА рдореЗрдВ рд╕реЗ System.ServiceModel рдЪреБрдиреЗрдВред рдореИрдВ рд╡рд┐рдЬрд╝реБрдЕрд▓ рд╕реНрдЯреВрдбрд┐рдпреЛ 2010 рдкреНрд░реЛ рдкрд╛рд╡рд░ рдЯреВрд▓реНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдВ, рдЗрд╕рд▓рд┐рдП рдореЗрд░реА рд╕реНрдХреНрд░реАрдирд╢реЙрдЯ рдХреА рдЫрд╡рд┐ рдЖрдкрд╕реЗ рдЕрд▓рдЧ рд╣реЛ рд╕рдХрддреА рд╣реИ, рд▓реЗрдХрд┐рди рд╡рд┐рдЪрд╛рд░ рдПрдХ рд╣реА рд╣реИред





рдЕрдм рдЖрдк рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдореЗрдВ рд╡рд┐рд╢реЗрд╖рддрд╛рдПрдБ рдЬреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВред рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдкрд░рд┐рднрд╛рд╖рд╛ рдХреЗ рдКрдкрд░ ServiceContract рд╡рд┐рд╢реЗрд╖рддрд╛ рдФрд░ рдСрдкрд░реЗрд╢рди рдХреЗ рдКрдкрд░ OperationContract рд╡рд┐рд╢реЗрд╖рддрд╛ рд░рдЦреЗрдВред рдХреЛрдб рдлрд╝рд╛рдЗрд▓ рдХреЗ рдмрд╣реБрдд рд╢реБрд░реБрдЖрдд рдореЗрдВ System.ServiceModel рдирд┐рд░реНрджреЗрд╢ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЬреЛрдбрд╝реЗрдВ, рдпрд╛ рдЬрдм рдЖрдк рдХрд┐рд╕реА рд╡рд┐рд╢реЗрд╖рддрд╛ рдирд╛рдо рдкрд░ рд╣реЛрд╡рд░ рдХрд░реЗрдВ, рддреЛ Visual Studio рдЗрд╕реЗ рдЖрдкрдХреЗ рд▓рд┐рдП рдХрд░рдиреЗ рджреЗрдВред рдпрджрд┐ рдЖрдкрдиреЗ рдЗрд╕реЗ рд╕рд╣реА рдврдВрдЧ рд╕реЗ рджрд░реНрдЬ рдХрд┐рдпрд╛ рд╣реИ рдФрд░ рд╕рдВрд╡реЗрджрдирд╢реАрд▓ рд╣реИ, рддреЛ рдЖрдк CTRL + рджрдмрд╛ рд╕рдХрддреЗ рд╣реИрдВред рдФрд░ рдлрд┐рд░ рдПрдХ рд╕рдВрджрд░реНрдн рдореЗрдиреВ рджрд┐рдЦрд╛рдИ рджреЗрдЧрд╛ рдЬреЛ рдЖрдкрдХреЛ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдирд┐рд░реНрджреЗрд╢ рдХреЛ рдЬреЛрдбрд╝рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк, рдЖрдкрдХрд╛ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрдирд╛ рдЪрд╛рд╣рд┐рдП:
  1. [ServiceContract]
  2. рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ IEmailValidator
  3. {
  4. [OperationContract]
  5. рдмреВрд▓ ValidateAddress ( string emailAddress);
  6. }
* рдЗрд╕ рд╕реЛрд░реНрд╕ рдХреЛрдб рдХреЛ рд╕реЛрд░реНрд╕ рдХреЛрдб рд╣рд╛рдЗрд▓рд╛рдЗрдЯрд░ рдХреЗ рд╕рд╛рде рд╣рд╛рдЗрд▓рд╛рдЗрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред


рдПрдХ рд╕реЗрд╡рд╛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдмрдирд╛рдирд╛


рдЕрдм рдЬрдм рд╣рдордиреЗ рдЕрдиреБрдмрдВрдз рдмрдирд╛ рд▓рд┐рдпрд╛ рд╣реИ, рддреЛ рд╣рдореЗрдВ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЬреЛ рдХрд░рдирд╛ рд╣реИ, рдЙрд╕реЗ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕реЗрд╡рд╛ рдХреЗ рд▓рд┐рдП рдХреЛрдб рд▓рд┐рдЦрдирд╛ рд╣реЛрдЧрд╛ред рдПрдХ рдирдпрд╛ рд╡рд░реНрдЧ рдмрдирд╛рдПрдВ рдЬреЛ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рддрд╛ рд╣реИред рд╣рдо рдИрдореЗрд▓ рдкрддреЗ рдХреА рдЬрд╛рдВрдЪ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдирд┐рдпрдорд┐рдд рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВрдЧреЗ рдФрд░ рдпрджрд┐ рдпрд╣ рд╕рд╣реА рд╣реИ, рддреЛ рд╕рд╣реА рд▓реМрдЯреЗрдВред рдЖрдкрдХреЛ рдпрд╛ рддреЛ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХреЛрдб рдЬреИрд╕рд╛ рдХреБрдЫ рд▓рд┐рдЦрдирд╛ рдЪрд╛рд╣рд┐рдП, рдпрд╛ рдЕрдкрдирд╛ рд╕реНрд╡рдпрдВ рдХрд╛ рд▓рд┐рдЦрдирд╛ рдЪрд╛рд╣рд┐рдПред :-)
  1. рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рд╡рд░реНрдЧ EmailValidator: IEmailValidator
  2. {
  3. рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рдмреВрд▓ ValidateAddress ( рд╕реНрдЯреНрд░рд┐рдВрдЧ emailAddress)
  4. {
  5. рдХрдВрд╕реЛрд▓ .WriteLine ( "рдорд╛рдиреНрдп рдХрд░рдирд╛: {0}" , emailAddress);
  6. рд╕реНрдЯреНрд░рд┐рдВрдЧ рдкреИрдЯрд░реНрди = @ "^ ((0-9a-zA-Z] ([-ред w w] * [0-9a-zA-Z]] * @ (((0-9a-zA-Z]) + ( [- \ w] * [0-9a-zA-Z]) * \ред) + [рдП-рдЬреЗрдбрдП-рдЬреЗрдб] {2,9}) $ " ;
  7. рд╡рд╛рдкрд╕реА Regex.IsMatch (emailAddress, рдкреИрдЯрд░реНрди);
  8. }
  9. }
* рдЗрд╕ рд╕реЛрд░реНрд╕ рдХреЛрдб рдХреЛ рд╕реЛрд░реНрд╕ рдХреЛрдб рд╣рд╛рдЗрд▓рд╛рдЗрдЯрд░ рдХреЗ рд╕рд╛рде рд╣рд╛рдЗрд▓рд╛рдЗрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред

рдЕрдм рдЖрдкрдХреЗ рдкрд╛рд╕ рдЕрдкрдиреА рд╕реЗрд╡рд╛ рдХреЗ рд▓рд┐рдП рджреЛ рд╕рдмрд╕реЗ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдХрдХреНрд╖рд╛рдПрдВ рд╣реИрдВред рджрд░рдЕрд╕рд▓, рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЖрд╡рд╢реНрдпрдХ рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рдЕрднреНрдпрд╛рд╕ рд╣реИред рдЗрд╕ рдкреНрд░рдХрд╛рд░, рдЖрдк рдХрдИ рдЗрдВрдЯрд░рдлреЗрд╕ рд╡рд┐рд░рд╛рд╕рдд рдореЗрдВ рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рд╕рд╛рде рд╣реА рдЗрдВрдЯрд░рдлреЗрд╕ рдХреЗ рд╡рд┐рднрд┐рдиреНрди рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдХреЛ рд▓рд╛рдЧреВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

рдореЗрдЬрдмрд╛рди рдирд┐рд░реНрдорд╛рдг


рдЬреИрд╕рд╛ рдХрд┐ рдкрд╣рд▓реЗ рд╣реА рдЙрд▓реНрд▓реЗрдЦ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рд╣рдо рд╣реЛрд╕реНрдЯ рдХреЗ рд░реВрдк рдореЗрдВ рдХрдВрд╕реЛрд▓ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВрдЧреЗред рдПрдХ рдирдпрд╛ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдЬреЛрдбрд╝реЗрдВ рдФрд░ рдЕрдм рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдЯреЗрдореНрдкрд▓реЗрдЯ рдХреЗ рд░реВрдк рдореЗрдВ рдХрдВрд╕реЛрд▓ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдЪреБрдиреЗрдВред рдЗрд╕реЗ "ConsoleHost" рдирд╛рдо рджреЗрдВред



рдкреБрди: System.ServiceModel , рд╕рд╛рде рд╣реА EmailService рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЗ рд▓рд┐рдП рд▓рд┐рдВрдХ рдЬреЛрдбрд╝реЗрдВред рдЕрдкрдиреА рдореБрдЦреНрдп рд╡рд┐рдзрд┐ рдореЗрдВ, рдПрдХ ServiceHost рдСрдмреНрдЬреЗрдХреНрдЯ рдмрдирд╛рдПрдВ рдФрд░ рдЗрд╕реЗ рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░ рдореЗрдВ рд╕рд╣реА рддрд░реНрдХ рджреЗрдВ, рдЬреИрд╕рд╛ рдХрд┐ рдиреАрдЪреЗ рджрд┐рдЦрд╛рдпрд╛ рдЧрдпрд╛ рд╣реИред
  1. рдЯрд╛рдЗрдк рд╕рд░реНрд╡рд┐рд╕ рдЯрд╛рдЗрдк = рдЯрд╛рдЗрдкрдСрдлрд╝ (рдИрдореЗрд▓рд╡реИрд▓рд┐рдПрдЯрд░);
  2. рдЙрд░реА рд╕реЗрд╡рд╛рдпреВрд░реА = рдирдИ рдЙрд░реА ( "http: // localhost: 8080 /" );
  3. ServiceHost host = new ServiceHost (serviceType, serviceUri);
  4. host.Open ();
* рдЗрд╕ рд╕реЛрд░реНрд╕ рдХреЛрдб рдХреЛ рд╕реЛрд░реНрд╕ рдХреЛрдб рд╣рд╛рдЗрд▓рд╛рдЗрдЯрд░ рдХреЗ рд╕рд╛рде рд╣рд╛рдЗрд▓рд╛рдЗрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред

рдкрдВрдХреНрддрд┐ 4 рдореЗрдВ, рд╣рдо рдПрдХ ServiceHost рдСрдмреНрдЬреЗрдХреНрдЯ рдмрдирд╛рддреЗ рд╣реИрдВред рдкрд╣рд▓реЗ рддрд░реНрдХ рдХреЗ рд░реВрдк рдореЗрдВ, рд╡рд╣ рд╣рдорд╛рд░реА рд╕реЗрд╡рд╛ рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЗ рдкреНрд░рдХрд╛рд░ рдХреЛ рдкреНрд░рд╛рдкреНрдд рдХрд░рддрд╛ рд╣реИред рдФрд░ рджреВрд╕рд░рд╛ рддрд░реНрдХ рдХреЗ рд░реВрдк рдореЗрдВ рдЖрдзрд╛рд░ рдкрддрд╛ред рдЖрдк рдпрд╣рд╛рдВ рдЖрдзрд╛рд░ рдкрддреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдФрд░ рдпрд╣рд╛рдВ рдХреЗ рд╕реНрдерд╛рди рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЕрдзрд┐рдХ рдкрдврд╝ рд╕рдХрддреЗ рд╣реИрдВред рдкреНрд░рдХрд╛рд░ рдХреЛ рд▓рд╛рдЗрди 1 рдкрд░ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдЖрдзрд╛рд░ рдкрддрд╛ рд▓рд╛рдЗрди 2 рдкрд░ рд╣реИред рдЕрдВрдд рдореЗрдВ, рд▓рд╛рдЗрди 5 рдкрд░, рд╣рдорд╛рд░рд╛ рдореЗрдЬрдмрд╛рди рд╢реБрд░реВ рд╣реЛрддрд╛ рд╣реИред

WCF4: рдорд╛рдирдХ рд╕рдорд╛рдкрди рдмрд┐рдВрджреБ


рдпрд╣ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА .NET рдлреНрд░реЗрдорд╡рд░реНрдХ 4.0 рдХреА рдПрдХ рд╡рд┐рд╢реЗрд╖рддрд╛ рд╣реИ рдФрд░ .NET рдХреЗ рдкрд┐рдЫрд▓реЗ рд╕рдВрд╕реНрдХрд░рдг рдореЗрдВ рдЗрд╕реЗ рд▓рд╛рдЧреВ рдХрд░рдирд╛ рдЕрд╕рдВрднрд╡ рд╣реИред рд╕реНрдЯреИрдВрдбрд░реНрдб рдПрдВрдбрдкреЙрдЗрдВрдЯ рдПрдХ рдирдИ рд╕реБрд╡рд┐рдзрд╛ рд╣реИ рдЬреЛ рдЖрдкрдХреА рд╕реЗрд╡рд╛ рдХреЛ рдХрдо рдкрд░реЗрд╢рд╛рди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдбрд┐рдЬрд╝рд╛рдЗрди рдХреА рдЧрдИ рд╣реИред рдореИрдВ рд╣рд░ рдЪреАрдЬ рдХреЛ рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рдирд╛ рдЪрд╛рд╣реВрдВрдЧрд╛ рддрд╛рдХрд┐ рд╕рднреА рдХреЛ рдкрддрд╛ рдЪрд▓реЗ рдХрд┐ рдХреНрдпрд╛ рд╣реЛ рд░рд╣рд╛ рд╣реИред рд▓реЗрдХрд┐рди рд╣рдорд╛рд░реЗ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ, рд╕рдм рдХреБрдЫ рд╡реИрд╕реЗ рднреА рдмрд╣реБрдд рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред рдпрджрд┐ рдЖрдк рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВред NET 4.0, рдЖрдк рдЕрдм рдкрдврд╝ рдирд╣реАрдВ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рджреВрд╕рд░реЗ рднрд╛рдЧ рдкрд░ рдЬрд╛ рд╕рдХрддреЗ рд╣реИрдВ , рдЬрд┐рд╕реЗ рдмрд╛рдж рдореЗрдВ рдкреНрд░рдХрд╛рд╢рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред
рдЖрдк host.AddDefaultEndpoint () рдЬреЛрдбрд╝рдХрд░ рд╕реНрд╡рдпрдВ рдорд╛рдирдХ рд╕рдорд╛рдкрди рдмрд┐рдВрджреБ рдЬреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВ; рдХреЛрдб, рд╕реНрдЯреНрд░рд┐рдВрдЧ рд╣реЛрд╕реНрдЯ рд╕реЗ рдареАрдХ рдкрд╣рд▓реЗред PDF ();)
рд╣рдо рдХреИрд╕реЗ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рд╕рдорд╛рдкрди рдмрд┐рдВрджреБ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд┐рдП рдЧрдП рд╣реИрдВ? рдореЗрд░реЗ рдкрд╛рд╕ рд╕реБрджреВрд░ рдЕрддреАрдд рд╕реЗ рдПрдХ рдЫреЛрдЯреА рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╣реИ рдЬреЛ рд╡рд░реНрддрдорд╛рди рдореЗрдВ рдЪрд▓ рд░рд╣реА рд╣рд░ рдЪреАрдЬ рдХреЛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рддреА рд╣реИред рдореИрдВ рд╡рд┐рд╡рд░рдг рдореЗрдВ рдирд╣реАрдВ рдЬрд╛рдКрдВрдЧрд╛, рдмрд╕ host.Open () рдХреЗ рдмрд╛рдж рдХреЛрдб рдХреА рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдкрдВрдХреНрддрд┐рдпрд╛рдВ рдбрд╛рд▓реЗрдВред
  1. #region рдЖрдЙрдЯрдкреБрдЯ рдбрд┐рд╕реНрдкреИрдЪрд░реНрд╕ рд╕реБрди рд░рд╣рд╛ рд╣реИ
  2. foreach (рдореЗрдЬрдмрд╛рди рдореЗрдВ рдЙрдбрд╝реА рдЙрдбрд╝реА ред рдмрд╛рд╕реАрдбреНрд░реЗрд╕реЗрд╕)
  3. {
  4. рдХрдВрд╕реЛрд▓ .WriteLine ( "\ t {0}" , uri.ToString ());
  5. }
  6. рд╕рд╛рдВрддреНрд╡рдирд╛ .WriteLine ();
  7. рдХрдВрд╕реЛрд▓ .WriteLine ( "рдбрд┐рд╕реНрдкреИрдЪрд░реНрд╕ рдХреА рд╕рдВрдЦреНрдпрд╛ рд╕реБрди рд░рд╣рд╛ рд╣реИ: {0}" , host.ChannelDispatchers.Count);
  8. foreach (System.ServiceModel.Dispatcher.ChannelDispatcher рд╣реЛрд╕реНрдЯ рдореЗрдВ рдбрд┐рд╕реНрдкреИрдЪрд░ ред ChannelDispatchers)
  9. {
  10. рдХрдВрд╕реЛрд▓ .WriteLine ( "\ t {0}, {1}" , рдбрд┐рд╕реНрдкреИрдЪрд░ред рд▓рд┐рд╕реНрдЯрдирд░ред Uri .ToString (), dispatcher.BindingName);
  11. }
  12. рд╕рд╛рдВрддреНрд╡рдирд╛ .WriteLine ();
  13. рдХрдВрд╕реЛрд▓ .WriteLine ( "рд╣реЛрд╕реНрдЯ рд╕рдорд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП <ENTER> рджрдмрд╛рдПрдВ" );
  14. рд╕рд╛рдВрддреНрд╡рдирд╛ .ReadLine ();
  15. #endregion
* рдЗрд╕ рд╕реЛрд░реНрд╕ рдХреЛрдб рдХреЛ рд╕реЛрд░реНрд╕ рдХреЛрдб рд╣рд╛рдЗрд▓рд╛рдЗрдЯрд░ рдХреЗ рд╕рд╛рде рд╣рд╛рдЗрд▓рд╛рдЗрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред

рдЕрдм рдЖрдкрдХреЗ рдкрд╛рд╕ рдЕрдВрддрд┐рдо рдмрд┐рдВрджреБрдУрдВ рдХреЛ рджреЗрдЦрдиреЗ рдХрд╛ рдЕрд╡рд╕рд░ рд╣реИ, рдЬреИрд╕рд╛ рдХрд┐ рдиреАрдЪреЗ рджрд┐рдП рдЧрдП рдкрд╣рд▓реЗ рд╕реНрдХреНрд░реАрдирд╢реЙрдЯ рдореЗрдВ рд╣реИред рдЖрдк рд╕реЗрд╡рд╛ URI рдореЗрдВ рдЬрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдорд╛рдирдХ MEX рд╕рдорд╛рдкрди рдмрд┐рдВрджреБ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ ред





рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ, рдпрд╣ рдмрддрд╛рддрд╛ рд╣реИ рдХрд┐ рд╕рдорд╛рдкрди рдмрд┐рдВрджреБ MEX (рдЙрд░реНрдл рдореЗрдЯрд╛рдбреЗрдЯрд╛) рдЕрднреА рддрдХ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдЕрдм рдирдП рдорд╛рдирдХ рд╕рдорд╛рдкрди рдмрд┐рдВрджреБрдУрдВ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдРрд╕рд╛ рдХрд░рдиреЗ рдХрд╛ рдПрдХ рдЖрд╕рд╛рди рддрд░реАрдХрд╛ рд╣реИред рдореЗрд░реА рдкрд╣рд▓реА рдзрд╛рд░рдгрд╛ рдереА рдХрд┐ рдпрд╣ рдХрд╛рдо рдХрд░реЗрдЧрд╛ред
  1. рдЯрд╛рдЗрдк рд╕рд░реНрд╡рд┐рд╕ рдЯрд╛рдЗрдк = рдЯрд╛рдЗрдкрдСрдлрд╝ (рдИрдореЗрд▓рд╡реИрд▓рд┐рдПрдЯрд░);
  2. рдЙрд░реА рд╕реЗрд╡рд╛рдпреВрд░реА = рдирдИ рдЙрд░реА ( "http: // localhost: 8080 /" );
  3. ServiceHost host = new ServiceHost (serviceType, serviceUri);
  4. host.AddDefaultEndpoint ();
  5. // рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд╕рд┐рд░реНрдл рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред
  6. host.AddServiceEndpoint ( рдирдпрд╛ ServiceMetadataEndpoint ());
* рдЗрд╕ рд╕реЛрд░реНрд╕ рдХреЛрдб рдХреЛ рд╕реЛрд░реНрд╕ рдХреЛрдб рд╣рд╛рдЗрд▓рд╛рдЗрдЯрд░ рдХреЗ рд╕рд╛рде рд╣рд╛рдЗрд▓рд╛рдЗрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред

рдкрдВрдХреНрддрд┐ 5 рдкрд░ рдЖрдк рджреЗрдЦрддреЗ рд╣реИрдВ рдХрд┐ рд╣рдо рдорд╛рдирдХ рд╕рдорд╛рдкрди рдмрд┐рдВрджреБ рдЬреЛрдбрд╝ рд░рд╣реЗ рд╣реИрдВ, рдФрд░ рдкрдВрдХреНрддрд┐ 7 рдкрд░ рд╣рдо ServiceMetadataEndpoint рдпрд╛ MEXPpoint рдЬреЛрдбрд╝рддреЗ рд╣реИрдВред рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ, рдореЗрдЯрд╛рдбреЗрдЯрд╛ рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЛ рдЕрдкрдиреЗ рдЖрдк рдирд╣реАрдВ рдЬреЛрдбрд╝рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЖрдкрдХреЛ рдЕрднреА рднреА рдЗрд╕реЗ рд╕реНрд╡рдпрдВ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред рджреВрд╕рд░рд╛ рддрд░реАрдХрд╛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдореЗрдВ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдирд╛ рд╣реИ рдЬрд┐рд╕реЗ рдЖрдк рдореЗрдЯрд╛рдбреЗрдЯрд╛ рд╢рд╛рдорд┐рд▓ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВред WCF4 рдореЗрдВ рдПрдХ рдФрд░ рдирдИ рд╡рд┐рд╢реЗрд╖рддрд╛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХреЛ рд╡рд┐рд░рд╛рд╕рдд рдореЗрдВ рд▓реЗрдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рд╣реИред рдЖрдк рдорд╢реАрди рдореЗрдВ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ редconfig рдпрд╛ рдЕрдкрдиреЗ рд╕реНрдерд╛рдиреАрдп рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдореЗрдВ рдЬреЛ WCF рд╕реЗрд╡рд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ рд╕рдХреНрд╖рдо рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред рдореЗрд░рд╛ рд╕реБрдЭрд╛рд╡ рд╣реИ рдХрд┐ рдЖрдк рдорд╢реАрди рдореЗрдВ рдРрд╕рд╛ рди рдХрд░реЗрдВ редconfig, рд▓реЗрдХрд┐рди рдпрд╣ рд╕рд┐рд░реНрдл рдореЗрд░реА рд░рд╛рдп рд╣реИред рдпрд╣рд╛рдВ рдореИрдВрдиреЗ рдЕрдкрдиреЗ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдореЗрдВ рдЗрд╕реЗ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рд╣реИ, рд╣рдорд╛рд░реЗ рдХрдВрд╕реЛрд▓ рд╣реЛрд╕реНрдЯ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЗ рдРрдк.рдХреЙрдиреНрдлрд╝рд┐рдЧ рдлрд╝рд╛рдЗрд▓ред рдореИрдВ рдЗрд╕ рддрдереНрдп рдкрд░ рдЖрдкрдХрд╛ рдзреНрдпрд╛рди рдЖрдХрд░реНрд╖рд┐рдд рдХрд░рддрд╛ рд╣реВрдВ рдХрд┐ рдЕрдЧрд▓реЗ рднрд╛рдЧ рдореЗрдВ рд╣рдо рдЗрд╕реЗ рдкреБрд░рд╛рдиреЗ рдврдВрдЧ рд╕реЗ рдХрд░реЗрдВрдЧреЗ, рдПрдХ рдРрд╕рд╛ рддрд░реАрдХрд╛ рдЬреЛ рд╡рд┐рдЬреБрдЕрд▓ рд╕реНрдЯреВрдбрд┐рдпреЛ 2008 рдореЗрдВ рдХрд╛рдо рдХрд░реЗрдЧрд╛ рдФрд░ рдЬрд┐рд╕реЗ рдореИрдВ рдЦреБрдж рдкрд╕рдВрдж рдХрд░рддрд╛ рд╣реВрдВред
  1. <? xml рд╕рдВрд╕реНрдХрд░рдг = "1.0" рдПрдиреНрдХреЛрдбрд┐рдВрдЧ = "utf-8" ? >
  2. < рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди >
  3. < system.serviceModel >
  4. < рд╡реНрдпрд╡рд╣рд╛рд░ >
  5. < serviceBehaviors >
  6. < рд╡реНрдпрд╡рд╣рд╛рд░ >
  7. < serviceMetadata httpGetEnabled = "True" />
  8. </ рд╡реНрдпрд╡рд╣рд╛рд░ >
  9. </ serviceBehaviors >
  10. </ рд╡реНрдпрд╡рд╣рд╛рд░ >
  11. </ system.serviceModel >
  12. </ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди >
* рдЗрд╕ рд╕реЛрд░реНрд╕ рдХреЛрдб рдХреЛ рд╕реЛрд░реНрд╕ рдХреЛрдб рд╣рд╛рдЗрд▓рд╛рдЗрдЯрд░ рдХреЗ рд╕рд╛рде рд╣рд╛рдЗрд▓рд╛рдЗрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред

рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ, рдореИрдВрдиреЗ рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЗ рд▓рд┐рдП рдПрдХ рдирд╛рдо рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдирд╣реАрдВ рдХрд┐рдпрд╛, рдбрдмреНрд▓реНрдпреВрд╕реАрдПрдл 4 рдореЗрдВ рдЗрд╕рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рд╕рднреА рд╕реЗрд╡рд╛рдУрдВ рджреНрд╡рд╛рд░рд╛ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рдЗрд╕рдХрд╛ рдпрд╣ рднреА рдЕрд░реНрде рд╣реИ рдХрд┐ рдкреНрд░рддреНрдпреЗрдХ рд╕реЗрд╡рд╛ рдХреЛ HTTP рд╕рдорд╛рдкрди рдмрд┐рдВрджреБ рдХреЗ рд▓рд┐рдП рдЖрдзрд╛рд░ рдкрддреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред
рд╕рдВрджрд░реНрдн рдХреЗ рд▓рд┐рдП, рдпрд╣рд╛рдВ рд╣рдорд╛рд░реЗ рдХрдВрд╕реЛрд▓ рд╣реЛрд╕реНрдЯ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЗ рд▓рд┐рдП рдХреЛрдб рд╣реИ:
  1. рд╕реНрдерд┐рд░ рд╢реВрдиреНрдп рдореБрдЦреНрдп ( рд╕реНрдЯреНрд░рд┐рдВрдЧ [] args)
  2. {
  3. рдЯрд╛рдЗрдк рд╕рд░реНрд╡рд┐рд╕ рдЯрд╛рдЗрдк = рдЯрд╛рдЗрдкрдСрдлрд╝ (рдИрдореЗрд▓рд╡реИрд▓рд┐рдПрдЯрд░);
  4. рдЙрд░реА рд╕реЗрд╡рд╛рдпреВрд░реА = рдирдИ рдЙрд░реА ( "http: // localhost: 8080 /" );
  5. ServiceHost host = new ServiceHost (serviceType, serviceUri);
  6. host.Open ();
  7. #region рдЖрдЙрдЯрдкреБрдЯ рдбрд┐рд╕реНрдкреИрдЪрд░реНрд╕ рд╕реБрди рд░рд╣рд╛ рд╣реИ
  8. foreach (рдореЗрдЬрдмрд╛рди рдореЗрдВ рдЙрдбрд╝реА рдЙрдбрд╝реА ред рдмрд╛рд╕реАрдбреНрд░реЗрд╕реЗрд╕)
  9. {
  10. рдХрдВрд╕реЛрд▓ .WriteLine ( "\ t {0}" , uri.ToString ());
  11. }
  12. рд╕рд╛рдВрддреНрд╡рдирд╛ .WriteLine ();
  13. рдХрдВрд╕реЛрд▓ .WriteLine ( "рдбрд┐рд╕реНрдкреИрдЪрд░реНрд╕ рдХреА рд╕рдВрдЦреНрдпрд╛ рд╕реБрди рд░рд╣рд╛ рд╣реИ: {0}" , host.ChannelDispatchers.Count);
  14. foreach (System.ServiceModel.Dispatcher.ChannelDispatcher рд╣реЛрд╕реНрдЯ рдореЗрдВ рдбрд┐рд╕реНрдкреИрдЪрд░ ред ChannelDispatchers)
  15. {
  16. рдХрдВрд╕реЛрд▓ .WriteLine ( "\ t {0}, {1}" , рдбрд┐рд╕реНрдкреИрдЪрд░ред рд▓рд┐рд╕реНрдЯрдирд░ред Uri .ToString (), dispatcher.BindingName);
  17. }
  18. рд╕рд╛рдВрддреНрд╡рдирд╛ .WriteLine ();
  19. рдХрдВрд╕реЛрд▓ .WriteLine ( "рд╣реЛрд╕реНрдЯ рд╕рдорд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП <ENTER> рджрдмрд╛рдПрдВ" );
  20. рд╕рд╛рдВрддреНрд╡рдирд╛ .ReadLine ();
  21. #endregion
  22. }
* рдЗрд╕ рд╕реЛрд░реНрд╕ рдХреЛрдб рдХреЛ рд╕реЛрд░реНрд╕ рдХреЛрдб рд╣рд╛рдЗрд▓рд╛рдЗрдЯрд░ рдХреЗ рд╕рд╛рде рд╣рд╛рдЗрд▓рд╛рдЗрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред


рдореЗрдЯрд╛рдбреЗрдЯрд╛ рддрдХ рдкрд╣реБрдБрдЪ рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛


рдЕрдм рд╣рдо рдЗрдВрдЯрд░рдиреЗрдЯ рдПрдХреНрд╕рдкреНрд▓реЛрд░рд░ рдпрд╛ рдХрд┐рд╕реА рдЕрдиреНрдп рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдХреЛ рдЦреЛрд▓ рд╕рдХрддреЗ рд╣реИрдВ, рд╣рдорд╛рд░реЗ рдХрдВрд╕реЛрд▓ рд╣реЛрд╕реНрдЯ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ рд▓реЙрдиреНрдЪ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ (рдЕрдиреНрдпрдерд╛, рд╕рдорд╛рдкрди рдмрд┐рдВрджреБ рдЙрдкрд▓рдмреНрдз рдирд╣реАрдВ рд╣реЛрдВрдЧреЗ) рдФрд░ рд╣рдорд╛рд░реА рд╕реЗрд╡рд╛ рдХреЗ рдпреВрдЖрд░рдЖрдИ рдкрд░ рдЬрд╛рдПрдВ: http: // localhost: 8080 /
рдпрджрд┐ рдЖрдк рдбрдмреНрд▓реВрдПрд╕рдбреАрдПрд▓ рдХреЗ рд▓рд┐рдВрдХ рдХреЗ рд╕рд╛рде рдПрдХ рд╕реНрдХреНрд░реАрди рджреЗрдЦрддреЗ рд╣реИрдВ, рддреЛ рд╕рдмрд╕реЗ рдЕрдзрд┐рдХ рд╕рдВрднрд╛рд╡рдирд╛ рд╣реИ рдХрд┐ рдЖрдкрдиреЗ рд╕реЗрд╡рд╛ рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдХрд┐рдпрд╛ рд╣реИред

рдХреНрд▓рд╛рдЗрдВрдЯ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдмрдирд╛рдирд╛


рдЕрдм рд╣рдо рдПрдХ рдЕрдиреНрдп рдкрд░рд┐рдпреЛрдЬрдирд╛ рдЬреЛрдбрд╝реЗрдВрдЧреЗ рдЬреЛ рд╕реЗрд╡рд╛ рддрдХ рдкрд╣реБрдВрдЪ рдЬрд╛рдПрдЧреА, рдФрд░ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдпрд╣ рдЬрд╛рдВрдЪрдиреЗ рдХрд╛ рдЕрд╡рд╕рд░ рд╣реЛрдЧрд╛ рдХрд┐ рдХреНрдпрд╛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдИрдореЗрд▓ рдкрддреЗ рд╡реИрдз рд╣реИрдВ, рдпрд╛ рдХрдо рд╕реЗ рдХрдо рд╣рдорд╛рд░реА рдирд┐рдпрдорд┐рдд рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдХреЛ рд╕рдВрддреБрд╖реНрдЯ рдХрд░рддреЗ рд╣реИрдВред
рдПрдХ рдирдпрд╛ рдХрдВрд╕реЛрд▓ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдЬреЛрдбрд╝реЗрдВ рдФрд░ рдЗрд╕ рдмрд╛рд░ рдЗрд╕реЗ рдХрдВрд╕реЛрд▓ рдХрдВрд╕реЛрд▓ рдХрд╣реЗрдВред рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░реЗрдВ рдХрд┐ рдЖрдкрдХреА рд╕реЗрд╡рд╛ (рд╣реЛрд╕реНрдЯ) рдЪрд▓ рд░рд╣реА рд╣реИ рдФрд░ рдпрд╣ рдбрд┐рдмрдЧ рдореЛрдб рдореЗрдВ рдХрд╛рдо рдирд╣реАрдВ рдХрд░ рд░рд╣реА рд╣реИред рд╕рдмрд╕реЗ рдЖрд╕рд╛рди рддрд░реАрдХрд╛ рдХрдВрд╕реЛрд▓ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреЛ рдПрдХ рд╕реНрдЯрд╛рд░реНрдЯ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреЗ рд░реВрдк рдореЗрдВ рд╕реЗрдЯ рдХрд░рдирд╛ рд╣реИ рдФрд░ рдЗрд╕реЗ рдЧреИрд░-рдбрд┐рдмрдЧ рдореЛрдб рдореЗрдВ рд╢реБрд░реВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП CTRL + F5 рджрдмрд╛рдПрдВред
рдЕрдм рд╣рдореЗрдВ рдПрдХ рдкреНрд░реЙрдХреНрд╕реА рдХреНрд▓рд╛рд╕ (рдкреНрд░реЙрдХреНрд╕реА рдХреНрд▓рд╛рд╕) рдХреА рдЬрд░реВрд░рдд рд╣реИ, рдЬреЛ рд╣рдорд╛рд░реЗ рдХреНрд▓рд╛рдЗрдВрдЯ рдФрд░ рд╕рд░реНрд╡рд┐рд╕ рдХреЗ рдмреАрдЪ рд╣реЛрдЧреАред рд╣рдорд╛рд░реА рд╕реЗрд╡рд╛ рдХреЗ рд▓рд┐рдП рдкреНрд░реЙрдХреНрд╕реА рдмрдирд╛рдиреЗ рдХреЗ рджреЛ рддрд░реАрдХреЗ рд╣реИрдВред рдореИрдВ рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ рдпрд╣ рдЬрд╛рдирдирд╛ рдкрд╕рдВрдж рдХрд░рддрд╛ рд╣реВрдВ рдХрд┐ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдХреНрдпрд╛ рдЪрд▓ рд░рд╣рд╛ рд╣реИред рдореИрдВ рдЗрд╕реЗ рдкрд╣рд▓реЗ рджрд┐рдЦрд╛рдКрдВрдЧрд╛ред

рдореИрдиреБрдЕрд▓ рдкреНрд░реЙрдХреНрд╕реА рдирд┐рд░реНрдорд╛рдг


рдЖрд░рдВрдн рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, Visual Studio 2010 (рдпрд╛ Visual Studio 2008) рдХрдорд╛рдВрдб рдкреНрд░реЙрдореНрдкреНрдЯ рдЪрд▓рд╛рдПрдВ рдФрд░ ConsoleClient рдХреЗ рд╕реНрдерд╛рди рдкрд░ рдиреЗрд╡рд┐рдЧреЗрдЯ рдХрд░реЗрдВред рдЪреВрдБрдХрд┐ рдпрд╣ Visual Studio рдХрдорд╛рдВрдб рд▓рд╛рдЗрди рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЖрдкрдХреЛ svcutil.exe рдкреНрд░реЙрдХреНрд╕реА рдЬрдирд░реЗрдЯрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХрдорд╛рдВрдб рджрд░реНрдЬ рдХрд░реЗрдВ:
svcutil http://(___)localhost:8080/ /o:ServiceProxy.cs /config:App.Config /n:*,ConsoleClient

рдЗрд╕ рдХрдорд╛рдВрдб рдХреЛ рджреЛ рдлрд╛рдЗрд▓реЗрдВ рдЙрддреНрдкрдиреНрди рдХрд░рдиреА рдЪрд╛рд╣рд┐рдП: рдПрдХ рд╕реЗрд╡рд╛ рдкреНрд░реЙрдХреНрд╕реА рдФрд░ рдПрдХ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдлрд╝рд╛рдЗрд▓ред рдЕрдкрдиреЗ рдХрдВрд╕реЛрд▓ рдХрдВрд╕реЛрд▓ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЗ рд╕рд╛рде рд╡рд┐рдЬрд╝реБрдЕрд▓ рд╕реНрдЯреВрдбрд┐рдпреЛ рдкрд░ рд╡рд╛рдкрд╕ рд▓реМрдЯреЗрдВред App.Config рдФрд░ ServiceProxy.cs рдХреЗ рдЙрдкрд▓рдмреНрдз рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рд╕рдорд╛рдзрд╛рди рдПрдХреНрд╕рдкреНрд▓реЛрд░рд░ рдХреЗ рд╢реАрд░реНрд╖ рдкрд░ рд╕реНрдерд┐рдд рдЖрдЗрдХрди рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдЬреИрд╕рд╛ рдХрд┐ рдиреАрдЪреЗ рд╕реНрдХреНрд░реАрдирд╢реЙрдЯ рдореЗрдВ рджрд┐рдЦрд╛рдпрд╛ рдЧрдпрд╛ рд╣реИред рдЕрдм рдирдИ рдлрд╛рдЗрд▓реЗрдВ рдкреНрд░рджрд░реНрд╢рд┐рдд рд╣реЛрддреА рд╣реИрдВ рдФрд░ рдЖрдк рдЙрдиреНрд╣реЗрдВ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдореЗрдВ рд╢рд╛рдорд┐рд▓ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
рдиреЛрдЯ: рдХрдВрд╕реЛрд▓ рд╡рд┐рдВрдбреЛ рдореЗрдВ рд╕реНрдХреНрд░реАрдирд╢реЙрдЯ ConsoleClient рдХреЗ рдмрдЬрд╛рдп рдЧрд▓рдд ConsoleHost рдирд╛рдо рд╕реНрдерд╛рди рджрд┐рдЦрд╛рддрд╛ рд╣реИред





рдЬрдм рд╣рдордиреЗ svcutil.exe рд╢реБрд░реВ рдХрд┐рдпрд╛, рддреЛ рд╣рдордиреЗ рдЗрд╕реЗ рдЕрдкрдиреА рд╕реЗрд╡рд╛ рдХрд╛ рд╕реНрдерд╛рди рдкрд╣рд▓реЗ рддрд░реНрдХ рдХреЗ рд░реВрдк рдореЗрдВ рдкрд╛рд░рд┐рдд рдХрд┐рдпрд╛, рдЬреИрд╕рд╛ рдХрд┐ рдореЗрдЬрдмрд╛рди рдкрд░ рд╕рдВрдХреЗрдд рджрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рдпрд╣ рдЖрдзрд╛рд░ рдкрддрд╛ рд╣реИред рджреВрд╕рд░рд╛ рддрд░реНрдХ рд╣рдорд╛рд░рд╛ рдкреНрд░реЙрдХреНрд╕реА рд╣реИред рддреАрд╕рд░рд╛ рддрд░реНрдХ рдЗрдВрдЧрд┐рдд рдХрд░рддрд╛ рд╣реИ рдХрд┐ рд╣рдо рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХреЛ рднреА рдЕрдкрдбреЗрдЯ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рдФрд░ рдпрджрд┐ рдпрд╣ рдЙрдкрд▓рдмреНрдз рдирд╣реАрдВ рд╣реИ, рддреЛ рдЗрд╕реЗ рдмрдирд╛рдПрдВред рдЕрдВрддрд┐рдо рддрд░реНрдХ рд╣рдорд╛рд░реЗ рдкреНрд░реЙрдХреНрд╕реА рдХреЗ рд▓рд┐рдП рдирд╛рдо рд╕реНрдерд╛рди рд╣реИ, рдЬреЛ рд╡рд░реНрддрдорд╛рди рдореЗрдВ рд╣рдорд╛рд░реЗ рдЖрд╡реЗрджрди рдХреЗ рд╕рдорд╛рди рд╣реИред

рд╕реЗрд╡рд╛ рдХреЙрд▓


рдЕрдм рд╣рдо рдЕрдВрдд рдореЗрдВ рд╕реЗрд╡рд╛ рдореЗрдВ рдмрджрд▓ рд╕рдХрддреЗ рд╣реИрдВред рд╣рдо рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХреНрд▓рд╛рд╕ рдореЗрдВ рдлрд┐рд░ рд╕реЗ рдореЗрди рдореЗрдердб рдкрд╛рд╕ рдХрд░рддреЗ рд╣реИрдВред рдЕрдм рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдкреНрд░реЙрдХреНрд╕реА рдХреНрд▓рд╛рд╕ рддрдХ рдкрд╣реБрдВрдЪ рд╣реИ, рдЬрд┐рд╕рдореЗрдВ рдкреНрд░рддреНрдпрдп рдХреНрд▓рд╛рдЗрдВрдЯ рдХреЗ рд╕рд╛рде рд╣рдорд╛рд░реА рд╕реЗрд╡рд╛ рдХрд╛ рдирд╛рдо рд╣реИред рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, EmailValidatorClient ред
  1. EmailValidatorClient svc = new EmailValidatorClient ();
  2. рдмреВрд▓ рдкрд░рд┐рдгрд╛рдо = svc.ValidateAddress ( "dennis@blogabout.net" );
* рдЗрд╕ рд╕реЛрд░реНрд╕ рдХреЛрдб рдХреЛ рд╕реЛрд░реНрд╕ рдХреЛрдб рд╣рд╛рдЗрд▓рд╛рдЗрдЯрд░ рдХреЗ рд╕рд╛рде рд╣рд╛рдЗрд▓рд╛рдЗрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред

рдкрдВрдХреНрддрд┐ 1 рдореЗрдВ рдЖрдк рдкреНрд░реЙрдХреНрд╕реА рдЖрд░рдВрднреАрдХрд░рдг рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВред рдЗрд╕рдХрд╛ рдорддрд▓рдм рдХрдиреЗрдХреНрд╢рди рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдирд╛ рдирд╣реАрдВ рд╣реИ, рдпрд╣ рдкрд╣рд▓реА рдХреЙрд▓ рдкрд░ рд╣реЛрдЧрд╛ред рдкрдВрдХреНрддрд┐ 2 рдореЗрдВ, рд╕реЗрд╡рд╛ рдХреЛ рдХреЙрд▓ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рдкрд░рд┐рдгрд╛рдо рд╡рд╛рдкрд╕ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
рдиреАрдЪреЗ рд╣рдорд╛рд░реЗ рдореБрдЦреНрдп рд╡рд┐рдзрд┐ рдХреЗ рд▓рд┐рдП рдХреЛрдб рд╣реИ, рдЬреЛ рдИрдореЗрд▓ рдкрддреЗ рдХрд╛ рдЕрдиреБрд░реЛрдз рдХрд░реЗрдЧрд╛ред
  1. рд╕реНрдерд┐рд░ рд╢реВрдиреНрдп рдореБрдЦреНрдп ( рд╕реНрдЯреНрд░рд┐рдВрдЧ [] args)
  2. {
  3. рдЬрдмрдХрд┐ ( рд╕рдЪ )
  4. {
  5. рдХрдВрд╕реЛрд▓ .WriteLine ( "рдПрдХ рдИрдореЗрд▓ рдкрддрд╛ рджрд░реНрдЬ рдХрд░реЗрдВ рдпрд╛ рдЫреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП [ENTER] рджрдмрд╛рдПрдВ ..." );
  6. string emailAddress = Console .ReadLine ();
  7. рдЕрдЧрд░ ( рд╕реНрдЯреНрд░рд┐рдВрдЧ .IsNullOrEmpty (emailAddress))
  8. рд╡рд╛рдкрд╕реА;
  9. EmailValidatorClient svc = new EmailValidatorClient ();
  10. рдмреВрд▓ рдкрд░рд┐рдгрд╛рдо = svc.ValidateAddress (emailAddress);
  11. рдХрдВрд╕реЛрд▓ .WriteLine ( "рдИрдореЗрд▓ рдкрддрд╛ рдорд╛рдиреНрдп рд╣реИ: {0}" , рдкрд░рд┐рдгрд╛рдо);
  12. }
  13. }
* рдЗрд╕ рд╕реЛрд░реНрд╕ рдХреЛрдб рдХреЛ рд╕реЛрд░реНрд╕ рдХреЛрдб рд╣рд╛рдЗрд▓рд╛рдЗрдЯрд░ рдХреЗ рд╕рд╛рде рд╣рд╛рдЗрд▓рд╛рдЗрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред


рд╡рд┐рдЬреБрдЕрд▓ рд╕реНрдЯреВрдбрд┐рдпреЛ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдПрдХ рдкреНрд░реЙрдХреНрд╕реА рдмрдирд╛рдирд╛ рдПрдХ рдЖрд╕рд╛рди рддрд░реАрдХрд╛ рд╣реИред


рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ svcutil.exe рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдПрдХ рд╕реЗрд╡рд╛ рдкреНрд░реЙрдХреНрд╕реА рдмрдирд╛рдиреЗ рдХреЗ рдмрдЬрд╛рдп, рдЖрдк рд╡рд┐рдЬрд╝реБрдЕрд▓ рд╕реНрдЯреВрдбрд┐рдпреЛ рдХреЛ рдЖрдкрдХреЗ рд▓рд┐рдП рдПрдХ рдмрдирд╛рдиреЗ рджреЗ рд╕рдХрддреЗ рд╣реИрдВред рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдкрд░ рд░рд╛рдЗрдЯ-рдХреНрд▓рд┐рдХ рдХрд░реЗрдВ рдФрд░ "рд╕реЗрд╡рд╛ рд╕рдВрджрд░реНрдн рдЬреЛрдбрд╝реЗрдВ ..." рдЪреБрдиреЗрдВ, рдПрдХ рдбрд╛рдпрд▓реЙрдЧ рдмреЙрдХреНрд╕ рджрд┐рдЦрд╛рдИ рджреЗрдЧрд╛ рдЬрд╣рд╛рдВ рдЖрдкрдХреЛ рдЕрдкрдиреА рд╕реЗрд╡рд╛ рдФрд░ рдирд╛рдо рд╕реНрдерд╛рди рдХрд╛ рдкрддрд╛ рджрд░реНрдЬ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред



рдЕрдм рд╣рдо ConsoleClient рдирд╛рдо рд╕реНрдерд╛рди рдкрд░ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдпрд╣ рдореМрдЬреВрджрд╛ рдирд╛рдорд╕реНрдерд╛рдиреЛрдВ рдХреЛ рдЬреЛрдбрд╝рддреА рд╣реИред рддреЛ рдЕрдм рдЖрдк ConsoleClient.EmailValidatorClient рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ EmailValidatorClient рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдФрд░ рдпрд╣ рдПрдХ рдХрд╛рд░рдг рд╣реИ рдХрд┐ рдореБрдЭреЗ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдЙрддреНрдкрдиреНрди рдкреНрд░реЙрдХреНрд╕реА рдХреНрд▓рд╛рд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдкрд╕рдВрдж рдирд╣реАрдВ рд╣реИред рдЕрдм рдЖрдкрдХреЛ рдЗрд╕ рдирд╛рдо рд╕реНрдерд╛рди рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдирд┐рд░реНрджреЗрд╢ рдЬреЛрдбрд╝рдирд╛ рдпрд╛рдж рд░рдЦрдирд╛ рдЪрд╛рд╣рд┐рдПред рд╕рдВрднрд╡рддрдГ рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рд╕рдорд╛рдзрд╛рди рдПрдХ рдкреНрд░реЙрдХреНрд╕реА рдирд╛рдо рд╕реНрдерд╛рди рдпрд╛ рд╕рдВрд╡рд╛рдж рдмреЙрдХреНрд╕ рдореЗрдВ рдХреБрдЫ рд╕рдорд╛рди рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ рддрд╛рдХрд┐ рдкреВрд░реНрдг рдирд╛рдорд╕реНрдерд╛рди рдирд╛рдо рдЕрдзрд┐рдХ рд╕рдордЭ рдореЗрдВ рдЖрдПред

рдХреНрд▓рд╛рдЗрдВрдЯ рд▓реЙрдиреНрдЪ


рдпрджрд┐ рд╕реЗрд╡рд╛ рдЕрднреА рднреА рдЪрд▓ рд░рд╣реА рд╣реИ (рдпрджрд┐ рдирд╣реАрдВ, рддреЛ рдЗрд╕реЗ рдкреБрдирд░рд╛рд░рдВрдн рдХрд░реЗрдВ), рддреЛ рдЖрдк рдХрдВрд╕реЛрд▓ рдХрдВрд╕реЛрд▓ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдкрд░ рд░рд╛рдЗрдЯ-рдХреНрд▓рд┐рдХ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдбреАрдмрдЧ рдФрд░ рдирдИ рдЖрд╡реГрддреНрддрд┐ рдкреНрд░рд╛рд░рдВрдн рдХрд░реЗрдВ рдХрд╛ рдЪрдпрди рдХрд░реЗрдВ ред рд╕рдм рдХреБрдЫ, рдЖрдк рдХрд░ рд░рд╣реЗ рд╣реИрдВред

рдЖрдЧреЗ рдХреНрдпрд╛ рд╣реИ?


рдЗрд╕рдХреЗ рдмрд╛рдж, рдореИрдВ рд╕рдордЭрд╛рдКрдВрдЧрд╛ рдХрд┐ рдХреИрд╕реЗ рдЖрдИрдПрдирдПрд╕ рдореЗрдВ рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ рдЬреБрдбрд╝рдирд╛ рд╣реИ рдФрд░ рдЖрдИрдЖрдИрдПрд╕ рдореЗрдВ рд╕реЗрд╡рд╛рдУрдВ рдХреА рдореЗрдЬрдмрд╛рдиреА рдХреИрд╕реЗ рдХрд░рдиреА рд╣реИред рдЖрдк рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдпрд╣рд╛рдВ рдкрдврд╝ рд╕рдХрддреЗ рд╣реИрдВред

рдпрд╣рд╛рдВ рд╕реЗ рдЖрдк рд╡рд┐рдЬрд╝реБрдЕрд▓ рд╕реНрдЯреВрдбрд┐рдпреЛ 2010 рдХреЗ рд▓рд┐рдП рд╕рдорд╛рдзрд╛рди рдбрд╛рдЙрдирд▓реЛрдб рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдЕрдЧрд▓реЗ рднрд╛рдЧ рдореЗрдВ рд╡рд┐рдЬреБрдЕрд▓ рд╕реНрдЯреВрдбрд┐рдпреЛ 2008 рдХрд╛ рдПрдХ рд╕рдорд╛рдзрд╛рди рднреА рдЙрдкрд▓рдмреНрдз рд╣реЛрдЧрд╛ред

Source: https://habr.com/ru/post/In116764/


All Articles