{"id":222981,"date":"2014-05-23T17:17:03","date_gmt":"2014-05-23T13:17:03","guid":{"rendered":"http:\/\/savepearlharbor.com\/?p=222981"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-29T21:00:00","slug":"","status":"publish","type":"post","link":"https:\/\/savepearlharbor.com\/?p=222981","title":{"rendered":"<span class=\"post_title\">WCF \u0421\u043b\u0443\u0436\u0431\u0430 \u043c\u0430\u0440\u0448\u0440\u0443\u0442\u0438\u0437\u0430\u0446\u0438\u0438 \u2014 \u0427\u0430\u0441\u0442\u044c I<\/span>"},"content":{"rendered":"<div class=\"content html_format\">\n<h4>WCF \u0421\u043b\u0443\u0436\u0431\u0430 \u043c\u0430\u0440\u0448\u0440\u0443\u0442\u0438\u0437\u0430\u0446\u0438\u0438 \u2014 \u0427\u0430\u0441\u0442\u044c I<\/h4>\n<p>  <\/p>\n<h5>\u0412\u0432\u0435\u0434\u0435\u043d\u0438\u0435<\/h5>\n<p>  \u0421\u043b\u0443\u0436\u0431\u0430 \u043c\u0430\u0440\u0448\u0440\u0443\u0442\u0438\u0437\u0430\u0446\u0438\u0438 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043e\u0431\u0449\u0438\u043c SOAP -\u043f\u043e\u0441\u0440\u0435\u0434\u043d\u0438\u043a\u043e\u043c, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0432\u044b\u0441\u0442\u0443\u043f\u0430\u0435\u0442 \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u043c\u0430\u0440\u0448\u0440\u0443\u0442\u0438\u0437\u0430\u0442\u043e\u0440\u0430. \u0411\u0430\u0437\u043e\u0432\u0430\u044f \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b\u044c\u043d\u043e\u0441\u0442\u044c \u0441\u043b\u0443\u0436\u0431\u044b \u043c\u0430\u0440\u0448\u0440\u0443\u0442\u0438\u0437\u0430\u0446\u0438\u0438 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u043c\u0430\u0440\u0448\u0440\u0443\u0442\u0438\u0437\u0430\u0446\u0438\u0438 \u0432\u0445\u043e\u0434\u044f\u0449\u0438\u0445 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0439 \u043d\u0430 \u043e\u0441\u043d\u043e\u0432\u0435 \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u043e\u0433\u043e \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u044f (\u0432 \u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043a\u0435 \u0438\u043b\u0438 \u0442\u0435\u043b\u0435 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u044f) \u043a \u0444\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u043c \u0441\u043b\u0443\u0436\u0431, \u0440\u0430\u0437\u043c\u0435\u0449\u0435\u043d\u043d\u044b\u0445 \u0432 \u0442\u043e\u043c \u0436\u0435 \u043a\u043e\u043c\u043f\u044c\u044e\u0442\u0435\u0440\u0435, \u0447\u0442\u043e \u0438 Router Service \u0438\u043b\u0438 \u0440\u0430\u0441\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u043d\u044b\u0445 \u043f\u043e \u0441\u0435\u0442\u0438. \u041d\u0430 \u0441\u0430\u043c\u043e\u043c \u0434\u0435\u043b\u0435 \u0421\u043b\u0443\u0436\u0431\u0430 \u043c\u0430\u0440\u0448\u0440\u0443\u0442\u0438\u0437\u0430\u0446\u0438\u0438 \u0434\u0435\u0439\u0441\u0442\u0432\u0443\u0435\u0442 \u043a\u0430\u043a \u043f\u0435\u0440\u0435\u0434\u043d\u0435\u0433\u043e \u043f\u043b\u0430\u043d\u0430 \u043e\u0431\u0441\u043b\u0443\u0436\u0438\u0432\u0430\u043d\u0438\u044f, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043e\u0442\u0440\u0430\u0436\u0430\u0435\u0442 \u0446\u0435\u043b\u0435\u0432\u0443\u044e \u0441\u043b\u0443\u0436\u0431\u0443 (\u044b). \u041e\u0441\u043d\u043e\u0432\u043d\u043e\u0435 \u043f\u0440\u0435\u0438\u043c\u0443\u0449\u0435\u0441\u0442\u0432\u043e \u0432 Routing Service \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043e\u0431\u0435\u0441\u043f\u0435\u0447\u0438\u0442\u044c \u043f\u0440\u043e\u0437\u0440\u0430\u0447\u043d\u043e\u0441\u0442\u044c \u043c\u0435\u0441\u0442\u043e\u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u0434\u043b\u044f \u043a\u043b\u0438\u0435\u043d\u0442\u0430 (\u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f), \u0442\u0430\u043a \u043a\u0430\u043a \u043a\u043b\u0438\u0435\u043d\u0442 \u044f\u0432\u043d\u043e \u043e\u0442\u0434\u0435\u043b\u0435\u043d\u0430 \u043e\u0442 \u0437\u043d\u0430\u044f \u043d\u0438\u0447\u0435\u0433\u043e \u043e \u0444\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0445 \u0443\u0441\u043b\u0443\u0433, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0444\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u044e\u0442 \u0437\u0430\u0434\u0430\u0447\u0438 \u043e\u0442 \u0435\u0435 \u0438\u043c\u0435\u043d\u0438. \u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u044d\u0442\u043e \u0434\u0430\u0435\u0442 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0442\u044c \u0440\u0430\u0437\u043b\u0438\u0447\u043d\u044b\u0435 \u0432\u0438\u0434\u044b \u043f\u0440\u043e\u043c\u0435\u0436\u0443\u0442\u043e\u0447\u043d\u043e\u0439 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u0432 \u0440\u0430\u043c\u043a\u0430\u0445 \u0443\u0441\u043b\u0443\u0433\u0438 \u043c\u0430\u0440\u0448\u0440\u0443\u0442\u0438\u0437\u0430\u0446\u0438\u0438.<\/p>\n<p>  \u0412\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043c\u0430\u0440\u0448\u0440\u0443\u0442\u0438\u0437\u0430\u0446\u0438\u044e \u0432 \u0440\u044f\u0434\u0435 \u043d\u0430\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0439. \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043c\u0430\u0440\u0448\u0440\u0443\u0442\u0438\u0437\u0430\u0446\u0438\u044e \u0434\u043b\u044f \u043c\u0430\u0440\u0448\u0440\u0443\u0442\u0438\u0437\u0430\u0446\u0438\u0438 \u0432\u0445\u043e\u0434\u044f\u0449\u0438\u0445 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0439 \u043d\u0430 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0435 \u0443\u0441\u043b\u0443\u0433\u0438 (\u044b) \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e content-based\/context-based \u043c\u0435\u0442\u043e\u0434\u044b \u043c\u0430\u0440\u0448\u0440\u0443\u0442\u0438\u0437\u0430\u0446\u0438\u0438. \u0412\u044b \u0442\u0430\u043a\u0436\u0435 \u043c\u043e\u0436\u0435\u0442\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043c\u0430\u0440\u0448\u0440\u0443\u0442\u0438\u0437\u0430\u0446\u0438\u044e \u0434\u043b\u044f \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u0433\u0440\u0430\u043d\u0438\u0446\u0443 \u0446\u0435\u043d\u0442\u0440\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u043d\u043d\u043e\u0439 \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e\u0441\u0442\u0438, \u043f\u0440\u043e\u0442\u043e\u043a\u043e\u043b \u043c\u043e\u0441\u0442\u0430, \u0431\u0430\u043b\u0430\u043d\u0441\u0438\u0440\u043e\u0432\u043a\u0443 \u043d\u0430\u0433\u0440\u0443\u0437\u043a\u0438 \u0438\u043b\u0438 \u0434\u0430\u0436\u0435 \u0441\u043b\u0443\u0436\u0431\u044b \u0432\u0435\u0440\u0441\u0438\u044f\u043c\u0438.<\/p>\n<p>  \u0412 \u043c\u0430\u0440\u0448\u0440\u0443\u0442\u0438\u0437\u0430\u0446\u0438\u0438, \u043c\u0430\u0440\u0448\u0440\u0443\u0442\u0438\u0437\u0430\u0446\u0438\u0438 \u0443\u0441\u043b\u0443\u0433 (\u043c\u0430\u0440\u0448\u0440\u0443\u0442\u0438\u0437\u0430\u0442\u043e\u0440) \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u044b\u0439 \u043a\u043e\u043d\u0435\u0447\u043d\u0443\u044e \u0442\u043e\u0447\u043a\u0443 (\u044b), \u0447\u0442\u043e \u043a\u043b\u0438\u0435\u043d\u0442\u0441\u043a\u043e\u0435 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 (\u044b) \u043f\u043e\u0442\u0440\u0435\u0431\u043b\u044f\u0435\u0442 \u0432\u043c\u0435\u0441\u0442\u043e \u043f\u043e\u0442\u0440\u0435\u0431\u043b\u044f\u044e\u0449\u0438\u0445 \u0444\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u0435 \u043a\u043e\u043d\u0435\u0447\u043d\u0443\u044e \u0442\u043e\u0447\u043a\u0443 (\u044b) \u0441\u043b\u0443\u0436\u0431\u044b \u0438 \u0447\u0442\u043e (\u0432\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u044b\u0439 \u043a\u043e\u043d\u0435\u0447\u043d\u044b\u0445 \u0442\u043e\u0447\u0435\u043a) \u043c\u0430\u0440\u0448\u0440\u0443\u0442\u044b \u0432\u0445\u043e\u0434\u044f\u0449\u0438\u0435 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u044f \u0438\u0437 \u043a\u043b\u0438\u0435\u043d\u0442\u0441\u043a\u043e\u0433\u043e \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u043a \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0435\u043c\u0443 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0442\u0435\u043b\u044c\u043d\u0443\u044e \u0441\u043b\u0443\u0436\u0431\u0443 \u043a\u043e\u043d\u0435\u0447\u043d\u043e\u0439 \u0442\u043e\u0447\u043a\u0438 \u0447\u0435\u0440\u0435\u0437 \u043f\u043e\u0441\u0440\u0435\u0434\u043d\u0438\u043a\u0430.<\/p>\n<p>  <img decoding=\"async\" src=\"http:\/\/www.codeproject.com\/KB\/WCF\/772854\/1.png\" alt=\"image\"\/><br \/>  <a name=\"habracut\"><\/a>  <\/p>\n<h5>\u041f\u043e\u043d\u0438\u043c\u0430\u043d\u0438\u0435 \u0441\u0435\u0440\u0432\u0438\u0441\u0430 \u043c\u0430\u0440\u0448\u0440\u0443\u0442\u0438\u0437\u0430\u0446\u0438\u0438<\/h5>\n<p>  WCF 4.0 \u043f\u0440\u0438\u0448\u0435\u043b \u0441 \u043d\u043e\u0432\u044b\u043c \u043a\u043b\u0430\u0441\u0441\u043e\u043c \u043f\u043e\u0434 \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u0435\u043c RoutingService, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043e\u0431\u0435\u0441\u043f\u0435\u0447\u0438\u0432\u0430\u0435\u0442 \u043e\u0431\u0449\u0438\u0439 WCF \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u043c\u0430\u0440\u0448\u0440\u0443\u0442\u0438\u0437\u0430\u0446\u0438\u0438. RoutingService \u043a\u043b\u0430\u0441\u0441 \u043c\u043e\u0436\u0435\u0442 \u043e\u0431\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0442\u044c \u043c\u0430\u0440\u0448\u0440\u0443\u0442\u0438\u0437\u0430\u0446\u0438\u0438 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0439 \u043f\u043e \u043b\u044e\u0431\u043e\u043c\u0443 WCF, \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u043c\u043e\u0439 \u043f\u0440\u043e\u0442\u043e\u043a\u043e\u043b\u043e\u043c, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044f \u0440\u0430\u0437\u043b\u0438\u0447\u043d\u044b\u0435 \u0448\u0430\u0431\u043b\u043e\u043d\u044b \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u044f\u043c\u0438, \u043a\u0430\u043a \u0432 \u043e\u0434\u043d\u0443 \u0441\u0442\u043e\u0440\u043e\u043d\u0443, \u0437\u0430\u043f\u0440\u043e\u0441-\u043e\u0442\u0432\u0435\u0442, \u0438 \u0434\u0443\u043f\u043b\u0435\u043a\u0441\u043d\u044b\u0439 \u043e\u0431\u043c\u0435\u043d \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u044f\u043c\u0438. \u042d\u0442\u043e\u0442 \u043a\u043b\u0430\u0441\u0441 \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u043f\u043e\u0434 System.ServiceModel.Routing \u0438\u043c\u0435\u043d, \u0438 \u0432\u044b \u0434\u043e\u043b\u0436\u043d\u044b \u0431\u0443\u0434\u0435\u0442\u0435 \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0442\u044c \u0441\u0441\u044b\u043b\u043a\u0443 \u043d\u0430 System.ServiceModel.Routing.dll \u0441\u043e\u0431\u0440\u0430\u043d\u0438\u0439 \u0432 \u0432\u0430\u0448 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u043f\u0440\u0438\u043c\u0435\u043d\u0435\u043d\u0438\u044f.<\/p>\n<p>  \u041d\u0438\u0436\u0435 \u043f\u0440\u0438\u0432\u043e\u0434\u0438\u0442\u0441\u044f \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u0435 RoutingService \u043a\u043b\u0430\u0441\u0441\u0430 (\u043e\u0442 MSDN )  <\/p>\n<pre><code class=\"cs\">[AspNetCompatibilityRequirementsAttribute (RequirementsMode =                                                 AspNetCompatibilityRequirementsMode.Allowed)]  [ServiceBehaviorAttribute (AddressFilterMode = AddressFilterMode.Any, InstanceContextMode                          = InstanceContextMode.PerSession, UseSynchronizationContext = \u043b\u043e\u0436\u044c ,                                                              ValidateMustUnderstand = \u043b\u043e\u0436\u044c )]  \u043e\u0431\u0449\u0435\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u0433\u043e  \u0437\u0430\u043f\u0435\u0447\u0430\u0442\u0430\u043d\u044b  \u043a\u043b\u0430\u0441\u0441 RoutingService: ISimplexDatagramRouter, ISimplexSessionRouter,                                        IRequestReplyRouter, IDuplexSessionRouter, IDisposable  {. ..} <\/code><\/pre>\n<p>  \u0418\u0437 \u0432\u044b\u0448\u0435\u0441\u043a\u0430\u0437\u0430\u043d\u043d\u043e\u0433\u043e \u0432\u0438\u0434\u043d\u043e, \u0447\u0442\u043e RoutingService \u043a\u043b\u0430\u0441\u0441 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0435\u0442\u0441\u044f \u043a\u0430\u043a \u0437\u0430\u043f\u0435\u0447\u0430\u0442\u0430\u043d\u043d\u043e\u043c \u043a\u043b\u0430\u0441\u0441\u0430 \u0438 \u0440\u0435\u0430\u043b\u0438\u0437\u0443\u0435\u0442 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u043a\u043e\u043d\u0442\u0440\u0430\u043a\u0442\u043e\u0432 \u043d\u0430 \u043e\u0431\u0441\u043b\u0443\u0436\u0438\u0432\u0430\u043d\u0438\u0435, \u0441 \u0442\u0435\u043c \u0447\u0442\u043e\u0431\u044b \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0448\u0430\u0431\u043b\u043e\u043d\u043e\u0432 \u043e\u0431\u043c\u0435\u043d\u0430 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u044f\u043c\u0438 ( MEP ). \u041a\u0430\u0436\u0434\u044b\u0439 \u0441\u0435\u0440\u0432\u0438\u0441\u043d\u044b\u0439 \u043a\u043e\u043d\u0442\u0440\u0430\u043a\u0442 \u043e\u0431\u0435\u0441\u043f\u0435\u0447\u0438\u0432\u0430\u0435\u0442 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0443 \u0434\u0440\u0443\u0433\u043e\u0439 \u043e\u0431\u043c\u0435\u043d\u0430 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u044f\u043c\u0438 \u0440\u0438\u0441\u0443\u043d\u043a\u043e\u043c ( \u041c\u041e\u041e\u0421 ). \u041f\u043e\u0436\u0430\u043b\u0443\u0439\u0441\u0442\u0430, \u043f\u0440\u043e\u0445\u043e\u0434\u0438\u043c \u0442\u0430\u0431\u043b\u0438\u0446\u0443 \u0432\u043d\u0438\u0437\u0443 \u041f\u043e\u0434\u0440\u043e\u0431\u043d\u0435\u0435 (\u043e\u0442 MSDN ) \u2014 IDuplexSessionRouter \u2014 \u041e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0435\u0442 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441, \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u044b\u0439 \u0434\u043b\u044f \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0439 \u043e\u0442 \u0434\u0443\u043f\u043b\u0435\u043a\u0441\u043d\u044b\u0445 \u0441\u0435\u0441\u0441\u0438\u0438 \u043a\u0430\u043d\u0430\u043b\u043e\u0432.<br \/>  IRequestReplyRouter \u2014 \u041e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0435\u0442 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441, \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u044b\u0439 \u0434\u043b\u044f \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0439 \u043e\u0442 \u0437\u0430\u043f\u0440\u043e\u0441-\u043e\u0442\u0432\u0435\u0442 \u043a\u0430\u043d\u0430\u043b\u043e\u0432.<br \/>  ISimplexDatagramRouter \u2014 \u041e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0435\u0442 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441, \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u044b\u0439 \u0434\u043b\u044f \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0439 \u043e\u0442 \u043f\u0440\u043e\u0441\u0442\u043e\u0433\u043e \u0434\u0435\u0439\u0442\u0430\u0433\u0440\u0430\u043c\u043c\u044b.<br \/>  ISimplexSessionRouter \u2014 \u041e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0435\u0442 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441, \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u044b\u0439 \u0434\u043b\u044f \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0439 \u043e\u0442 \u0441\u0438\u043c\u043f\u043b\u0435\u043a\u0441\u043d\u044b\u0445 \u0441\u0435\u0441\u0441\u0438\u0438 \u043a\u0430\u043d\u0430\u043b\u043e\u0432.<\/p>\n<p>  \u041e\u0431\u0440\u0430\u0442\u0438\u0442\u0435 \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u0435, \u0447\u0442\u043e ISimplexDatagramRouter \u0438 IRequestReplyRouter \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u044b \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u044e\u0442 \u043e\u0431\u0449\u0438\u0435 \u043e\u0434\u043d\u043e\u0441\u0442\u043e\u0440\u043e\u043d\u043d\u0438\u0435 \u0438 \u043a\u043e\u043d\u0442\u0440\u0430\u043a\u0442\u043d\u043e\u0439 \u0441\u043b\u0443\u0436\u0431\u044b \u0437\u0430\u043f\u0440\u043e\u0441-\u043e\u0442\u0432\u0435\u0442 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u0439, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043c\u043e\u0436\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0432 \u0441\u043e\u0447\u0435\u0442\u0430\u043d\u0438\u0438 \u0441 \u043a\u043e\u043d\u0442\u0440\u0430\u043a\u0442\u043e\u0432 \u043d\u0430 \u043e\u0431\u0441\u043b\u0443\u0436\u0438\u0432\u0430\u043d\u0438\u0435 \u0431\u0438\u0437\u043d\u0435\u0441-\u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u044b\u0435, \u0430 \u0434\u0432\u0430 \u0434\u0440\u0443\u0433\u0438\u0445, ISimplexSessionRouter &#038; IDuplexSessionRouter, \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u044b \u0441\u0435\u0440\u0432\u0438\u0441\u043d\u044b\u0435 \u043a\u043e\u043d\u0442\u0440\u0430\u043a\u0442\u044b \u0441\u0435\u0441\u0441\u0438\u044f \u0442\u0440\u0435\u0431\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u044b\u043c. ISimplexSessionRouter \u0432 \u043e\u0441\u043d\u043e\u0432\u043d\u043e\u043c \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u044f \u043f\u043e\u0436\u0430\u0440\u043e-\u0438-\u0437\u0430\u0431\u044b\u043b, \u0447\u0442\u043e \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442 \u0432 \u0440\u0430\u043c\u043a\u0430\u0445 \u0441\u0435\u0441\u0441\u0438\u0438 \u0432 \u0442\u043e \u0432\u0440\u0435\u043c\u044f \u043a\u0430\u043a IDuplexSessionRouter \u0432 \u043e\u0441\u043d\u043e\u0432\u043d\u043e\u043c \u0434\u0443\u043f\u043b\u0435\u043a\u0441 \u0441\u0435\u0441\u0441\u0438\u044f \u0438\u0437\u0432\u0435\u0441\u0442\u043d\u043e \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u044f, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0434\u043e\u043b\u0436\u043d\u0430 \u043f\u0435\u0440\u0435\u0437\u0432\u043e\u043d\u0438\u0442\u044c \u0432 \u043a\u043b\u0438\u0435\u043d\u0442\u0441\u043a\u043e\u0435 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u0432 \u0441\u0444\u0435\u0440\u0443 \u0441\u0435\u0441\u0441\u0438\u0438. \u041f\u0440\u043e\u0441\u044c\u0431\u0430 \u043e\u0437\u043d\u0430\u043a\u043e\u043c\u0438\u0442\u044c\u0441\u044f \u0441 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u044f\u043c\u0438 \u044d\u0442\u0438\u0445 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u043e\u0432 \u0432\u043d\u0438\u0437\u0443-<\/p>\n<pre><code class=\"cs\">[ServiceContract (\u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0441\u0442\u0432\u043e \u0438\u043c\u0435\u043d = &quot; http:\/\/schemas.microsoft.com\/netfx\/2009\/05\/routing &quot; ,              SessionMode = SessionMode.Allowed)] \u043e\u0431\u0449\u0435\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u0433\u043e \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441 ISimplexDatagramRouter  {     [OperationContract (AsyncPattern = \u0432\u0435\u0440\u043d\u043e , IsOneWay = \u0432\u0435\u0440\u043d\u043e , Action = &quot; * &quot; )]     IAsyncResult BeginProcessMessage (\u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0435 \u0421\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0435, AsyncCallback \u043e\u0431\u0440\u0430\u0442\u043d\u043e\u0433\u043e \u0432\u044b\u0437\u043e\u0432\u0430, \u043e\u0431\u044a\u0435\u043a\u0442 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u044f); \u043d\u0435\u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u043c\u0438 EndProcessMessage (IAsyncResult \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442);  }  [ServiceContract (\u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0441\u0442\u0432\u043e \u0438\u043c\u0435\u043d = &quot; http:\/\/schemas.microsoft.com\/netfx\/2009\/05\/routing &quot; ,              SessionMode = SessionMode.Allowed)] \u043e\u0431\u0449\u0435\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u0433\u043e \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441 IRequestReplyRouter  {     [OperationContract (AsyncPattern = \u0432\u0435\u0440\u043d\u043e , IsOneWay = \u043b\u043e\u0436\u044c , Action = &quot; * &quot; , ReplyAction = &quot; * &quot; )]     [GenericTransactionFlow (TransactionFlowOption.Allowed)]     IAsyncResult BeginProcessRequest (\u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0435 \u0421\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0435, AsyncCallback \u043e\u0431\u0440\u0430\u0442\u043d\u043e\u0433\u043e \u0432\u044b\u0437\u043e\u0432\u0430, \u043e\u0431\u044a\u0435\u043a\u0442 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u044f);     \u0421\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0435 EndProcessRequest (IAsyncResult \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442);  }  [ServiceContractAttribute (\u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0441\u0442\u0432\u043e \u0438\u043c\u0435\u043d = &quot; http:\/\/schemas.microsoft.com\/netfx\/2009\/05\/routing &quot; ,              SessionMode = SessionMode.Required)] \u043e\u0431\u0449\u0435\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u0433\u043e \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441 ISimplexSessionRouter  {     [OperationContractAttribute (AsyncPattern = \u0432\u0435\u0440\u043d\u043e , IsOneWay = \u0432\u0435\u0440\u043d\u043e , Action = &quot; * &quot; )]     IAsyncResult BeginProcessMessage (\u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0435 \u0421\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0435, AsyncCallback \u043e\u0431\u0440\u0430\u0442\u043d\u043e\u0433\u043e \u0432\u044b\u0437\u043e\u0432\u0430, Object \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435); \u043d\u0435\u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u043c\u0438 EndProcessMessage (IAsyncResult \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442);  } \u043e\u0431\u0449\u0435\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u0433\u043e \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441 IDuplexSessionRouter  {     [OperationContractAttribute (AsyncPattern = \u0432\u0435\u0440\u043d\u043e , IsOneWay = \u0432\u0435\u0440\u043d\u043e , Action = &quot; * &quot; )]     IAsyncResult BeginProcessMessage (\u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0435 \u0421\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0435, AsyncCallback \u043e\u0431\u0440\u0430\u0442\u043d\u043e\u0433\u043e \u0432\u044b\u0437\u043e\u0432\u0430, Object \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435); \u043d\u0435\u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u043c\u0438 EndProcessMessage (IAsyncResult \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 ;)  } <\/code><\/pre>\n<p>  \u041e\u0441\u043d\u043e\u0432\u043d\u043e\u0439 \u0446\u0435\u043b\u044c\u044e RoutingService \u043a\u043b\u0430\u0441\u0441\u0430 \u0434\u043b\u044f \u043f\u0440\u0438\u0435\u043c\u0430 \u0432\u0445\u043e\u0434\u044f\u0449\u0438\u0445 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0439 \u043e\u0442 \u043a\u043b\u0438\u0435\u043d\u0442\u0441\u043a\u0438\u0445 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0439 \u0447\u0435\u0440\u0435\u0437 \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u044b\u0439 \u043a\u043e\u043d\u0435\u0447\u043d\u043e\u0439 \u0442\u043e\u0447\u043a\u0438 (\u043e\u0432) \u0438 &quot; \u043c\u0430\u0440\u0448\u0440\u0443\u0442 \u00ab\u0438\u0445 \u043a \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0435\u0439 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0439 \u044d\u043a\u0441\u043f\u043b\u0443\u0430\u0442\u0430\u0446\u0438\u0438 \u043f\u0443\u0442\u0435\u043c \u043e\u0446\u0435\u043d\u043a\u0438 \u043a\u0430\u0436\u0434\u043e\u0435 \u0432\u0445\u043e\u0434\u044f\u0449\u0435\u0435 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0435 \u043e\u0442 \u043d\u0430\u0431\u043e\u0440\u0430 \u0444\u0438\u043b\u044c\u0442\u0440\u043e\u0432 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0439. \u0422\u0430\u043a\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c, \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043f\u043e\u0432\u0435\u0434\u0435\u043d\u0438\u0435 \u043c\u0430\u0440\u0448\u0440\u0443\u0442\u0438\u0437\u0430\u0446\u0438\u0438, \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u044f \u0444\u0438\u043b\u044c\u0442\u0440\u044b \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0439, \u043a\u0430\u043a \u043f\u0440\u0430\u0432\u0438\u043b\u043e, \u0432 \u0444\u0430\u0439\u043b\u0435 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438.<\/p>\n<h5>\u0425\u043e\u0441\u0442\u0438\u043d\u0433 \u043c\u0430\u0440\u0448\u0440\u0443\u0442\u0438\u0437\u0430\u0446\u0438\u0438 \u0441\u043b\u0443\u0436\u0431\u044b<\/h5>\n<p>  \u0412\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0440\u0430\u0437\u043c\u0435\u0441\u0442\u0438\u0442\u044c \u043d\u0430 RoutingService \u043a\u0430\u043a \u0438 \u0434\u0440\u0443\u0433\u0438\u0435 WCF \u0443\u0441\u043b\u0443\u0433 \u0441 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435\u043c \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u0433\u043e \u0445\u043e\u0441\u0442\u0438\u043d\u0433\u0430 \u0438\u043b\u0438 \u0443\u043f\u0440\u0430\u0432\u043b\u044f\u0435\u043c\u043e\u0433\u043e \u0445\u043e\u0441\u0442\u0438\u043d\u0433\u0430 \u043c\u0435\u0442\u043e\u0434\u044b. \u041d\u0438\u0436\u0435 \u043f\u0440\u0438\u0432\u0435\u0434\u0435\u043d \u0442\u0438\u043f\u0438\u0447\u043d\u044b\u0439 \u043f\u0440\u0438\u043c\u0435\u0440 \u0441\u0430\u043c\u043e\u0441\u0442\u043e\u044f\u0442\u0435\u043b\u044c\u043d\u043e\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0442\u0435\u0445\u043d\u0438\u043a\u0438 \u0434\u043b\u044f \u043f\u0440\u043e\u0432\u0435\u0434\u0435\u043d\u0438\u044f RoutingService \u043f\u043e\u043c\u043e\u0449\u044c\u044e ServiceHost \u043a\u043b\u0430\u0441\u0441.<br \/>  \u041a\u0430\u043a \u0438 \u0434\u0440\u0443\u0433\u0438\u0435 WCF \u0443\u0441\u043b\u0443\u0433 \u0432\u044b \u0442\u0430\u043a\u0436\u0435 \u043c\u043e\u0436\u0435\u0442\u0435 \u043d\u0430\u0441\u0442\u0440\u043e\u0438\u0442\u044c RoutingService \u0447\u0435\u0440\u0435\u0437 \u0444\u0430\u0439\u043b \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438, \u0433\u0434\u0435 \u0432\u044b \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0435\u0442\u0435 RoutingService \u043a\u043e\u043d\u0435\u0447\u043d\u0443\u044e \u0442\u043e\u0447\u043a\u0443 (\u044b), RoutingService \u041f\u043e\u0432\u0435\u0434\u0435\u043d\u0438\u0435, \u0444\u0438\u043b\u044c\u0442\u0440\u044b \u043c\u0430\u0440\u0448\u0440\u0443\u0442\u0438\u0437\u0430\u0446\u0438\u0438 \u0438 \u0444\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0445 \u0443\u0441\u043b\u0443\u0433 \u043a\u043e\u043d\u0435\u0447\u043d\u0443\u044e \u0442\u043e\u0447\u043a\u0443 (\u044b), \u0433\u0434\u0435, \u043d\u0430\u043a\u043e\u043d\u0435\u0446, \u0432\u0445\u043e\u0434\u044f\u0449\u0438\u0435 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u044f \u0431\u0443\u0434\u0443\u0442 \u0440\u0430\u0437\u0433\u0440\u043e\u043c\u043b\u0435\u043d\u044b. \u0414\u0430\u0432\u0430\u0439\u0442\u0435 \u043f\u043e\u043f\u0440\u043e\u0431\u0443\u0435\u043c \u043f\u043e\u043d\u044f\u0442\u044c, \u044d\u0442\u0438 \u043f\u043e\u043d\u044f\u0442\u0438\u044f \u0432 \u0431\u043b\u0438\u0436\u0430\u0439\u0448\u0438\u0435 \u0440\u0430\u0437\u0434\u0435\u043b\u0430\u0445.<\/p>\n<h5>\u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430 \u043c\u0430\u0440\u0448\u0440\u0443\u0442\u0438\u0437\u0430\u0446\u0438\u0438 \u043a\u043e\u043d\u0435\u0447\u043d\u043e\u0439 \u0442\u043e\u0447\u043a\u0438 \u0441\u043b\u0443\u0436\u0431\u044b <\/h5>\n<p>  \u0412\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u043d\u0430\u0441\u0442\u0440\u043e\u0438\u0442\u044c \u043e\u0434\u0438\u043d \u0438\u043b\u0438 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e RoutingService \u043a\u043e\u043d\u0435\u0447\u043d\u0443\u044e \u0442\u043e\u0447\u043a\u0443 (\u044b), \u0432\u044b\u0431\u0438\u0440\u0430\u044f WCF \u043f\u0440\u0438\u0432\u044f\u0437\u043a\u0438 \u0438 \u043e\u0434\u0438\u043d \u0438\u0437 RoutingService \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u0441\u0435\u0440\u0432\u0438\u0441\u043d\u044b\u0445 \u043a\u043e\u043d\u0442\u0440\u0430\u043a\u0442\u043e\u0432, \u0440\u0435\u0430\u043b\u0438\u0437\u0443\u0435\u043c\u044b\u0435 RoutingService \u043a\u043b\u0430\u0441\u0441\u0430, \u043a\u0430\u043a \u043e\u043f\u0438\u0441\u0430\u043d\u043e \u0432\u044b\u0448\u0435 ( IRequestReplyRouter, ISimplexDatagramRouter, ISimplexSessionRouter, IDuplexSessionRouter ).<\/p>\n<p>  \u041d\u0438\u0436\u0435 \u043f\u0440\u0438\u0432\u0435\u0434\u0435\u043d \u043f\u0440\u0438\u043c\u0435\u0440 RoutingService \u0441 \u0434\u0432\u0443\u043c\u044f \u043a\u043e\u043d\u0435\u0447\u043d\u044b\u043c\u0438 \u0442\u043e\u0447\u043a\u0430\u043c\u0438 \u043c\u0430\u0440\u0448\u0440\u0443\u0442\u0438\u0437\u0430\u0446\u0438\u0438.<\/p>\n<pre><code class=\"xml\">&lt;services&gt;    &lt;service name=&quot;System.ServiceModel.Routing.RoutingService&quot;&gt;&lt;!--Routing Service --&gt;       &lt;endpoint address=&quot;&quot; binding=&quot;basicHttpBinding&quot;                         contract=&quot;System.ServiceModel.Routing.IRequestReplyRouter&quot; name=&quot;MessageBroker&quot; \/&gt; &lt;!--MessageBroker--&gt;       &lt;endpoint address=&quot;regular&quot; binding=&quot;basicHttpBinding&quot;                         contract=&quot;System.ServiceModel.Routing.IRequestReplyRouter&quot; name=&quot;Regular&quot; \/&gt; &lt;!--Regular--&gt;       &lt;host&gt;          &lt;baseAddresses&gt;             &lt;add baseAddress=&quot;http:\/\/localhost:8080\/RoutingService\/Router&quot; \/&gt;          &lt;\/baseAddresses&gt;       &lt;\/host&gt;    &lt;\/service&gt; &lt;\/services&gt; <\/code><\/pre>\n<p>  \u0412\u044b\u0448\u0435, \u0432 \u043f\u0435\u0440\u0432\u0443\u044e \u043a\u043e\u043d\u0435\u0447\u043d\u0430\u044f \u0442\u043e\u0447\u043a\u0430 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442 BasicHttpBinding \u0441 IRequestReplyRouter \u043a\u043e\u043d\u0442\u0440\u0430\u043a\u0442\u0430 \u043d\u0430 \u043e\u043a\u0430\u0437\u0430\u043d\u0438\u0435 \u0443\u0441\u043b\u0443\u0433 (\u0437\u0430\u043f\u0440\u043e\u0441-\u043e\u0442\u0432\u0435\u0442) \u0438 \u0432\u0442\u043e\u0440\u043e\u0439 \u043a\u043e\u043d\u0435\u0447\u043d\u0430\u044f \u0442\u043e\u0447\u043a\u0430 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442 WSHttpBinding \u0441 ISimplexDatagramRouter \u043a\u043e\u043d\u0442\u0440\u0430\u043a\u0442\u0430 \u043d\u0430 \u043e\u043a\u0430\u0437\u0430\u043d\u0438\u0435 \u0443\u0441\u043b\u0443\u0433 (\u0432 \u043e\u0434\u043d\u0443 \u0441\u0442\u043e\u0440\u043e\u043d\u0443). \u041a\u043e\u043d\u0435\u0447\u043d\u044b\u0435 \u0442\u043e\u0447\u043a\u0438 \u043d\u0430\u0441\u0442\u0440\u043e\u0435\u043d\u043d\u044b\u0435 \u0432\u044b\u0448\u0435, \u0432 \u043e\u0441\u043d\u043e\u0432\u043d\u043e\u043c \u043c\u0430\u0440\u0448\u0440\u0443\u0442\u0438\u0437\u0430\u0446\u0438\u0438 \u043a\u043e\u043d\u0435\u0447\u043d\u044b\u0435 \u0442\u043e\u0447\u043a\u0438 (\u0432\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u044b\u0435 \u043a\u043e\u043d\u0435\u0447\u043d\u044b\u0435 \u0442\u043e\u0447\u043a\u0438 \u0438\u043b\u0438 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0435 \u0431\u0440\u043e\u043a\u0435\u0440\u044b), \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0431\u0443\u0434\u0443\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u044b \u043d\u0430 \u043a\u043b\u0438\u0435\u043d\u0442\u0441\u043a\u0438\u0445 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0439. \u041a\u043b\u0438\u0435\u043d\u0442\u0441\u043a\u0438\u0435 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u043c\u043e\u0433\u0443\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043e\u0434\u0438\u043d \u0438\u0437 \u044d\u0442\u0438\u0445 \u043a\u043e\u043d\u0435\u0447\u043d\u044b\u0445 \u0442\u043e\u0447\u0435\u043a \u0434\u043b\u044f \u0432\u044b\u0437\u043e\u0432\u0430 \u0444\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0435 \u0443\u0441\u043b\u0443\u0433\u0438, \u0438 \u043a\u0430\u0436\u0434\u044b\u0439 \u0432\u044b\u0437\u043e\u0432 \u0441\u043b\u0443\u0436\u0431\u044b \u0431\u0443\u0434\u0443\u0442 \u043d\u0430\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u044b \u043d\u0435\u043f\u043e\u0441\u0440\u0435\u0434\u0441\u0442\u0432\u0435\u043d\u043d\u043e \u043d\u0430 RoutingService. \u041a\u043e\u0433\u0434\u0430 RoutingService \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u0442 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0435 \u0447\u0435\u0440\u0435\u0437 \u043e\u0434\u0438\u043d \u0438\u0437 \u044d\u0442\u0438\u0445 \u043a\u043e\u043d\u0435\u0447\u043d\u044b\u0445 \u0442\u043e\u0447\u0435\u043a \u043c\u0430\u0440\u0448\u0440\u0443\u0442\u0438\u0437\u0430\u0446\u0438\u0438, \u043e\u043d \u043e\u0446\u0435\u043d\u0438\u0432\u0430\u0435\u0442 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0435 \u043e\u0442 \u043d\u0430\u0431\u043e\u0440\u0430 \u0444\u0438\u043b\u044c\u0442\u0440\u043e\u0432 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0439, \u0447\u0442\u043e\u0431\u044b \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0438\u0442\u044c, \u0433\u0434\u0435 \u043f\u0435\u0440\u0435\u0441\u043b\u0430\u0442\u044c \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0435.<\/p>\n<p>  \u041d\u0438\u0436\u0435 \u043f\u0440\u0438\u0432\u0435\u0434\u0435\u043d \u043f\u0440\u0438\u043c\u0435\u0440 \u0438\u0437 \u043a\u043e\u043d\u0435\u0447\u043d\u044b\u0445 \u0442\u043e\u0447\u0435\u043a \u043a\u043b\u0438\u0435\u043d\u0442\u0441\u043a\u043e\u0433\u043e \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u043d\u0430 \u043e\u0441\u043d\u043e\u0432\u0435 \u0432\u044b\u0448\u0435 RoutingService \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438-<\/p>\n<pre><code class=\"xml\">&lt;client&gt;&lt;!--Client Side Endpoints for Routing Service --&gt;    &lt;endpoint address=&quot;http:\/\/localhost:8080\/RoutingService\/Router&quot; binding=&quot;basicHttpBinding&quot;                   contract=&quot;IComplexNumber&quot; name=&quot;BasicHttpBinding_IComplexNumber&quot; \/&gt;    &lt;endpoint address=&quot;http:\/\/localhost:8080\/RoutingService\/Router\/regular&quot; binding=&quot;basicHttpBinding&quot;                   contract=&quot;IRealNumber&quot; name=&quot;BasicHttpBinding_IRealNumber&quot; \/&gt; &lt;\/client&gt; <\/code><\/pre>\n<h5>\u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430 \u043c\u0430\u0440\u0448\u0440\u0443\u0442\u0438\u0437\u0430\u0446\u0438\u0438 \u0441\u043b\u0443\u0436\u0431\u0430 \u0444\u0438\u043b\u044c\u0442\u0440 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0439<\/h5>\n<p>  \u0412\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u043d\u0430\u0441\u0442\u0440\u043e\u0438\u0442\u044c RoutingService \u0441 \u0444\u0438\u043b\u044c\u0442\u0440\u043e\u0432 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0439 \u0434\u043b\u044f \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u043c\u0430\u0440\u0448\u0440\u0443\u0442\u0438\u0437\u0430\u0446\u0438\u0435\u0439 \u0444\u0438\u043b\u044c\u0442\u0440\u044b \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0439. WCF 4.0 \u043f\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0441 RoutingBehavior \u0434\u043b\u044f \u0442\u043e\u0433\u043e \u0436\u0435. \u0422\u0430\u043a \u0447\u0442\u043e \u0434\u043b\u044f \u0442\u043e\u0433\u043e, \u0447\u0442\u043e\u0431\u044b \u043d\u0430\u0441\u0442\u0440\u043e\u0438\u0442\u044c RoutingService \u0441 \u0444\u0438\u043b\u044c\u0442\u0440\u043e\u0432 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0439, \u0412\u044b \u0434\u043e\u043b\u0436\u043d\u044b \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0438\u0442\u044c \u0438\u043c\u0435\u043d\u043e\u0432\u0430\u043d\u043d\u044b\u0439 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044e \u043f\u043e\u0432\u0435\u0434\u0435\u043d\u0438\u044f (\u0441\u043a\u0430\u0436\u0435\u043c \u00bb routingFilters &quot;), \u0432\u043a\u043b\u044e\u0447\u0438\u0432 RoutingBehavior \u0437\u0430\u0442\u0435\u043c, \u0443\u043a\u0430\u0437\u0430\u0432 \u0438\u043c\u044f \u0442\u0430\u0431\u043b\u0438\u0446\u044b \u0444\u0438\u043b\u044c\u0442\u0440\u0430. \u041f\u043e\u0441\u043b\u0435 \u044d\u0442\u043e\u0433\u043e \u0432\u0430\u043c \u043d\u0443\u0436\u043d\u043e \u043f\u0440\u0438\u043c\u0435\u043d\u0438\u0442\u044c &quot; routingFilters \u043f\u043e\u0432\u0435\u0434\u0435\u043d\u0438\u0435 \u00ab\u0432 RoutingService \u0447\u0435\u0440\u0435\u0437 behaviorConfiguration \u0430\u0442\u0440\u0438\u0431\u0443\u0442\u0430. \u0421\u043c. \u043f\u0440\u0438\u043c\u0435\u0440 \u043d\u0438\u0436\u0435<\/p>\n<pre><code class=\"xml\">&lt;behaviors&gt;    &lt;serviceBehaviors&gt;       &lt;behavior name=&quot;routingFilters&quot;&gt;          &lt;routing filterTableName=&quot;RoutingTable&quot; \/&gt;       &lt;\/behavior&gt;    &lt;\/serviceBehaviors&gt; &lt;\/behaviors&gt; &lt;services&gt;    &lt;service name=&quot;System.ServiceModel.Routing.RoutingService&quot; behaviorConfiguration=&quot;routingFilters&quot;&gt;         ...    &lt;\/service&gt; &lt;\/services&gt; <\/code><\/pre>\n<h5>\u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430 \u043c\u0430\u0440\u0448\u0440\u0443\u0442\u0438\u0437\u0430\u0446\u0438\u0438 \u0441\u043b\u0443\u0436\u0431\u0430 \u043e\u0431\u0441\u043b\u0443\u0436\u0438\u0432\u0430\u043d\u0438\u044f \u0446\u0435\u043b\u0438<\/h5>\n<p>  \u0412\u0430\u043c \u043f\u043e\u043d\u0430\u0434\u043e\u0431\u0438\u0442\u0441\u044f \u043a\u043e\u043d\u0435\u0447\u043d\u044b\u0445 \u0442\u043e\u0447\u0435\u043a \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u044f \u0434\u043b\u044f \u0446\u0435\u043b\u0438 \u0444\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0435 \u0443\u0441\u043b\u0443\u0433\u0438 \u043d\u0430\u043c\u0435\u0440\u0435\u043d\u044b \u043f\u0443\u0442\u0438 \u043a. \u0412\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0438\u0442\u044c \u044d\u0442\u0438 \u0446\u0435\u043b\u0435\u0432\u044b\u0435 \u043a\u043e\u043d\u0435\u0447\u043d\u044b\u0435 \u0442\u043e\u0447\u043a\u0438 \u0432 WCF  \u0440\u0430\u0437\u0434\u0435\u043b\u0435 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438 \u043a\u0430\u043a \u043d\u0438\u0436\u0435-  <\/p>\n<pre><code class=\"xml\">&lt;client&gt;    &lt;endpoint address=&quot;http:\/\/localhost:8081\/ComplexNumberService&quot; binding=&quot;basicHttpBinding&quot;                   contract=&quot;*&quot; name=&quot;ComplexNumber&quot; \/&gt;    &lt;endpoint address=&quot;http:\/\/localhost:8082\/RealNumberService&quot; binding=&quot;basicHttpBinding&quot;                   contract=&quot;*&quot; name=&quot;RealNumber&quot; \/&gt; &lt;\/client&gt; <\/code><\/pre>\n<p>  \u00bb*&quot; \u0441\u0438\u043c\u0432\u043e\u043b\u043e\u0432 \u0432 \u0430\u0442\u0440\u0438\u0431\u0443\u0442\u0435 \u043a\u043e\u043d\u0442\u0440\u0430\u043a\u0442\u0430 \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0441\u043b\u0443\u0436\u0431\u0435 \u043f\u0440\u0438\u043d\u0438\u043c\u0430\u0442\u044c \u043b\u044e\u0431\u044b\u0435 \u0432\u0445\u043e\u0434\u044f\u0449\u0438\u0435 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u044f, \u0430 \u043d\u0435 \u0442\u043e\u043b\u044c\u043a\u043e \u0442\u0435, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043f\u0440\u0435\u0434\u0443\u0441\u043c\u043e\u0442\u0440\u0435\u043d\u044b \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u044b\u043c \u0434\u043e\u0433\u043e\u0432\u043e\u0440\u043e\u043c \u0443\u0441\u043b\u0443\u0433.<\/p>\n<h5>\u041e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u0435 \u043c\u0430\u0440\u0448\u0440\u0443\u0442\u0438\u0437\u0430\u0446\u0438\u0438 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f \u0424\u0438\u043b\u044c\u0442\u0440 \u0422\u0430\u0431\u043b\u0438\u0446\u0430<\/h5>\n<p>  \u0424\u0438\u043b\u044c\u0442\u0440 \u0422\u0430\u0431\u043b\u0438\u0446\u0430 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0435\u0442 \u043b\u043e\u0433\u0438\u043a\u0443 \u043c\u0430\u0440\u0448\u0440\u0443\u0442\u0438\u0437\u0430\u0446\u0438\u0438 \u0432\u043e \u0432\u0440\u0435\u043c\u044f \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f. \u0412\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0438\u0442\u044c \u0437\u0430\u043f\u0438\u0441\u0438 \u0442\u0430\u0431\u043b\u0438\u0446\u044b \u0444\u0438\u043b\u044c\u0442\u0440 \u0432\u044d\u043b\u0435\u043c\u0435\u043d\u0442. \u041a\u0430\u0436\u0434\u0430\u044f \u0437\u0430\u043f\u0438\u0441\u044c \u0432\u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0435\u0442 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0438\u0435 \u043c\u0435\u0436\u0434\u0443 \u043c\u0430\u0440\u0448\u0440\u0443\u0442\u0438\u0437\u0430\u0446\u0438\u0438 &quot; \u0444\u0438\u043b\u044c\u0442\u0440 \u00ab\u0438 \u0446\u0435\u043b\u0435\u0432\u043e\u0439 \u043a\u043e\u043d\u0435\u0447\u043d\u043e\u0439 \u0442\u043e\u0447\u043a\u0438. \u0412\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0438\u0442\u044c \u00ab \u0444\u0438\u043b\u044c\u0442\u0440\u044b \u00bb\u0432\u044d\u043b\u0435\u043c\u0435\u043d\u0442. \u041a\u0430\u0436\u0434\u044b\u0439\u0437\u0430\u043f\u0438\u0441\u044c \u0437\u0430\u0434\u0430\u0435\u0442 \u0442\u0438\u043f \u0444\u0438\u043b\u044c\u0442\u0440\u0430 \u0432\u043c\u0435\u0441\u0442\u0435 \u0441\u043e \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435\u043c \u0444\u0438\u043b\u044c\u0442\u0440\u0430 \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u044b\u0445 \u0434\u0430\u043d\u043d\u044b\u0445, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f, \u0432 XPath \u0432\u044b\u0440\u0430\u0436\u0435\u043d\u0438\u044f, \u043a\u043e\u043d\u0435\u0447\u043d\u043e\u0439 \u0442\u043e\u0447\u043a\u0438 \u043c\u0430\u0440\u0448\u0440\u0443\u0442\u0438\u0437\u0430\u0446\u0438\u0438 \u0438\u043c\u044f \u0438 \u0442.\u0434.).<\/p>\n<p>  \u041d\u0438\u0436\u0435 \u043f\u0440\u0438\u0432\u0435\u0434\u0435\u043d \u043f\u0440\u0438\u043c\u0435\u0440 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0442\u0430\u0431\u043b\u0438\u0446\u0443 \u0444\u0438\u043b\u044c\u0442\u0440\u0430 \u00bb RoutingData \u00ab\u0441 \u0434\u0432\u0443\u043c\u044f \u0444\u0438\u043b\u044c\u0442\u0440\u0430\u043c\u0438, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u041a\u0430\u0440\u0442 \u0434\u0432\u0435 \u043a\u043e\u043d\u0435\u0447\u043d\u044b\u0435 \u0442\u043e\u0447\u043a\u0438. \u0417\u0434\u0435\u0441\u044c EndpointName \u0431\u044b\u043b \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d \u0442\u0438\u043f \u0444\u0438\u043b\u044c\u0442\u0440\u0430.  <\/p>\n<pre><code class=\"xml\">&lt;routing&gt;    &lt;filters&gt;       &lt;filter name=&quot;ComplexNumberFilter&quot; filterType=&quot;EndpointName&quot; filterData=&quot;MessageBroker&quot; \/&gt;       &lt;filter name=&quot;RealNumberFilter&quot; filterType=&quot;EndpointName&quot; filterData=&quot;Regular&quot; \/&gt;    &lt;\/filters&gt;    &lt;filterTables&gt;       &lt;filterTable name=&quot;RoutingTable&quot;&gt;          &lt;add filterName=&quot;ComplexNumberFilter&quot; endpointName=&quot;ComplexNumber&quot; \/&gt;          &lt;add filterName=&quot;RealNumberFilter&quot; endpointName=&quot;RealNumber&quot; \/&gt;       &lt;\/filterTable&gt;    &lt;\/filterTables&gt; &lt;\/routing&gt; <\/code><\/pre>\n<h5>\u0414\u0435\u043c\u043e \u0441\u043b\u0443\u0436\u0431\u0430<\/h5>\n<p>  \u0422\u0435\u043f\u0435\u0440\u044c, \u043f\u043e\u0441\u043b\u0435 \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u044f RoutingService, \u0434\u0430\u0432\u0430\u0439\u0442\u0435 \u043f\u043e\u043d\u044f\u0442\u044c \u0447\u0435\u0440\u0435\u0437 \u043f\u0440\u0438\u043c\u0435\u0440\u044b. \u042f \u0441\u043e\u0437\u0434\u0430\u043b \u0434\u0435\u043c\u043e \u0441\u0435\u0440\u0432\u0438\u0441- ComplexNumberCalculator \u0434\u043b\u044f \u044d\u0442\u043e\u0439 \u0446\u0435\u043b\u0438. \u042f \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0438\u043b \u043e\u0434\u0438\u043d \u043a\u043e\u043d\u0442\u0440\u0430\u043a\u0442\u0430 \u0434\u0430\u043d\u043d\u044b\u0445 \u043a\u043e\u043c\u043f\u043b\u0435\u043a\u0441\u0430 \u0438 \u043e\u0434\u0438\u043d \u043a\u043e\u043d\u0442\u0440\u0430\u043a\u0442\u0430 \u0441\u043b\u0443\u0436\u0431\u044b IComplexNumberand, \u0430 \u0437\u0430\u0442\u0435\u043c \u0441\u043e\u0437\u0434\u0430\u043b ComplexNumberCalculator \u043e\u0431\u0441\u043b\u0443\u0436\u0438\u0432\u0430\u043d\u0438\u0435 \u043f\u0443\u0442\u0435\u043c \u0432\u043d\u0435\u0434\u0440\u0435\u043d\u0438\u044f IComplexNumberand \u0434\u043e\u0433\u043e\u0432\u043e\u0440 \u043d\u0430 \u043e\u0431\u0441\u043b\u0443\u0436\u0438\u0432\u0430\u043d\u0438\u0435. \u041f\u043e\u0436\u0430\u043b\u0443\u0439\u0441\u0442\u0430, \u043e\u0437\u043d\u0430\u043a\u043e\u043c\u044c\u0442\u0435\u0441\u044c \u0441 \u043d\u0438\u0436\u0435 \u043a\u043e\u0434-  <\/p>\n<pre><code class=\"cs\"> [DataContract]     public class Complex     {         [DataMember]        public  double Real;          [DataMember]         public double Imaginary;     }      [ServiceContract]     public interface IComplexNumber     {         [OperationContract]         Complex Add(Complex x, Complex y);          [OperationContract]         Complex Subtract(Complex x, Complex y);          [OperationContract]         Complex Multiply(Complex x, Complex y);          [OperationContract]         Complex Divide(Complex x, Complex y);          [OperationContract]         double Modulus(Complex x);          [OperationContract]         double Argument(Complex x);          [OperationContract]         Complex Conjugate(Complex x);          [OperationContract]         Complex Recipocal(Complex x);     }      public class ComplexNumberCalculator : IComplexNumber     {         public Complex Add(Complex x, Complex y)         {             Console.WriteLine(&quot;Invoked ComplexNumberCalculator Operation: Add&quot;);              var z = new Complex();              z.Real = x.Real + y.Real;             z.Imaginary = x.Imaginary + y.Imaginary;              return z;         }          public Complex Subtract(Complex x, Complex y)         {             Console.WriteLine(&quot;Invoked ComplexNumberCalculator Operation: Subtract&quot;);              var z = new Complex();              z.Real = x.Real - y.Real;             z.Imaginary = x.Imaginary - y.Imaginary;              return z;         }          public Complex Multiply(Complex x, Complex y)         {             Console.WriteLine(&quot;Invoked ComplexNumberCalculator Operation: Multiply&quot;);              var z = new Complex();              z.Real = x.Real * y.Real - x.Imaginary * y.Imaginary ;             z.Imaginary = x.Real * y.Imaginary + x.Imaginary * y.Real;              return z;         }          public Complex Divide(Complex x, Complex y)         {             Console.WriteLine(&quot;Invoked ComplexNumberCalculator Operation: Divide&quot;);              var z = new Complex();              var modulusY = this.Modulus(y);              z.Real = (x.Real * y.Real + x.Imaginary * y.Imaginary) \/ (modulusY * modulusY);             z.Imaginary = (x.Imaginary * y.Real - x.Real * y.Imaginary) \/ (modulusY * modulusY);              return z;         }          public double Modulus(Complex x)         {             Console.WriteLine(&quot;Invoked ComplexNumberCalculator Operation: Modulus&quot;);              var modX = Math.Sqrt(x.Real * x.Real + x.Imaginary * x.Imaginary);              return modX;         }          public Complex Conjugate(Complex x)         {             Console.WriteLine(&quot;Invoked ComplexNumberCalculator Operation: Conjugate&quot;);              var z = new Complex();              z.Real = x.Real;             z.Imaginary = -1 * x.Imaginary;              return z;         }          public double Argument(Complex x)         {             Console.WriteLine(&quot;Invoked ComplexNumberCalculator Operation: Argument&quot;);              var argumentX = Math.Atan(x.Imaginary\/x.Real);              return argumentX;         }          public Complex Recipocal(Complex x)         {             Console.WriteLine(&quot;Invoked ComplexNumberCalculator Operation: Recipocal&quot;);              var z = new Complex();              var modulusX = this.Modulus(x);             var conjugateX = this.Conjugate(x);              z.Real = conjugateX.Real \/ (modulusX * modulusX);             z.Imaginary = conjugateX.Imaginary \/ (modulusX * modulusX);              return z;         } <\/code><\/pre>\n<h5>\u0421\u043b\u0443\u0436\u0431\u0430 \u043c\u0430\u0440\u0448\u0440\u0443\u0442\u0438\u0437\u0430\u0446\u0438\u0438 \u0441 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435\u043c MatchAll FilterType<\/h5>\n<p>  \u0412 \u044d\u0442\u043e\u043c \u043f\u0440\u0438\u043c\u0435\u0440\u0435 \u044f \u0441\u043e\u0431\u0438\u0440\u0430\u044e\u0441\u044c \u043d\u0430\u0441\u0442\u0440\u043e\u0438\u0442\u044c \u043f\u0440\u043e\u0441\u0442\u043e\u0439 RoutingService, \u0447\u0442\u043e \u0431\u0443\u0434\u0435\u0442 \u043f\u0440\u043e\u0441\u0442\u043e \u043f\u0440\u043e\u0439\u0442\u0438 (\u043c\u0430\u0440\u0448\u0440\u0443\u0442) \u0432\u0441\u0435 \u0432\u0445\u043e\u0434\u044f\u0449\u0438\u0435 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u044f \u0441 \u043d\u0430\u0448\u0435\u0433\u043e ComplexNumberCalculator \u043a\u043b\u0438\u0435\u043d\u0442\u0441\u043a\u043e\u0433\u043e \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u0441\u043b\u0443\u0436\u0431\u044b \u0432 ComplexNumberCalculator \u0441\u043b\u0443\u0436\u0431\u044b. \u0417\u0434\u0435\u0441\u044c RoutingService \u043f\u0440\u043e\u0441\u0442\u043e \u0432\u044b\u0441\u0442\u0443\u043f\u0430\u0442\u044c \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u043f\u043e\u0441\u0440\u0435\u0434\u043d\u0438\u043a\u0430. \u042f \u043f\u0440\u043e\u0448\u0435\u043b RoutingService \u0432 \u043e\u043a\u043d\u0430 \u043a\u043e\u043d\u0441\u043e\u043b\u044c\u043d\u043e\u0433\u043e \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u0441\u0430\u043c\u043e-\u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0442\u0435\u0445\u043d\u0438\u043a\u0443. \u0412\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0440\u0430\u0437\u043c\u0435\u0441\u0442\u0438\u0442\u044c RoutingService \u0432 IIS \/ WAS \/ Windows Service \/ AppFabric \u0441\u043e\u0433\u043b\u0430\u0441\u043d\u043e \u0432\u0430\u0448\u0435\u0439 \u043f\u043e\u0442\u0440\u0435\u0431\u043d\u043e\u0441\u0442\u0438.<\/p>\n<p>  \u0412\u043f\u0435\u0440\u0432\u044b\u0435 \u044f \u043d\u0430\u0441\u0442\u0440\u043e\u0438\u0432 RoutingService \u0441 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0439 \u043a\u043e\u043d\u0435\u0447\u043d\u043e\u0439 \u0442\u043e\u0447\u043a\u0438 (\u0432\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u044b\u0439 \u043a\u043e\u043d\u0435\u0447\u043d\u0430\u044f \u0442\u043e\u0447\u043a\u0430), \u043a\u0430\u043a \u043f\u043e\u043a\u0430\u0437\u0430\u043d\u043e \u043d\u0438\u0436\u0435-  <\/p>\n<pre><code class=\"xml\">&lt;services&gt;    &lt;service name=&quot;System.ServiceModel.Routing.RoutingService&quot;&gt;       &lt;endpoint address=&quot;&quot; binding=&quot;basicHttpBinding&quot; contract=&quot;System.ServiceModel.Routing.IRequestReplyRouter&quot;                           name=&quot;VirtualEndpoint&quot;  \/&gt;       &lt;host&gt;          &lt;baseAddresses&gt;             &lt;add baseAddress=&quot;http:\/\/localhost:8080\/RoutingService\/Router&quot; \/&gt;          &lt;\/baseAddresses&gt;       &lt;\/host&gt;    &lt;\/service&gt; &lt;\/services&gt;  <\/code><\/pre>\n<p>  \u041e\u0431\u0440\u0430\u0442\u0438\u0442\u0435 \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u0435, \u0447\u0442\u043e \u0437\u0434\u0435\u0441\u044c \u044f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043b IRequestReplyRouter \u0434\u043e\u0433\u043e\u0432\u043e\u0440 \u043d\u0430 \u043e\u0431\u0441\u043b\u0443\u0436\u0438\u0432\u0430\u043d\u0438\u0435 \u043a\u0430\u043a \u043d\u0430\u0448 ComplexNumberCalculator \u0441\u0435\u0440\u0432\u0438\u0441 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442 \u0437\u0430\u043f\u0440\u043e\u0441-\u043e\u0442\u0432\u0435\u0442 MEP.<\/p>\n<p>  \u0422\u043e\u0433\u0434\u0430 \u044f \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0438\u043b \u043a\u043e\u043d\u0435\u0447\u043d\u0443\u044e \u0442\u043e\u0447\u043a\u0443 \u0434\u043b\u044f \u043d\u0430\u0448\u0435\u0439 \u0446\u0435\u043b\u0435\u0432\u043e\u0439 \u0441\u043b\u0443\u0436\u0431\u044b: ComplexNumberCalculator \u043a\u0430\u043a \u043d\u0438\u0436\u0435-<\/p>\n<pre><code class=\"xml\">&lt;client&gt;    &lt;endpoint address=&quot;http:\/\/localhost:8081\/ComplexNumberService&quot; binding=&quot;basicHttpBinding&quot;                   contract=&quot;*&quot; name=&quot;ComplexNumber&quot; \/&gt; &lt;\/client&gt; <\/code><\/pre>\n<p>  \u0421\u043b\u0435\u0434\u0443\u044e\u0449\u0430\u044f \u044f \u043f\u043e\u0437\u0432\u043e\u043b\u0438\u043b RoutingBehavior \u0437\u0430\u0442\u0435\u043c, \u0443\u043a\u0430\u0437\u0430\u0432 \u0438\u043c\u044f \u0442\u0430\u0431\u043b\u0438\u0446\u044b \u0444\u0438\u043b\u044c\u0442\u0440\u0430. \u042f \u0441\u0434\u0435\u043b\u0430\u043b \u044d\u0442\u043e, \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0438\u0432 \u043f\u043e\u0432\u0435\u0434\u0435\u043d\u0438\u0435 \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e, \u043a\u0430\u043a \u043f\u043e\u043a\u0430\u0437\u0430\u043d\u043e \u043d\u0438\u0436\u0435-  <\/p>\n<pre><code class=\"xml\">&lt;behaviors&gt;    &lt;serviceBehaviors&gt;       &lt;behavior name=&quot;&quot;&gt;          &lt;routing filterTableName=&quot;RoutingTable&quot; \/&gt;       &lt;\/behavior&gt;    &lt;\/serviceBehaviors&gt; &lt;\/behaviors&gt;  <\/code><\/pre>\n<p>  \u0421\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u043c \u0448\u0430\u0433\u043e\u043c \u0431\u0443\u0434\u0435\u0442 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0438\u0442\u044c \u043d\u0430\u0448 \u0444\u0438\u043b\u044c\u0442\u0440 \u0442\u0430\u0431\u043b\u0438\u0446\u0443: RoutingTable \u043d\u0430 \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043e\u0432 \u0432 \u043d\u0435\u043c. \u041d\u043e, \u043a\u0430\u043a \u043a\u0430\u0436\u0434\u0430\u044f \u0437\u0430\u043f\u0438\u0441\u044c \u0432 \u0442\u0430\u0431\u043b\u0438\u0446\u0435 \u0444\u0438\u043b\u044c\u0442\u0440\u0430 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0435\u0442 \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435 \u043c\u0435\u0436\u0434\u0443 \u0444\u0438\u043b\u044c\u0442\u0440\u043e\u043c \u043c\u0430\u0440\u0448\u0440\u0443\u0442\u0438\u0437\u0430\u0446\u0438\u0438 \u0438 \u0446\u0435\u043b\u0435\u0432\u043e\u0439 \u043a\u043e\u043d\u0435\u0447\u043d\u043e\u0439 \u0442\u043e\u0447\u043a\u0438, \u043c\u044b \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0438\u043c \u0444\u0438\u043b\u044c\u0442\u0440\u044b \u0441\u043d\u0430\u0447\u0430\u043b\u0430 \u0442\u043e\u0433\u0434\u0430 \u043d\u0430\u0448 Filer \u0442\u0430\u0431\u043b\u0438\u0446\u0443. \u042f \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0438\u043b \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0439 \u0444\u0438\u043b\u044c\u0442\u0440 \u0434\u043b\u044f \u043d\u0430\u0448\u0435\u0433\u043e \u0444\u0438\u043b\u044c\u0442\u0440\u0430 \u0442\u0430\u0431\u043b\u0438\u0446\u044b-<\/p>\n<pre><code class=\"xml\">&lt;routing&gt;    &lt;filters&gt;       &lt;filter name=&quot;ComplexNumberFilter&quot; filterType=&quot;MatchAll&quot; \/&gt;    &lt;\/filters&gt;  ...  <\/code><\/pre>\n<p>  \u042f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043b \u0432\u044b\u0448\u0435 MatchAll \u0442\u0438\u043f\u0430 \u0444\u0438\u043b\u044c\u0442\u0440\u0430, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u0435\u0442 \u0432\u0441\u0435 \u0432\u0445\u043e\u0434\u044f\u0449\u0438\u0435 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u044f. \u041e\u0431\u0440\u0430\u0442\u0438\u0442\u0435 \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u0435, \u0447\u0442\u043e \u043d\u0430\u0448\u0435\u0439 \u0446\u0435\u043b\u044c\u044e \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043f\u0440\u043e\u0441\u0442\u043e \u043f\u0435\u0440\u0435\u0434\u0430\u0442\u044c \u0432\u0441\u0435 \u0432\u0445\u043e\u0434\u044f\u0449\u0438\u0435 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u044f \u043e\u0442 \u043a\u043b\u0438\u0435\u043d\u0442\u0430 \u043a ComplexNumberCalculator.<\/p>\n<p>  \u041d\u0430\u043a\u043e\u043d\u0435\u0446 \u044f \u043d\u0430\u0441\u0442\u0440\u043e\u0438\u0432 \u0444\u0438\u043b\u044c\u0442\u0440 \u0442\u0430\u0431\u043b\u0438\u0446\u0443: RoutingTable \u0441 \u0442\u0438\u043f\u043e\u043c \u0444\u0438\u043b\u044c\u0442\u0440\u0430, \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u043d\u043e\u0433\u043e \u0432\u044b\u0448\u0435 \u043d\u0438\u0436\u0435-<\/p>\n<pre><code class=\"xml\">&lt;filterTables&gt;    &lt;filterTable name=&quot;RoutingTable&quot;&gt;       &lt;add filterName=&quot;ComplexNumberFilter&quot; endpointName=&quot;ComplexNumber&quot; \/&gt;    &lt;\/filterTable&gt; &lt;\/filterTables&gt;  <\/code><\/pre>\n<p>  \u0412\u044b\u0448\u0435 \u044f \u0434\u043e\u0431\u0430\u0432\u0438\u043b \u043e\u0434\u043d\u0443 \u0437\u0430\u043f\u0438\u0441\u044c \u0442\u0430\u0431\u043b\u0438\u0446\u044b \u0438 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c FILTERNAME \u043f\u0440\u0438\u043f\u0438\u0441\u044b\u0432\u0430\u0442\u044c \u00bb ComplexNumberFilter &quot;(\u0438\u043c\u044f \u0442\u0438\u043f\u0430 \u0444\u0438\u043b\u044c\u0442\u0440\u0430, \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u043d\u043e\u0433\u043e \u0432\u044b\u0448\u0435) \u0438 endpointName \u043f\u0440\u0438\u043f\u0438\u0441\u044b\u0432\u0430\u0442\u044c &quot; ComplexNumber &quot;(\u043d\u0430\u0437\u0432\u0430\u043d\u0438\u0435 \u043a\u043e\u043d\u0435\u0447\u043d\u043e\u0439 \u0442\u043e\u0447\u043a\u0438 \u0446\u0435\u043b\u0435\u0432\u043e\u0439 \u0441\u043b\u0443\u0436\u0431\u044b, \u043a\u043e\u043d\u0435\u0447\u043d\u044b\u043c \u043f\u043e\u043b\u0443\u0447\u0430\u0442\u0435\u043b\u0435\u043c).<\/p>\n<p>  \u041d\u0430\u043a\u043e\u043d\u0435\u0446, \u044f \u0441\u043e\u0437\u0434\u0430\u043b \u043a\u043e\u043d\u0441\u043e\u043b\u044c \u043a\u043b\u0438\u0435\u043d\u0442\u0441\u043a\u043e\u0435 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u0434\u043b\u044f \u0432\u044b\u0437\u043e\u0432\u0430 \u0441\u043b\u0443\u0436\u0431\u044b. \u042f \u0433\u0435\u043d\u0435\u0440\u0438\u0440\u0443\u0435\u0442\u0441\u044f ComplexNumberCalculator \u043a\u043e\u0434 \u0441\u043b\u0443\u0436\u0431\u0430 \u0444\u0430\u0439\u043b \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e svcutil.exe \u0438\u0437 \u043a\u043e\u043c\u0430\u043d\u0434\u043d\u043e\u0439 \u0441\u0442\u0440\u043e\u043a\u0438<\/p>\n<p>  svcutil.exe HTTP: \/ \/ \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u044b\u0439: 8081\/ComplexNumberService\/mex<\/p>\n<p>  \u0438 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u043d\u0430 \u0441\u0442\u043e\u0440\u043e\u043d\u0435 \u043a\u043b\u0438\u0435\u043d\u0442\u0430 \u043a\u043e\u043d\u0435\u0447\u043d\u0443\u044e \u0442\u043e\u0447\u043a\u0443, \u043a\u0430\u043a \u043f\u043e\u043a\u0430\u0437\u0430\u043d\u043e \u043d\u0438\u0436\u0435-<\/p>\n<pre><code class=\"xml\">&lt;system.serviceModel&gt; &lt;client&gt;    &lt;endpoint address=&quot;http:\/\/localhost:8080\/RoutingService\/Router&quot; binding=&quot;basicHttpBinding&quot;                   contract=&quot;IComplexNumber&quot; name=&quot;BasicHttpBinding_IComplexNumber&quot; \/&gt; &lt;\/client&gt; &lt;\/system.serviceModel&gt;  <\/code><\/pre>\n<p>  \u041e\u0431\u0440\u0430\u0442\u0438\u0442\u0435 \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u0435, \u0447\u0442\u043e \u044f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043b \u0437\u0434\u0435\u0441\u044c \u043a\u043e\u043d\u0442\u0440\u0430\u043a\u0442\u0430 \u0441\u043b\u0443\u0436\u0431\u044b IComplexNumber (\u0438\u0437 ComplexNumberCalculator servcie) \u0432\u043c\u0435\u0441\u0442\u043e IRequestReplyRouter (\u0438\u0437 RoutingService ). IComplexNumber \u043a\u043e\u043d\u0442\u0440\u0430\u043a\u0442 \u043d\u0430 \u043e\u043a\u0430\u0437\u0430\u043d\u0438\u0435 \u0443\u0441\u043b\u0443\u0433 \u0431\u0443\u0434\u0435\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u0434\u043b\u044f \u0432\u044b\u0437\u043e\u0432\u0430 ComplexNumberService \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0438, \u0441\u043e\u0437\u0434\u0430\u0432 \u0431\u043e\u043a\u043e\u0432\u043e\u0439 \u043a\u0430\u043d\u0430\u043b \u043a\u043b\u0438\u0435\u043d\u0442\u0430. \u041d\u0438\u0436\u0435 \u043f\u0440\u0438\u0432\u0435\u0434\u0435\u043d \u043a\u043e\u0434-\u043a\u043b\u0438\u0435\u043d\u0442\u0441\u043a\u043e\u0435 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435<\/p>\n<pre><code class=\"cs\">var cf = new ChannelFactory&lt;IComplexNumber&gt;(&quot;BasicHttpBinding_IComplexNumber&quot;);  var channel = cf.CreateChannel();  var z1 = new Complex(); var z2 = new Complex();  z1.Real = 3D; z1.Imaginary = 4D;  z2.Real = 2D; z2.Imaginary = -2D;  Console.WriteLine(&quot;*** RoutingService with Message Filters ***\\n&quot;); Console.WriteLine(&quot;Please hit any key to start: &quot;); string command = Console.ReadLine();  while (command != &quot;exit&quot;) {    ComplexNumberArithmetics(channel, z1, z2);     Console.WriteLine(&quot;\\nPlease hit any key to re-run OR enter 'exit' to exit.&quot;);    command = Console.ReadLine(); }  ((IClientChannel)channel).Close(); <\/code><\/pre>\n<p>  \u041c\u0435\u0442\u043e\u0434 ComplexNumberArithmetics \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u0442 \u043a\u043e\u043c\u043f\u043b\u0435\u043a\u0441\u043d\u043e\u0435 \u0447\u0438\u0441\u043b\u043e \u0430\u0440\u0438\u0444\u043c\u0435\u0442\u0438\u043a\u0443, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044f \u043a\u0430\u043d\u0430\u043b, \u0441\u043e\u0437\u0434\u0430\u043d\u043d\u044b\u0439 \u0432\u044b\u0448\u0435 (\u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u043d\u0430\u0439\u0442\u0438 \u043a\u043e\u0434 ComplexNumberArithmetics \u043c\u0435\u0442\u043e\u0434\u0430 \u0432 \u043e\u0431\u0440\u0430\u0437\u0446\u0435).<\/p>\n<p>  \u0415\u0441\u0442\u044c \u0447\u0435\u0442\u044b\u0440\u0435 \u043f\u0440\u043e\u0435\u043a\u0442\u0430 \u0432 \u0440\u0430\u0441\u0442\u0432\u043e\u0440\u0435: CalculatorService, ConsoleClient, ConsoleHostComplexNo &#038; ConsoleHostRouter. \u0422\u0435\u043f\u0435\u0440\u044c \u043d\u0430\u0431\u043e\u0440 ConsoleClient, ConsoleHostComplexNo &#038; ConsoleHostRouter \u043f\u0440\u043e\u0435\u043a\u0442\u043e\u0432 \u043a\u0430\u043a \u043f\u0440\u043e\u0435\u043a\u0442\u043e\u0432 Start Up \u0438 \u0443\u0434\u0430\u0440\u0438\u043b Ctrl + F5 \u043a\u043b\u044e\u0447\u0438, \u0447\u0442\u043e\u0431\u044b \u043d\u0430\u0447\u0430\u0442\u044c \u043f\u0440\u043e\u0435\u043a\u0442\u044b. \u0422\u0435\u043f\u0435\u0440\u044c \u043d\u0430\u0436\u043c\u0438\u0442\u0435 \u043b\u044e\u0431\u0443\u044e \u043a\u043b\u0430\u0432\u0438\u0448\u0443 \u043d\u0430 \u043a\u043e\u043d\u0441\u043e\u043b\u0438 \u043a\u043b\u0438\u0435\u043d\u0442\u0430, \u0438 \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0443\u0431\u0435\u0434\u0438\u0442\u044c\u0441\u044f, \u0447\u0442\u043e \u043c\u0430\u0440\u0448\u0440\u0443\u0442\u0438\u0437\u0430\u0446\u0438\u044f \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u043d\u043e\u0440\u043c\u0430\u043b\u044c\u043d\u043e. \u0412\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0432\u0438\u0434\u0435\u0442\u044c, \u0447\u0442\u043e \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u044f \u043f\u0440\u0438\u0445\u043e\u0434\u044f\u0442 \u043d\u0430 ComplexNumberService \u043f\u043e\u0441\u043b\u0435 \u0438\u0445 &quot; \u0440\u0430\u0437\u0433\u0440\u043e\u043c\u0438\u043b\u0438 \u00ab\u043f\u043e\u0441\u0440\u0435\u0434\u043d\u0438\u0447\u0435\u0441\u043a\u043e\u0439 RoutingService.<\/p>\n<p>  <img decoding=\"async\" src=\"http:\/\/www.codeproject.com\/KB\/WCF\/772854\/3.png\" alt=\"image\"\/><br \/>  <img decoding=\"async\" src=\"http:\/\/www.codeproject.com\/KB\/WCF\/772854\/4.png\" alt=\"image\"\/><br \/>  <img decoding=\"async\" src=\"http:\/\/www.codeproject.com\/KB\/WCF\/772854\/5.png\" alt=\"image\"\/><\/p>\n<h5>\u041d\u0430 \u0431\u0430\u0437\u0435 \u043a\u043e\u043d\u0442\u0435\u043d\u0442\u0430 \u043c\u0430\u0440\u0448\u0440\u0443\u0442\u0438\u0437\u0430\u0446\u0438\u0438<\/h5>\n<p>  \u0412 \u043c\u0435\u0442\u043e\u0434\u043e\u0432 \u043c\u0430\u0440\u0448\u0440\u0443\u0442\u0438\u0437\u0430\u0446\u0438\u0438 \u043d\u0430 \u043e\u0441\u043d\u043e\u0432\u0435 \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u043e\u0433\u043e, \u0446\u0435\u043b\u0435\u0432\u0430\u044f \u0441\u043b\u0443\u0436\u0431\u0430 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0435\u0442\u0441\u044f \u043f\u0443\u0442\u0435\u043c \u043e\u0446\u0435\u043d\u043a\u0438 \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u043d\u0438\u044f \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u043d\u043e\u0433\u043e \u0432\u0445\u043e\u0434\u044f\u0449\u0435\u0433\u043e \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u044f. \u0412\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u043e\u0446\u0435\u043d\u0438\u0442\u044c \u0432\u0445\u043e\u0434\u044f\u0449\u0435\u0435 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0435 \u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u043a \u0438\u043b\u0438 \u0442\u0435\u043b\u043e, \u0447\u0442\u043e\u0431\u044b \u0440\u0435\u0448\u0438\u0442\u044c \u043a\u043e\u043d\u0435\u0447\u043d\u0443\u044e \u0446\u0435\u043b\u044c \u0441\u043b\u0443\u0436\u0431\u044b. \u0412\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u043f\u0440\u043e\u0432\u0435\u0440\u0438\u0442\u044c SOAP \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0435 \u0432\u0445\u043e\u0434\u044f\u0449\u0435\u0433\u043e \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u044f \u0438\u043b\u0438 \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u043e\u0433\u043e \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u0432\u043d\u0443\u0442\u0440\u0438 \u0441\u0432\u043e\u0435\u0439 \u043d\u0430\u0433\u0440\u0443\u0437\u043a\u0435, \u0442\u0430\u043a\u0438\u0435 \u043a\u0430\u043a \u044d\u043b\u0435\u043c\u0435\u043d\u0442, \u0430\u0442\u0440\u0438\u0431\u0443\u0442 \u0438\u043b\u0438 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044e \u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043a\u0430 \u0438 \u0442.\u0434. \u043c\u043e\u0436\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c Action, XPath filterTypes \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u0442\u044c \u043a\u043e\u043d\u0442\u0435\u043d\u0442\u0430 \u043d\u0430 \u043e\u0441\u043d\u043e\u0432\u0435 \u043c\u0430\u0440\u0448\u0440\u0443\u0442\u0438\u0437\u0430\u0446\u0438\u0438.<br \/>  <img decoding=\"async\" src=\"http:\/\/www.codeproject.com\/KB\/WCF\/772854\/6.png\" alt=\"image\"\/><\/p>\n<p>  \u0414\u0430\u0432\u0430\u0439\u0442\u0435 \u0440\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0438\u043c \u043f\u0440\u0438\u043c\u0435\u0440, \u0447\u0442\u043e\u0431\u044b \u043f\u043e\u043d\u044f\u0442\u044c \u043c\u0430\u0440\u0448\u0440\u0443\u0442\u0438\u0437\u0430\u0446\u0438\u0438 \u043a\u043e\u043d\u0442\u0435\u043d\u0442\u0430 \u043d\u0430 \u043e\u0441\u043d\u043e\u0432\u0435 \u0441 \u043d\u0430\u0448\u0438\u043c ComplexNumberCalculator \u0441\u043b\u0443\u0436\u0431\u044b. \u041f\u0440\u0435\u0434\u043f\u043e\u043b\u043e\u0436\u0438\u043c, \u0447\u0442\u043e \u043c\u044b \u0445\u043e\u0442\u0438\u043c \u0434\u043b\u044f \u043c\u0430\u0440\u0448\u0440\u0443\u0442\u0438\u0437\u0430\u0446\u0438\u0438 \u0431\u0438\u043d\u0430\u0440\u043d\u044b\u043c\u0438 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u044f\u043c\u0438 (\u0441\u043b\u043e\u0436\u0435\u043d\u0438\u0435, \u0432\u044b\u0447\u0438\u0442\u0430\u043d\u0438\u0435, \u0443\u043c\u043d\u043e\u0436\u0435\u043d\u0438\u0435 \u0438 \u0434\u0435\u043b\u0435\u043d\u0438\u0435), \u0447\u0442\u043e\u0431\u044b ComplexNumberCalculator1 \u0438 \u0443\u043d\u0430\u0440\u043d\u044b\u0435 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0438 (\u041c\u043e\u0434\u0443\u043b\u044c, \u0430\u0440\u0433\u0443\u043c\u0435\u043d\u0442, \u0441\u043e\u043f\u0440\u044f\u0436\u0435\u043d\u043d\u044b\u0445 \u0438 \u0432\u0437\u0430\u0438\u043c\u043d\u043e\u043c) \u0432 ComplexNumberCalculator2.<\/p>\n<p>  \u042f \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u0442\u044c \u0442\u043e \u0436\u0435 \u0441\u0430\u043c\u043e\u0435 \u0434\u0432\u0443\u043c\u044f \u0441\u043f\u043e\u0441\u043e\u0431\u0430\u043c\u0438; \u041f\u0435\u0440\u0432\u044b\u0439 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u0440\u0430\u0437\u043b\u0438\u0447\u043d\u044b\u0445 ComplexNumberCalculator \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0439 \u0432 SOAP \u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043a\u0430 \u0438, \u0432\u043e-\u0432\u0442\u043e\u0440\u044b\u0445, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044f \u0432\u044b\u0440\u0430\u0436\u0435\u043d\u0438\u044f XPath.<\/p>\n<h5>\u0412\u044b\u0432\u043e\u0434<\/h5>\n<p>  \u041c\u0430\u0440\u0448\u0440\u0443\u0442\u0438\u0437\u0430\u0446\u0438\u044f \u0432 WCF \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043e\u0447\u0435\u043d\u044c \u0448\u0438\u0440\u043e\u043a\u0430\u044f \u0442\u0435\u043c\u0430. \u042f \u0443\u0436\u0435 \u0440\u0430\u0441\u0441\u043a\u0430\u0437\u044b\u0432\u0430\u043b WCF \u0421\u043b\u0443\u0436\u0431\u0430 \u043c\u0430\u0440\u0448\u0440\u0443\u0442\u0438\u0437\u0430\u0446\u0438\u0438 \u043a\u043e\u043d\u0446\u0435\u043f\u0446\u0438\u044e \u0438 \u043e\u0431\u044a\u044f\u0441\u043d\u0438\u043b, \u043a\u0430\u043a \u043d\u0430\u0441\u0442\u0440\u043e\u0438\u0442\u044c RoutingService (\u043a\u043e\u043d\u0435\u0447\u043d\u043e\u0439 \u0442\u043e\u0447\u043a\u0438 (\u044b), \u0446\u0435\u043b\u0435\u0432\u043e\u0439 \u0443\u0441\u043b\u0443\u0433\u0438 (\u0443\u0441\u043b\u0443\u0433), \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0435 \u0444\u0438\u043b\u044c\u0442\u0440 (\u044b) \u0438 \u0442\u0430\u0431\u043b\u0438\u0446\u0443 \u0444\u0438\u043b\u044c\u0442\u0440) \u0432 \u044d\u0442\u043e\u0439 \u0434\u043e\u043b\u0436\u043d\u043e\u0441\u0442\u0438. \u0422\u043e\u0433\u0434\u0430 \u044f \u043f\u0440\u043e\u0434\u0435\u043c\u043e\u043d\u0441\u0442\u0440\u0438\u0440\u043e\u0432\u0430\u043b \u043f\u0440\u043e\u0441\u0442\u043e\u0439 RoutingService \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044f MatchAll FilterType \u0438, \u043d\u0430\u043a\u043e\u043d\u0435\u0446, \u0438\u0437\u0443\u0447\u0438\u0442\u044c \u043c\u0430\u0440\u0448\u0440\u0443\u0442\u0438\u0437\u0430\u0446\u0438\u044e \u043d\u0430 \u043e\u0441\u043d\u043e\u0432\u0435 \u043a\u043e\u043d\u0442\u0435\u043d\u0442\u0430, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044f Action \u0446\u0435\u043d\u043d\u043e\u0441\u0442\u0438 \u0438 XPath \u0432\u044b\u0440\u0430\u0436\u0435\u043d\u0438\u0439. \u041d\u043e \u043c\u043d\u043e\u0433\u043e, \u0447\u0442\u043e\u0431\u044b \u043f\u043e\u043a\u0440\u044b\u0442\u044c. \u0412 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0439 \u0441\u0435\u0440\u0438\u0438 \u044d\u0442\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0435 \u044f \u0440\u0430\u0441\u0441\u043a\u0430\u0436\u0443 \u043e \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u043c\u0430\u0440\u0448\u0440\u0443\u0442\u0438\u0437\u0430\u0446\u0438\u0438 \u0442\u0435\u043c\u044b, \u043a\u0430\u043a \u043f\u0440\u043e\u0442\u043e\u043a\u043e\u043b \u043c\u043e\u0441\u0442\u0430, \u043e\u0441\u043d\u043e\u0432\u0430\u043d\u043d\u043e\u0439 \u043d\u0430 \u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442\u0435 \u043c\u0430\u0440\u0448\u0440\u0443\u0442\u0438\u0437\u0430\u0446\u0438\u0438, \u0431\u0430\u043b\u0430\u043d\u0441\u0438\u0440\u043e\u0432\u043a\u0438 \u043d\u0430\u0433\u0440\u0443\u0437\u043a\u0438 \u0438 \u0442.\u0434. \u0434\u043e \u0442\u0435\u0445 \u043f\u043e\u0440, \u0441\u0447\u0430\u0441\u0442\u043b\u0438\u0432 \u043a\u043e\u0434\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f. \t\t\t<\/p>\n<div class=\"clear\"><\/div>\n<\/p><\/div>\n<p> \u0441\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 \u043e\u0440\u0438\u0433\u0438\u043d\u0430\u043b \u0441\u0442\u0430\u0442\u044c\u0438 <a href=\"http:\/\/habrahabr.ru\/post\/222981\/\"> http:\/\/habrahabr.ru\/post\/222981\/<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<div class=\"content html_format\">\n<h4>WCF \u0421\u043b\u0443\u0436\u0431\u0430 \u043c\u0430\u0440\u0448\u0440\u0443\u0442\u0438\u0437\u0430\u0446\u0438\u0438 \u2014 \u0427\u0430\u0441\u0442\u044c I<\/h4>\n<p>  <\/p>\n<h5>\u0412\u0432\u0435\u0434\u0435\u043d\u0438\u0435<\/h5>\n<p>  \u0421\u043b\u0443\u0436\u0431\u0430 \u043c\u0430\u0440\u0448\u0440\u0443\u0442\u0438\u0437\u0430\u0446\u0438\u0438 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043e\u0431\u0449\u0438\u043c SOAP -\u043f\u043e\u0441\u0440\u0435\u0434\u043d\u0438\u043a\u043e\u043c, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0432\u044b\u0441\u0442\u0443\u043f\u0430\u0435\u0442 \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u043c\u0430\u0440\u0448\u0440\u0443\u0442\u0438\u0437\u0430\u0442\u043e\u0440\u0430. \u0411\u0430\u0437\u043e\u0432\u0430\u044f \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b\u044c\u043d\u043e\u0441\u0442\u044c \u0441\u043b\u0443\u0436\u0431\u044b \u043c\u0430\u0440\u0448\u0440\u0443\u0442\u0438\u0437\u0430\u0446\u0438\u0438 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u043c\u0430\u0440\u0448\u0440\u0443\u0442\u0438\u0437\u0430\u0446\u0438\u0438 \u0432\u0445\u043e\u0434\u044f\u0449\u0438\u0445 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0439 \u043d\u0430 \u043e\u0441\u043d\u043e\u0432\u0435 \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u043e\u0433\u043e \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u044f (\u0432 \u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043a\u0435 \u0438\u043b\u0438 \u0442\u0435\u043b\u0435 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u044f) \u043a \u0444\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u043c \u0441\u043b\u0443\u0436\u0431, \u0440\u0430\u0437\u043c\u0435\u0449\u0435\u043d\u043d\u044b\u0445 \u0432 \u0442\u043e\u043c \u0436\u0435 \u043a\u043e\u043c\u043f\u044c\u044e\u0442\u0435\u0440\u0435, \u0447\u0442\u043e \u0438 Router Service \u0438\u043b\u0438 \u0440\u0430\u0441\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u043d\u044b\u0445 \u043f\u043e \u0441\u0435\u0442\u0438. \u041d\u0430 \u0441\u0430\u043c\u043e\u043c \u0434\u0435\u043b\u0435 \u0421\u043b\u0443\u0436\u0431\u0430 \u043c\u0430\u0440\u0448\u0440\u0443\u0442\u0438\u0437\u0430\u0446\u0438\u0438 \u0434\u0435\u0439\u0441\u0442\u0432\u0443\u0435\u0442 \u043a\u0430\u043a \u043f\u0435\u0440\u0435\u0434\u043d\u0435\u0433\u043e \u043f\u043b\u0430\u043d\u0430 \u043e\u0431\u0441\u043b\u0443\u0436\u0438\u0432\u0430\u043d\u0438\u044f, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043e\u0442\u0440\u0430\u0436\u0430\u0435\u0442 \u0446\u0435\u043b\u0435\u0432\u0443\u044e \u0441\u043b\u0443\u0436\u0431\u0443 (\u044b). \u041e\u0441\u043d\u043e\u0432\u043d\u043e\u0435 \u043f\u0440\u0435\u0438\u043c\u0443\u0449\u0435\u0441\u0442\u0432\u043e \u0432 Routing Service \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043e\u0431\u0435\u0441\u043f\u0435\u0447\u0438\u0442\u044c \u043f\u0440\u043e\u0437\u0440\u0430\u0447\u043d\u043e\u0441\u0442\u044c \u043c\u0435\u0441\u0442\u043e\u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u0434\u043b\u044f \u043a\u043b\u0438\u0435\u043d\u0442\u0430 (\u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f), \u0442\u0430\u043a \u043a\u0430\u043a \u043a\u043b\u0438\u0435\u043d\u0442 \u044f\u0432\u043d\u043e \u043e\u0442\u0434\u0435\u043b\u0435\u043d\u0430 \u043e\u0442 \u0437\u043d\u0430\u044f \u043d\u0438\u0447\u0435\u0433\u043e \u043e \u0444\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0445 \u0443\u0441\u043b\u0443\u0433, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0444\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u044e\u0442 \u0437\u0430\u0434\u0430\u0447\u0438 \u043e\u0442 \u0435\u0435 \u0438\u043c\u0435\u043d\u0438. \u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u044d\u0442\u043e \u0434\u0430\u0435\u0442 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0442\u044c \u0440\u0430\u0437\u043b\u0438\u0447\u043d\u044b\u0435 \u0432\u0438\u0434\u044b \u043f\u0440\u043e\u043c\u0435\u0436\u0443\u0442\u043e\u0447\u043d\u043e\u0439 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u0432 \u0440\u0430\u043c\u043a\u0430\u0445 \u0443\u0441\u043b\u0443\u0433\u0438 \u043c\u0430\u0440\u0448\u0440\u0443\u0442\u0438\u0437\u0430\u0446\u0438\u0438.<\/p>\n<p>  \u0412\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043c\u0430\u0440\u0448\u0440\u0443\u0442\u0438\u0437\u0430\u0446\u0438\u044e \u0432 \u0440\u044f\u0434\u0435 \u043d\u0430\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0439. \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043c\u0430\u0440\u0448\u0440\u0443\u0442\u0438\u0437\u0430\u0446\u0438\u044e \u0434\u043b\u044f \u043c\u0430\u0440\u0448\u0440\u0443\u0442\u0438\u0437\u0430\u0446\u0438\u0438 \u0432\u0445\u043e\u0434\u044f\u0449\u0438\u0445 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0439 \u043d\u0430 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0435 \u0443\u0441\u043b\u0443\u0433\u0438 (\u044b) \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e content-based\/context-based \u043c\u0435\u0442\u043e\u0434\u044b \u043c\u0430\u0440\u0448\u0440\u0443\u0442\u0438\u0437\u0430\u0446\u0438\u0438. \u0412\u044b \u0442\u0430\u043a\u0436\u0435 \u043c\u043e\u0436\u0435\u0442\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043c\u0430\u0440\u0448\u0440\u0443\u0442\u0438\u0437\u0430\u0446\u0438\u044e \u0434\u043b\u044f \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u0433\u0440\u0430\u043d\u0438\u0446\u0443 \u0446\u0435\u043d\u0442\u0440\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u043d\u043d\u043e\u0439 \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e\u0441\u0442\u0438, \u043f\u0440\u043e\u0442\u043e\u043a\u043e\u043b \u043c\u043e\u0441\u0442\u0430, \u0431\u0430\u043b\u0430\u043d\u0441\u0438\u0440\u043e\u0432\u043a\u0443 \u043d\u0430\u0433\u0440\u0443\u0437\u043a\u0438 \u0438\u043b\u0438 \u0434\u0430\u0436\u0435 \u0441\u043b\u0443\u0436\u0431\u044b \u0432\u0435\u0440\u0441\u0438\u044f\u043c\u0438.<\/p>\n<p>  \u0412 \u043c\u0430\u0440\u0448\u0440\u0443\u0442\u0438\u0437\u0430\u0446\u0438\u0438, \u043c\u0430\u0440\u0448\u0440\u0443\u0442\u0438\u0437\u0430\u0446\u0438\u0438 \u0443\u0441\u043b\u0443\u0433 (\u043c\u0430\u0440\u0448\u0440\u0443\u0442\u0438\u0437\u0430\u0442\u043e\u0440) \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u044b\u0439 \u043a\u043e\u043d\u0435\u0447\u043d\u0443\u044e \u0442\u043e\u0447\u043a\u0443 (\u044b), \u0447\u0442\u043e \u043a\u043b\u0438\u0435\u043d\u0442\u0441\u043a\u043e\u0435 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 (\u044b) \u043f\u043e\u0442\u0440\u0435\u0431\u043b\u044f\u0435\u0442 \u0432\u043c\u0435\u0441\u0442\u043e \u043f\u043e\u0442\u0440\u0435\u0431\u043b\u044f\u044e\u0449\u0438\u0445 \u0444\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u0435 \u043a\u043e\u043d\u0435\u0447\u043d\u0443\u044e \u0442\u043e\u0447\u043a\u0443 (\u044b) \u0441\u043b\u0443\u0436\u0431\u044b \u0438 \u0447\u0442\u043e (\u0432\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u044b\u0439 \u043a\u043e\u043d\u0435\u0447\u043d\u044b\u0445 \u0442\u043e\u0447\u0435\u043a) \u043c\u0430\u0440\u0448\u0440\u0443\u0442\u044b \u0432\u0445\u043e\u0434\u044f\u0449\u0438\u0435 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u044f \u0438\u0437 \u043a\u043b\u0438\u0435\u043d\u0442\u0441\u043a\u043e\u0433\u043e \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u043a \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0435\u043c\u0443 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0442\u0435\u043b\u044c\u043d\u0443\u044e \u0441\u043b\u0443\u0436\u0431\u0443 \u043a\u043e\u043d\u0435\u0447\u043d\u043e\u0439 \u0442\u043e\u0447\u043a\u0438 \u0447\u0435\u0440\u0435\u0437 \u043f\u043e\u0441\u0440\u0435\u0434\u043d\u0438\u043a\u0430.<\/p>\n<p>  <img decoding=\"async\" src=\"http:\/\/www.codeproject.com\/KB\/WCF\/772854\/1.png\" alt=\"image\"\/>  <\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[],"tags":[],"class_list":["post-222981","post","type-post","status-publish","format-standard","hentry"],"_links":{"self":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/222981","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=222981"}],"version-history":[{"count":0,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/222981\/revisions"}],"wp:attachment":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=222981"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=222981"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=222981"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}