{"id":490726,"date":"2026-08-12T17:41:51","date_gmt":"2026-08-12T17:41:51","guid":{"rendered":"https:\/\/savepearlharbor.com\/?p=490726"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-29T21:00:00","slug":"","status":"publish","type":"post","link":"https:\/\/savepearlharbor.com\/?p=490726","title":{"rendered":"AS2 \u0432 .NET \u0431\u0435\u0437 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u043e\u0433\u043e Java-\u0433\u0435\u0439\u0442\u0432\u0435\u044f: EDI-\u043e\u0431\u043c\u0435\u043d \u0441 \u043f\u0430\u0440\u0442\u043d\u0451\u0440\u0430\u043c\u0438 \u043f\u0440\u044f\u043c\u043e \u0432 \u043c\u0430\u0440\u0448\u0440\u0443\u0442\u0435"},"content":{"rendered":"<div xmlns=\"http:\/\/www.w3.org\/1999\/xhtml\">\n<figure class=\"full-width \"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/333\/a9e\/fa0\/333a9efa0f5d16950d99597bfb6b8f7b.jpg\" alt=\"redb.Route.AS2\" title=\"redb.Route.AS2\" width=\"832\" height=\"1248\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/getpro\/habr\/upload_files\/333\/a9e\/fa0\/333a9efa0f5d16950d99597bfb6b8f7b.jpg 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/333\/a9e\/fa0\/333a9efa0f5d16950d99597bfb6b8f7b.jpg 781w\" loading=\"lazy\" decode=\"async\"\/><\/p>\n<div><figcaption>redb.Route.AS2<\/figcaption><\/div>\n<\/figure>\n<p>\u0415\u0441\u043b\u0438 \u0432\u044b \u043f\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442\u0435 \u0442\u043e\u0432\u0430\u0440 \u0432 \u043a\u0440\u0443\u043f\u043d\u0443\u044e \u0440\u043e\u0437\u043d\u0438\u0446\u0443, \u0432\u043e\u0437\u0438\u0442\u0435 \u0433\u0440\u0443\u0437\u044b \u0434\u043b\u044f 3PL-\u043e\u043f\u0435\u0440\u0430\u0442\u043e\u0440\u0430, \u0448\u043b\u0451\u0442\u0435 \u043f\u043b\u0430\u0442\u0451\u0436\u043d\u044b\u0435 \u0438\u0437\u0432\u0435\u0449\u0435\u043d\u0438\u044f \u0431\u0430\u043d\u043a\u0443 \u0438\u043b\u0438 \u043e\u0431\u043c\u0435\u043d\u0438\u0432\u0430\u0435\u0442\u0435\u0441\u044c \u043c\u0435\u0434\u0438\u0446\u0438\u043d\u0441\u043a\u0438\u043c\u0438 \u0442\u0440\u0430\u043d\u0437\u0430\u043a\u0446\u0438\u044f\u043c\u0438 X12 \u2014 \u0432\u044b \u043f\u043e\u0447\u0442\u0438 \u043d\u0430\u0432\u0435\u0440\u043d\u044f\u043a\u0430 \u043e\u0431\u043c\u0435\u043d\u0438\u0432\u0430\u0435\u0442\u0435\u0441\u044c \u044d\u0442\u0438\u043c\u0438 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u043c\u0438 \u043f\u043e\u00a0<strong>AS2<\/strong>. \u0417\u0430\u043a\u0430\u0437 (EDI 850), \u0441\u0447\u0451\u0442 (810), \u0443\u0432\u0435\u0434\u043e\u043c\u043b\u0435\u043d\u0438\u0435 \u043e\u0431 \u043e\u0442\u0433\u0440\u0443\u0437\u043a\u0435 (856), \u043f\u043b\u0430\u0442\u0451\u0436\u043d\u043e\u0435 \u0430\u0432\u0438\u0437\u043e (820) \u0443\u0445\u043e\u0434\u044f\u0442 \u043f\u0430\u0440\u0442\u043d\u0451\u0440\u0443 \u043d\u0435 \u043f\u043e\u0447\u0442\u043e\u0439 \u0438 \u043d\u0435 \u0447\u0435\u0440\u0435\u0437 REST, \u0430 \u043a\u0430\u043a \u043f\u043e\u0434\u043f\u0438\u0441\u0430\u043d\u043d\u044b\u0439 \u0438 \u0437\u0430\u0448\u0438\u0444\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0439 S\/MIME-\u043a\u043e\u043d\u0432\u0435\u0440\u0442 \u043f\u043e\u0432\u0435\u0440\u0445 HTTP, \u0441 \u043f\u043e\u0434\u043f\u0438\u0441\u0430\u043d\u043d\u043e\u0439 \u043a\u0432\u0438\u0442\u043a\u043e\u0439-\u0440\u0430\u0441\u043f\u0438\u0441\u043a\u043e\u0439 \u0432 \u043e\u0442\u0432\u0435\u0442. \u0422\u0430\u043a \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0440\u0435\u0433\u043b\u0430\u043c\u0435\u043d\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0439 B2B-\u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u043e\u043e\u0431\u043e\u0440\u043e\u0442 \u0432 \u0440\u043e\u0437\u043d\u0438\u0446\u0435, \u043b\u043e\u0433\u0438\u0441\u0442\u0438\u043a\u0435, \u0444\u0438\u043d\u0430\u043d\u0441\u0430\u0445, \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0441\u0442\u0432\u0435 \u0438 \u0437\u0434\u0440\u0430\u0432\u043e\u043e\u0445\u0440\u0430\u043d\u0435\u043d\u0438\u0438 \u0443\u0436\u0435 \u0434\u0432\u0430\u0434\u0446\u0430\u0442\u044c \u043b\u0435\u0442: Walmart, Amazon \u0438 \u0438\u0445 \u0441\u0435\u0442\u0438 \u043f\u043e\u0441\u0442\u0430\u0432\u0449\u0438\u043a\u043e\u0432, \u0431\u0430\u043d\u043a\u0438 \u0441 host-to-host \u043a\u0430\u043d\u0430\u043b\u043e\u043c, \u0430\u0432\u0442\u043e\u043f\u0440\u043e\u043c, \u0434\u0438\u0441\u0442\u0440\u0438\u0431\u044c\u044e\u0442\u043e\u0440\u044b \u2014 \u0432\u0441\u0435 \u0442\u0440\u0435\u0431\u0443\u044e\u0442 AS2.<\/p>\n<p>\u0412 .NET \u0434\u043e \u0441\u0438\u0445 \u043f\u043e\u0440 \u0431\u044b\u043b\u043e \u0434\u0432\u0430 \u043f\u0443\u0442\u0438. \u041b\u0438\u0431\u043e \u043a\u043e\u043c\u043c\u0435\u0440\u0447\u0435\u0441\u043a\u0438\u0439 AS2-\u0448\u043b\u044e\u0437 \u2014 Cleo, Seeburger, BizTalk \u2014 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u0430\u044f \u043a\u043e\u0440\u043e\u0431\u043a\u0430, \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u0430\u044f \u043b\u0438\u0446\u0435\u043d\u0437\u0438\u044f, \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u0430\u044f \u043a\u043e\u043c\u0430\u043d\u0434\u0430 \u0441\u043e\u043f\u0440\u043e\u0432\u043e\u0436\u0434\u0435\u043d\u0438\u044f. \u041b\u0438\u0431\u043e Java-\u0441\u0435\u0440\u0432\u0435\u0440 \u0441 \u043e\u0442\u043a\u0440\u044b\u0442\u044b\u043c \u043a\u043e\u0434\u043e\u043c \u2014 OpenAS2, Mendelson Community \u2014 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0439 JVM-\u043f\u0440\u043e\u0446\u0435\u0441\u0441 \u0440\u044f\u0434\u043e\u043c \u0441 \u0432\u0430\u0448\u0438\u043c .NET-\u0431\u044d\u043a\u0435\u043d\u0434\u043e\u043c, \u0441\u043e \u0441\u0432\u043e\u0438\u043c inbox-\u043a\u0430\u0442\u0430\u043b\u043e\u0433\u043e\u043c, \u043e\u0442\u043a\u0443\u0434\u0430 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u044b \u043d\u0430\u0434\u043e \u0435\u0449\u0451 \u0437\u0430\u0431\u0438\u0440\u0430\u0442\u044c \u0434\u0436\u043e\u0431\u043e\u0439. \u0412 \u043e\u0431\u043e\u0438\u0445 \u0441\u043b\u0443\u0447\u0430\u044f\u0445 AS2 \u0436\u0438\u0432\u0451\u0442\u00a0<strong>\u0441\u0431\u043e\u043a\u0443<\/strong>\u00a0\u043e\u0442 \u0432\u0430\u0448\u0435\u0439 \u0438\u043d\u0442\u0435\u0433\u0440\u0430\u0446\u0438\u0438, \u0430 \u043d\u0435 \u0432\u043d\u0443\u0442\u0440\u0438 \u043d\u0435\u0451.<\/p>\n<p><code><strong>redb.Route.AS2<\/strong><\/code>\u0437\u0430\u043a\u0440\u044b\u0432\u0430\u0435\u0442 \u044d\u0442\u043e\u0442 \u0440\u0430\u0437\u0440\u044b\u0432: AS2 \u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u0441\u044f \u043e\u0431\u044b\u0447\u043d\u044b\u043c \u0448\u0430\u0433\u043e\u043c \u043c\u0430\u0440\u0448\u0440\u0443\u0442\u0430 \u0432 \u0432\u0430\u0448\u0435\u043c .NET-\u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0435. \u041f\u0440\u0438\u043d\u044f\u043b\u0438 \u043a\u043e\u043d\u0432\u0435\u0440\u0442 \u043e\u0442 \u043f\u0430\u0440\u0442\u043d\u0451\u0440\u0430, \u0440\u0430\u0441\u0448\u0438\u0444\u0440\u043e\u0432\u0430\u043b\u0438, \u043f\u0440\u043e\u0432\u0435\u0440\u0438\u043b\u0438 \u043f\u043e\u0434\u043f\u0438\u0441\u044c, \u043e\u0442\u0434\u0430\u043b\u0438 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442 \u0432 pipeline \u2014 \u043f\u0440\u043e\u0432\u0430\u043b\u0438\u0434\u0438\u0440\u043e\u0432\u0430\u043b\u0438, \u0442\u0440\u0430\u043d\u0441\u0444\u043e\u0440\u043c\u0438\u0440\u043e\u0432\u0430\u043b\u0438, \u043f\u043e\u043b\u043e\u0436\u0438\u043b\u0438 \u0432 Kafka \u0438\u043b\u0438 SQL \u2014 \u0438 \u0432\u0435\u0440\u043d\u0443\u043b\u0438 \u043f\u0430\u0440\u0442\u043d\u0451\u0440\u0443 \u043f\u043e\u0434\u043f\u0438\u0441\u0430\u043d\u043d\u0443\u044e \u0440\u0430\u0441\u043f\u0438\u0441\u043a\u0443. \u041e\u0434\u0438\u043d \u043f\u0440\u043e\u0446\u0435\u0441\u0441, \u043e\u0434\u0438\u043d \u0434\u0435\u043f\u043b\u043e\u0439, \u043e\u0434\u043d\u0430 \u043f\u0430\u043d\u0435\u043b\u044c \u043d\u0430\u0431\u043b\u044e\u0434\u0430\u0435\u043c\u043e\u0441\u0442\u0438. \u0420\u0430\u0437\u0431\u0435\u0440\u0451\u043c, \u043a\u0430\u043a \u044d\u0442\u043e \u0432\u044b\u0433\u043b\u044f\u0434\u0438\u0442 \u0432 \u043a\u043e\u0434\u0435, \u0433\u0434\u0435 \u043f\u0440\u0438\u043c\u0435\u043d\u044f\u0435\u0442\u0441\u044f \u0438 \u043f\u043e\u0447\u0435\u043c\u0443 \u043d\u0430\u0442\u0438\u0432\u043d\u044b\u0439 \u043a\u043e\u043d\u043d\u0435\u043a\u0442\u043e\u0440 \u0432 ESB \u0432\u044b\u0438\u0433\u0440\u044b\u0432\u0430\u0435\u0442 \u0443 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u043e\u0433\u043e \u0448\u043b\u044e\u0437\u0430.<\/p>\n<h3>\u0427\u0442\u043e \u0442\u0430\u043a\u043e\u0435 AS2 \u0437\u0430 \u043e\u0434\u043d\u0443 \u043c\u0438\u043d\u0443\u0442\u0443<\/h3>\n<p>AS2 (Applicability Statement 2,\u00a0<a href=\"https:\/\/datatracker.ietf.org\/doc\/html\/rfc4130\" rel=\"noopener noreferrer nofollow\">RFC 4130<\/a>) \u2014 \u044d\u0442\u043e \u043f\u0440\u043e\u0442\u043e\u043a\u043e\u043b \u0433\u0430\u0440\u0430\u043d\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e\u0439 \u0434\u043e\u0441\u0442\u0430\u0432\u043a\u0438 \u0431\u0438\u0437\u043d\u0435\u0441-\u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u043e\u0432 \u043c\u0435\u0436\u0434\u0443 \u0434\u0432\u0443\u043c\u044f \u0441\u0442\u043e\u0440\u043e\u043d\u0430\u043c\u0438 \u0447\u0435\u0440\u0435\u0437 \u0438\u043d\u0442\u0435\u0440\u043d\u0435\u0442. \u0422\u0435\u0445\u043d\u0438\u0447\u0435\u0441\u043a\u0438 \u044d\u0442\u043e \u043a\u043e\u043d\u0432\u0435\u0440\u0442:<\/p>\n<ol>\n<li>\n<p>\u041f\u043e\u043b\u0435\u0437\u043d\u0430\u044f \u043d\u0430\u0433\u0440\u0443\u0437\u043a\u0430 (\u043e\u0431\u044b\u0447\u043d\u043e EDI: X12 \u0438\u043b\u0438 EDIFACT, \u043d\u043e \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c XML, JSON, \u0447\u0442\u043e \u0443\u0433\u043e\u0434\u043d\u043e) \u2014\u00a0<strong>\u0441\u0436\u0438\u043c\u0430\u0435\u0442\u0441\u044f<\/strong>\u00a0(\u043e\u043f\u0446\u0438\u043e\u043d\u0430\u043b\u044c\u043d\u043e),\u00a0<strong>\u043f\u043e\u0434\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u0442\u0441\u044f<\/strong>\u00a0\u0432\u0430\u0448\u0438\u043c \u043f\u0440\u0438\u0432\u0430\u0442\u043d\u044b\u043c \u043a\u043b\u044e\u0447\u043e\u043c \u0438\u00a0<strong>\u0448\u0438\u0444\u0440\u0443\u0435\u0442\u0441\u044f<\/strong>\u00a0\u043f\u0443\u0431\u043b\u0438\u0447\u043d\u044b\u043c \u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u043c \u043f\u0430\u0440\u0442\u043d\u0451\u0440\u0430.<\/p>\n<\/li>\n<li>\n<p>\u0413\u043e\u0442\u043e\u0432\u044b\u0439 S\/MIME-\u043a\u043e\u043d\u0432\u0435\u0440\u0442 \u0443\u0445\u043e\u0434\u0438\u0442 \u043f\u0430\u0440\u0442\u043d\u0451\u0440\u0443 \u043e\u0431\u044b\u0447\u043d\u044b\u043c HTTP POST.<\/p>\n<\/li>\n<li>\n<p>\u041f\u0430\u0440\u0442\u043d\u0451\u0440 \u0440\u0430\u0441\u0448\u0438\u0444\u0440\u043e\u0432\u044b\u0432\u0430\u0435\u0442 \u0441\u0432\u043e\u0438\u043c \u043a\u043b\u044e\u0447\u043e\u043c, \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u0442 \u0432\u0430\u0448\u0443 \u043f\u043e\u0434\u043f\u0438\u0441\u044c \u0432\u0430\u0448\u0438\u043c \u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u043c \u0438 \u043e\u0442\u0432\u0435\u0447\u0430\u0435\u0442\u00a0<strong>MDN<\/strong>\u00a0(Message Disposition Notification) \u2014 \u0440\u0430\u0441\u043f\u0438\u0441\u043a\u043e\u0439. \u041f\u043e\u0434\u043f\u0438\u0441\u0430\u043d\u043d\u044b\u0439 MDN \u043d\u0435\u0441\u0451\u0442\u00a0<code>Received-Content-MIC<\/code>: \u043a\u0440\u0438\u043f\u0442\u043e\u0433\u0440\u0430\u0444\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u0445\u0435\u0448 \u0442\u043e\u0433\u043e, \u0447\u0442\u043e \u043f\u0430\u0440\u0442\u043d\u0451\u0440 \u0440\u0435\u0430\u043b\u044c\u043d\u043e \u043f\u043e\u043b\u0443\u0447\u0438\u043b.<\/p>\n<\/li>\n<\/ol>\n<p>\u0421\u043c\u044b\u0441\u043b MDN \u2014 \u044e\u0440\u0438\u0434\u0438\u0447\u0435\u0441\u043a\u0438 \u0437\u043d\u0430\u0447\u0438\u043c\u0430\u044f\u00a0<strong>\u043d\u0435\u043e\u0442\u0440\u0435\u043a\u0430\u0435\u043c\u043e\u0441\u0442\u044c<\/strong>. \u0412\u044b \u043e\u0442\u043f\u0440\u0430\u0432\u0438\u043b\u0438 \u0437\u0430\u043a\u0430\u0437, \u043f\u0430\u0440\u0442\u043d\u0451\u0440 \u043f\u0440\u0438\u0441\u043b\u0430\u043b \u043f\u043e\u0434\u043f\u0438\u0441\u0430\u043d\u043d\u0443\u044e \u0440\u0430\u0441\u043f\u0438\u0441\u043a\u0443 \u0441 MIC, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0441\u043e\u0432\u043f\u0430\u0434\u0430\u0435\u0442 \u0441 \u0442\u0435\u043c, \u0447\u0442\u043e \u0432\u044b \u043e\u0442\u043f\u0440\u0430\u0432\u0438\u043b\u0438: \u0443 \u0432\u0430\u0441 \u0435\u0441\u0442\u044c \u0434\u043e\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u044c\u0441\u0442\u0432\u043e \u0434\u043e\u0441\u0442\u0430\u0432\u043a\u0438 \u0440\u043e\u0432\u043d\u043e \u0442\u043e\u0433\u043e \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430, \u0430 \u043d\u0435 \u0434\u0440\u0443\u0433\u043e\u0433\u043e. \u0418\u043c\u0435\u043d\u043d\u043e \u043f\u043e\u044d\u0442\u043e\u043c\u0443 AS2 \u0441\u0442\u0430\u043b \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043e\u043c \u0434\u0435-\u0444\u0430\u043a\u0442\u043e \u0442\u0430\u043c, \u0433\u0434\u0435 \u0437\u0430 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u043e\u043c \u0441\u0442\u043e\u044f\u0442 \u0434\u0435\u043d\u044c\u0433\u0438 \u0438 \u043e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u0441\u0442\u0432\u0430.<\/p>\n<p>MDN \u0431\u044b\u0432\u0430\u0435\u0442 \u0441\u0438\u043d\u0445\u0440\u043e\u043d\u043d\u044b\u0439 (\u0440\u0430\u0441\u043f\u0438\u0441\u043a\u0430 \u043f\u0440\u0438\u0445\u043e\u0434\u0438\u0442 \u0432 \u0442\u043e\u043c \u0436\u0435 HTTP-\u043e\u0442\u0432\u0435\u0442\u0435) \u0438 \u0430\u0441\u0438\u043d\u0445\u0440\u043e\u043d\u043d\u044b\u0439 (\u043f\u0430\u0440\u0442\u043d\u0451\u0440 \u043f\u043e\u0434\u0442\u0432\u0435\u0440\u0436\u0434\u0430\u0435\u0442 \u043f\u0440\u0438\u0451\u043c \u0438 \u043f\u0440\u0438\u0441\u044b\u043b\u0430\u0435\u0442 MDN \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u043c POST-\u043e\u043c \u043f\u043e\u0437\u0436\u0435, \u043d\u0430 \u0432\u0430\u0448 \u0430\u0434\u0440\u0435\u0441). \u041e\u0431\u0430 \u0440\u0435\u0436\u0438\u043c\u0430 \u2014 \u0447\u0430\u0441\u0442\u044c \u043f\u0440\u043e\u0442\u043e\u043a\u043e\u043b\u0430, \u0438 \u043e\u0431\u0430 \u043d\u0443\u0436\u043d\u044b \u0432 \u0436\u0438\u0437\u043d\u0438: \u043a\u0440\u0443\u043f\u043d\u044b\u0435 \u043f\u0430\u0440\u0442\u043d\u0451\u0440\u044b \u0447\u0430\u0441\u0442\u043e \u0442\u0440\u0435\u0431\u0443\u044e\u0442 \u0438\u043c\u0435\u043d\u043d\u043e \u0430\u0441\u0438\u043d\u0445\u0440\u043e\u043d\u043d\u044b\u0439.<\/p>\n<h3>\u00ab\u0410 \u043f\u043e\u0447\u0435\u043c\u0443 \u043d\u0435 \u043f\u0440\u043e\u0441\u0442\u043e HTTPS\u00bb<\/h3>\n<p>\u0420\u0435\u0437\u043e\u043d\u043d\u044b\u0439 \u0432\u043e\u043f\u0440\u043e\u0441: \u0435\u0441\u043b\u0438 \u043a\u0430\u043d\u0430\u043b \u0438 \u0442\u0430\u043a \u0437\u0430\u0449\u0438\u0449\u0451\u043d TLS, \u0437\u0430\u0447\u0435\u043c \u0435\u0449\u0451 \u043f\u043e\u0434\u043f\u0438\u0441\u044b\u0432\u0430\u0442\u044c \u0438 \u0448\u0438\u0444\u0440\u043e\u0432\u0430\u0442\u044c \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442? \u041f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e TLS \u0437\u0430\u0449\u0438\u0449\u0430\u0435\u0442\u00a0<strong>\u043a\u0430\u043d\u0430\u043b<\/strong>, \u0430 AS2 \u2014\u00a0<strong>\u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442<\/strong>. TLS \u0436\u0438\u0432\u0451\u0442 \u0440\u043e\u0432\u043d\u043e \u043e\u0442 \u0432\u0430\u0448\u0435\u0433\u043e \u0441\u043e\u043a\u0435\u0442\u0430 \u0434\u043e \u0441\u043e\u043a\u0435\u0442\u0430 \u043f\u0430\u0440\u0442\u043d\u0451\u0440\u0430 \u0438 \u0438\u0441\u0447\u0435\u0437\u0430\u0435\u0442, \u043a\u0430\u043a \u0442\u043e\u043b\u044c\u043a\u043e \u0431\u0430\u0439\u0442\u044b \u043b\u0435\u0433\u043b\u0438 \u043d\u0430 \u0434\u0438\u0441\u043a: \u0432 \u043b\u043e\u0433\u0435 \u043f\u0440\u043e\u043a\u0441\u0438, \u0432 inbox-\u043a\u0430\u0442\u0430\u043b\u043e\u0433\u0435, \u043d\u0430 \u0431\u0430\u043b\u0430\u043d\u0441\u0438\u0440\u043e\u0432\u0449\u0438\u043a\u0435 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442 \u0443\u0436\u0435 \u043e\u0442\u043a\u0440\u044b\u0442. S\/MIME-\u043a\u043e\u043d\u0432\u0435\u0440\u0442 AS2 \u043e\u0441\u0442\u0430\u0451\u0442\u0441\u044f \u043f\u043e\u0434\u043f\u0438\u0441\u0430\u043d\u043d\u044b\u043c \u0438 \u0437\u0430\u0448\u0438\u0444\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u043c \u043d\u0430 \u0432\u0441\u0451\u043c \u043f\u0443\u0442\u0438 \u0438 \u0432 \u043f\u043e\u043a\u043e\u0435 \u2014 \u0440\u0430\u0441\u0448\u0438\u0444\u0440\u043e\u0432\u0430\u0442\u044c \u0435\u0433\u043e \u043c\u043e\u0436\u0435\u0442 \u0442\u043e\u043b\u044c\u043a\u043e \u0432\u043b\u0430\u0434\u0435\u043b\u0435\u0446 \u043f\u0440\u0438\u0432\u0430\u0442\u043d\u043e\u0433\u043e \u043a\u043b\u044e\u0447\u0430, \u0430 \u043f\u043e\u0434\u043f\u0438\u0441\u044c \u0434\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442 \u0430\u0432\u0442\u043e\u0440\u0430. \u0418 \u0433\u043b\u0430\u0432\u043d\u043e\u0435 \u2014 TLS \u043d\u0435 \u0434\u0430\u0451\u0442 \u0440\u0430\u0441\u043f\u0438\u0441\u043a\u0438: \u0443 HTTPS \u043d\u0435\u0442 MDN \u0441 MIC, \u0430 \u0438\u043c\u0435\u043d\u043d\u043e \u043e\u043d \u0434\u0435\u043b\u0430\u0435\u0442 \u0434\u043e\u0441\u0442\u0430\u0432\u043a\u0443 \u043d\u0435\u043e\u0442\u0440\u0435\u043a\u0430\u0435\u043c\u043e\u0439. AS2 \u043e\u0431\u044b\u0447\u043d\u043e \u0438 \u0445\u043e\u0434\u0438\u0442 \u043f\u043e\u0432\u0435\u0440\u0445 HTTPS (<code>as2s<\/code>) \u2014 \u043e\u0434\u043d\u043e \u0434\u0440\u0443\u0433\u043e\u043c\u0443 \u043d\u0435 \u043c\u0435\u0448\u0430\u0435\u0442: \u043a\u0430\u043d\u0430\u043b \u0448\u0438\u0444\u0440\u0443\u0435\u0442 TLS, \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442 \u0438 \u043d\u0435\u043e\u0442\u0440\u0435\u043a\u0430\u0435\u043c\u043e\u0441\u0442\u044c \u043e\u0431\u0435\u0441\u043f\u0435\u0447\u0438\u0432\u0430\u0435\u0442 S\/MIME.<\/p>\n<h3>\u0427\u0438\u0442\u0430\u0435\u043c\u044b\u0439 \u043c\u0430\u0440\u0448\u0440\u0443\u0442: endpoint \u043a\u0430\u043a \u0441\u0442\u0440\u043e\u043a\u0430<\/h3>\n<p>redb.Route \u2014 \u044d\u0442\u043e\u00a0<a href=\"https:\/\/redb.ru\/articles\" rel=\"noopener noreferrer nofollow\">Apache Camel \u043f\u043e\u0434 .NET<\/a>: \u043c\u0430\u0440\u0448\u0440\u0443\u0442 \u043e\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u043a\u0430\u043a\u00a0<code>From \u2192 \u2026 \u2192 To<\/code>, \u0430 endpoint \u2014 \u044d\u0442\u043e URI-\u0441\u0442\u0440\u043e\u043a\u0430. \u041a\u043e\u043d\u043d\u0435\u043a\u0442\u043e\u0440 AS2 \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u0442 \u0434\u0432\u0435 \u0441\u0445\u0435\u043c\u044b,\u00a0<code>as2<\/code>\u00a0(HTTP) \u0438\u00a0<code>as2s<\/code>\u00a0(HTTPS), \u0438 \u043e\u043d\u0438 \u0447\u0438\u0442\u0430\u044e\u0442\u0441\u044f \u043a\u0430\u043a \u043f\u0440\u0435\u0434\u043b\u043e\u0436\u0435\u043d\u0438\u0435:<\/p>\n<pre><code>as2s:\/\/partner.example.com\/as2?connectionFactory=walmart          # \u043a\u043e\u043c\u0443 \u043e\u0442\u043f\u0440\u0430\u0432\u043b\u044f\u0435\u043cas2:\/inbound\/orders?host=0.0.0.0&amp;port=4080&amp;connectionFactory=walmart   # \u0433\u0434\u0435 \u043f\u0440\u0438\u043d\u0438\u043c\u0430\u0435\u043cas2:\/as2\/mdn?host=0.0.0.0&amp;port=4081&amp;mode=mdn&amp;connectionFactory=walmart # \u043a\u0443\u0434\u0430 \u043f\u0430\u0440\u0442\u043d\u0451\u0440 \u0448\u043b\u0451\u0442 \u0430\u0441\u0438\u043d\u0445\u0440\u043e\u043d\u043d\u044b\u0439 MDN<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><img style=\"width:87px;height:14px;object-fit:cover;object-position:left;\"\/><\/a><\/div><\/pre>\n<p>\u041f\u043e URI \u0441\u0440\u0430\u0437\u0443 \u0432\u0438\u0434\u043d\u043e \u043d\u0430\u043c\u0435\u0440\u0435\u043d\u0438\u0435: \u043a\u0443\u0434\u0430 \u0438\u0434\u0451\u043c, \u043d\u0430 \u043a\u0430\u043a\u043e\u043c \u043f\u043e\u0440\u0442\u0443 \u0441\u043b\u0443\u0448\u0430\u0435\u043c, \u043a\u0430\u043a\u043e\u0439 \u043f\u0430\u0440\u0442\u043d\u0451\u0440. \u0421\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u044b \u0438 \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c\u044b \u0432 \u0441\u0442\u0440\u043e\u043a\u0435 \u043d\u0435 \u0436\u0438\u0432\u0443\u0442 \u2014 \u0438\u043c \u0442\u0430\u043c \u043d\u0435 \u043c\u0435\u0441\u0442\u043e. \u0414\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u0435\u0441\u0442\u044c \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u0430\u044f \u0441\u0443\u0449\u043d\u043e\u0441\u0442\u044c.<\/p>\n<h3>\u041f\u0430\u0440\u0442\u043d\u0451\u0440 \u2014 \u043e\u0434\u0438\u043d \u043e\u0431\u044a\u0435\u043a\u0442, \u0430 \u043d\u0435 \u0440\u043e\u0441\u0441\u044b\u043f\u044c \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043e\u0432<\/h3>\n<p>\u041e\u0431\u043c\u0435\u043d \u043f\u043e AS2 \u2014 \u044d\u0442\u043e \u0432\u0441\u0435\u0433\u0434\u0430 \u0434\u043e\u0433\u043e\u0432\u043e\u0440\u0451\u043d\u043d\u043e\u0441\u0442\u044c \u0434\u0432\u0443\u0445 \u0441\u0442\u043e\u0440\u043e\u043d: \u0447\u044c\u0438 \u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u044b, \u043a\u0430\u043a\u0438\u0435 AS2-\u0438\u0434\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0440\u044b, \u0447\u0442\u043e \u043f\u043e\u0434\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u043c \u0438 \u0447\u0435\u043c \u0448\u0438\u0444\u0440\u0443\u0435\u043c, \u043a\u0430\u043a\u043e\u0439 \u0440\u0435\u0436\u0438\u043c MDN. \u0412\u0441\u0451 \u044d\u0442\u043e \u2014\u00a0<code>As2ConnectionFactory<\/code>, \u0437\u0430\u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0439 \u0432 \u0440\u0435\u0435\u0441\u0442\u0440\u0435 \u043e\u0434\u0438\u043d \u0440\u0430\u0437 \u043f\u043e \u0438\u043c\u0435\u043d\u0438:<\/p>\n<pre><code>context.AddToRegistry(\"walmart\", new As2ConnectionFactory{    OurCertificate     = ourPfx,     \/\/ \u043d\u0430\u0448 \u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442 \u0441 \u041f\u0420\u0418\u0412\u0410\u0422\u041d\u042b\u041c \u043a\u043b\u044e\u0447\u043e\u043c \u2014 \u043f\u043e\u0434\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u0442 \u0438\u0441\u0445\u043e\u0434\u044f\u0449\u0435\u0435, \u0440\u0430\u0441\u0448\u0438\u0444\u0440\u043e\u0432\u044b\u0432\u0430\u0435\u0442 \u0432\u0445\u043e\u0434\u044f\u0449\u0435\u0435    PartnerCertificate = theirCer,   \/\/ \u043f\u0443\u0431\u043b\u0438\u0447\u043d\u044b\u0439 \u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442 \u043f\u0430\u0440\u0442\u043d\u0451\u0440\u0430 \u2014 \u0448\u0438\u0444\u0440\u0443\u0435\u0442 \u0438\u0441\u0445\u043e\u0434\u044f\u0449\u0435\u0435, \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u0442 \u0438\u0445 \u043f\u043e\u0434\u043f\u0438\u0441\u044c    As2From = \"OUR-AS2-ID\",    As2To   = \"WALMART-AS2-ID\",    PartnerUrl = \"https:\/\/partner.example.com\/as2\",    \/\/ \u041f\u0440\u043e\u0444\u0438\u043b\u044c \u043e\u0431\u043c\u0435\u043d\u0430 \u2014 \u0442\u043e, \u043e \u0447\u0451\u043c \u0434\u043e\u0433\u043e\u0432\u043e\u0440\u0438\u043b\u0438\u0441\u044c    Sign = true, Encrypt = true, Compress = false,    SignAlg = \"sha-256\", EncryptAlg = \"aes-128-cbc\",    SignedMdn = true, MdnMode = As2MdnMode.Sync,});<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><img style=\"width:14px;height:14px;object-fit:cover;object-position:left;\"\/><\/a><\/div><\/pre>\n<p>\u041c\u0430\u0440\u0448\u0440\u0443\u0442\u044b \u0441\u0441\u044b\u043b\u0430\u044e\u0442\u0441\u044f \u043d\u0430 \u043f\u0430\u0440\u0442\u043d\u0451\u0440\u0430 \u043f\u043e \u0438\u043c\u0435\u043d\u0438 \u2014\u00a0<code>?connectionFactory=walmart<\/code>\u00a0\u0432 URI \u0438\u043b\u0438\u00a0<code>.ConnectionFactory(\"walmart\")<\/code>\u00a0\u0432 fluent-DSL. \u0414\u043e\u0431\u0430\u0432\u0438\u043b\u0438 \u0432\u0442\u043e\u0440\u043e\u0433\u043e \u043f\u0430\u0440\u0442\u043d\u0451\u0440\u0430 \u2014 \u0437\u0430\u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0438\u0440\u043e\u0432\u0430\u043b\u0438 \u0435\u0449\u0451 \u043e\u0434\u0438\u043d \u043e\u0431\u044a\u0435\u043a\u0442, URI \u043c\u0430\u0440\u0448\u0440\u0443\u0442\u0430 \u043d\u0435 \u043c\u0435\u043d\u044f\u0435\u0442\u0441\u044f. \u0421\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u044b \u0432\u0435\u0440\u0441\u0438\u043e\u043d\u0438\u0440\u0443\u044e\u0442\u0441\u044f \u0432\u043c\u0435\u0441\u0442\u0435 \u0441 \u0432\u0430\u0448\u0438\u043c \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435\u043c, \u0430 \u043d\u0435 \u043b\u0435\u0436\u0430\u0442 \u0432 keystore \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u043e\u0433\u043e \u0448\u043b\u044e\u0437\u0430, \u043e \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u043e\u0432\u0430\u043d\u0438\u0438 \u043a\u043e\u0442\u043e\u0440\u043e\u0433\u043e \u0437\u043d\u0430\u0435\u0442 \u043e\u0434\u0438\u043d \u0447\u0435\u043b\u043e\u0432\u0435\u043a \u0432 \u043a\u043e\u043c\u0430\u043d\u0434\u0435.<\/p>\n<h3>\u041e\u0434\u0438\u043d \u043c\u0430\u0440\u0448\u0440\u0443\u0442 \u2014 \u0442\u0440\u0438 \u043e\u043a\u0440\u0443\u0436\u0435\u043d\u0438\u044f<\/h3>\n<p>URI endpoint&#8217;\u0430 \u2014 \u0441\u0442\u0440\u043e\u043a\u0430, \u0430 \u0432 \u0441\u0442\u0440\u043e\u043a\u0435 \u0440\u0430\u0431\u043e\u0442\u0430\u044e\u0442 \u043f\u043b\u0435\u0439\u0441\u0445\u043e\u043b\u0434\u0435\u0440\u044b\u00a0<code>{{\u043a\u043b\u044e\u0447}}<\/code>, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 redb.Route \u043f\u043e\u0434\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u0438\u0437\u00a0<code>IConfiguration<\/code>\u00a0\u043d\u0430 \u044d\u0442\u0430\u043f\u0435 \u0441\u0431\u043e\u0440\u043a\u0438 \u043c\u0430\u0440\u0448\u0440\u0443\u0442\u0430. \u041f\u0430\u0440\u0442\u043d\u0451\u0440\u0441\u043a\u0438\u0439 \u0430\u0434\u0440\u0435\u0441 \u0432 dev, staging \u0438 prod \u0440\u0430\u0437\u043d\u044b\u0439 \u2014 \u043d\u043e \u043c\u0430\u0440\u0448\u0440\u0443\u0442 \u043e\u0434\u0438\u043d:<\/p>\n<pre><code>From(\"direct:\/\/outbound\")    .To(As2.Send(\"{{walmart.as2.url}}\").ConnectionFactory(\"walmart\"));<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><img style=\"width:14px;height:14px;object-fit:cover;object-position:left;\"\/><\/a><\/div><\/pre>\n<pre><code># appsettings.Development.json \u2192 \"walmart.as2.url\": \"https:\/\/sandbox.partner\/as2\"# appsettings.Production.json  \u2192 \"walmart.as2.url\": \"https:\/\/edi.partner.com\/as2\"<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><img style=\"width:14px;height:14px;object-fit:cover;object-position:left;\"\/><\/a><\/div><\/pre>\n<p>\u0425\u043e\u0441\u0442, \u043f\u043e\u0440\u0442 \u043f\u0440\u0438\u0451\u043c\u043d\u0438\u043a\u0430, \u0438\u043c\u044f \u043f\u0430\u0440\u0442\u043d\u0451\u0440\u0430 \u0432\u044b\u043d\u043e\u0441\u044f\u0442\u0441\u044f \u0432 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044e, \u0430 \u043d\u0435 \u0445\u0430\u0440\u0434\u043a\u043e\u0434\u044f\u0442\u0441\u044f \u0432 \u043c\u0430\u0440\u0448\u0440\u0443\u0442. \u0421\u0435\u043a\u0440\u0435\u0442\u044b \u2014 \u043f\u0430\u0440\u043e\u043b\u044c \u043e\u0442 PFX \u2014 \u043f\u0440\u0438\u0445\u043e\u0434\u044f\u0442 \u0438\u0437 \u0442\u043e\u0433\u043e \u0436\u0435 \u0441\u043b\u043e\u044f (\u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0435 \u043e\u043a\u0440\u0443\u0436\u0435\u043d\u0438\u044f, user-secrets) \u0438 \u043d\u0435 \u043e\u0441\u0435\u0434\u0430\u044e\u0442 \u0432 \u0438\u0441\u0445\u043e\u0434\u043d\u0438\u043a\u0430\u0445. \u041e\u0434\u0438\u043d \u0438 \u0442\u043e\u0442 \u0436\u0435 \u0441\u043e\u0431\u0440\u0430\u043d\u043d\u044b\u0439 \u043e\u0431\u0440\u0430\u0437 \u0435\u0434\u0435\u0442 \u0438\u0437 dev \u0432 prod, \u043c\u0435\u043d\u044f\u0435\u0442\u0441\u044f \u0442\u043e\u043b\u044c\u043a\u043e \u043a\u043e\u043d\u0444\u0438\u0433.<\/p>\n<h3>\u041e\u0442\u043f\u0440\u0430\u0432\u043a\u0430: \u043f\u043e\u0434\u043f\u0438\u0441\u0430\u043b\u0438, \u0437\u0430\u0448\u0438\u0444\u0440\u043e\u0432\u0430\u043b\u0438, \u043f\u043e\u043b\u0443\u0447\u0438\u043b\u0438 \u0440\u0430\u0441\u043f\u0438\u0441\u043a\u0443<\/h3>\n<pre><code>From(\"direct:\/\/outbound\")    .To(As2.Send(\"https:\/\/partner.example.com\/as2\").ConnectionFactory(\"walmart\"));<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><img style=\"width:14px;height:14px;object-fit:cover;object-position:left;\"\/><\/a><\/div><\/pre>\n<p>\u0417\u0430 \u044d\u0442\u043e\u0439 \u043e\u0434\u043d\u043e\u0439 \u0441\u0442\u0440\u043e\u043a\u043e\u0439 \u2014 \u0441\u0436\u0430\u0442\u0438\u0435 (\u0435\u0441\u043b\u0438 \u0432\u043a\u043b\u044e\u0447\u0435\u043d\u043e), \u043f\u043e\u0434\u043f\u0438\u0441\u044c \u0432\u0430\u0448\u0438\u043c \u043a\u043b\u044e\u0447\u043e\u043c, \u0448\u0438\u0444\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u043c \u043f\u0430\u0440\u0442\u043d\u0451\u0440\u0430, POST \u0438 \u0440\u0430\u0437\u0431\u043e\u0440 \u043e\u0442\u0432\u0435\u0442\u043d\u043e\u0433\u043e MDN. \u0420\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u043e\u0431\u043c\u0435\u043d\u0430 \u043a\u043e\u043d\u043d\u0435\u043a\u0442\u043e\u0440 \u043a\u043b\u0430\u0434\u0451\u0442 \u043d\u0430\u00a0<code>exchange.Out<\/code>, \u0447\u0442\u043e\u0431\u044b \u043c\u0430\u0440\u0448\u0440\u0443\u0442 \u043c\u043e\u0433 \u043f\u0440\u0438\u043d\u044f\u0442\u044c \u0440\u0435\u0448\u0435\u043d\u0438\u0435:<\/p>\n<div>\n<div class=\"table\">\n<table>\n<tbody>\n<tr>\n<th>\n<p align=\"left\">\u0417\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u043a \u043d\u0430\u00a0<code>exchange.Out<\/code><\/p>\n<\/th>\n<th>\n<p align=\"left\">\u0427\u0442\u043e \u0437\u043d\u0430\u0447\u0438\u0442<\/p>\n<\/th>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\"><code>redbAs2.mdnDisposition<\/code><\/p>\n<\/td>\n<td>\n<p align=\"left\">\u0432\u0435\u0440\u0434\u0438\u043a\u0442 \u043f\u0430\u0440\u0442\u043d\u0451\u0440\u0430, \u043d\u0430\u043f\u0440.\u00a0<code>automatic-action\/MDN-sent-automatically; processed<\/code><\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\"><code>redbAs2.signatureValid<\/code><\/p>\n<\/td>\n<td>\n<p align=\"left\"><code>bool<\/code>\u00a0\u2014 \u043f\u043e\u0434\u043f\u0438\u0441\u044c MDN \u043f\u0440\u043e\u0432\u0435\u0440\u0435\u043d\u0430<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\"><code>redbAs2.mdnMicMatch<\/code><\/p>\n<\/td>\n<td>\n<p align=\"left\"><code>bool<\/code>\u00a0\u2014 \u043f\u0430\u0440\u0442\u043d\u0451\u0440 \u043f\u043e\u043b\u0443\u0447\u0438\u043b \u0440\u043e\u0432\u043d\u043e \u0442\u043e, \u0447\u0442\u043e \u043c\u044b \u043e\u0442\u043f\u0440\u0430\u0432\u0438\u043b\u0438, \u0431\u0435\u0437 \u0438\u0441\u043a\u0430\u0436\u0435\u043d\u0438\u0439<\/p>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<p>\u0418 \u0442\u0443\u0442 \u0436\u0435, \u0432 \u0442\u043e\u043c \u0436\u0435 \u043c\u0430\u0440\u0448\u0440\u0443\u0442\u0435, \u0440\u0430\u0437\u0432\u0435\u0442\u0432\u043b\u044f\u0435\u043c\u0441\u044f \u043f\u043e \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0443:<\/p>\n<pre><code>From(\"direct:\/\/outbound\")    .To(As2.Send(\"https:\/\/partner\/as2\").ConnectionFactory(\"walmart\"))    .Choice()        .When(e =&gt; e.Out!.GetHeader&lt;bool&gt;(As2Headers.MdnMicMatch))            .Log(\"\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u043e \u0438 \u043f\u043e\u0434\u0442\u0432\u0435\u0440\u0436\u0434\u0435\u043d\u043e\")        .Otherwise()            .To(\"direct:\/\/delivery-alert\");   \/\/ MIC \u043d\u0435 \u0441\u043e\u0448\u0451\u043b\u0441\u044f \u0438\u043b\u0438 \u043e\u0442\u0440\u0438\u0446\u0430\u0442\u0435\u043b\u044c\u043d\u044b\u0439 MDN \u2014 \u044d\u0441\u043a\u0430\u043b\u0430\u0446\u0438\u044f<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><img style=\"width:14px;height:14px;object-fit:cover;object-position:left;\"\/><\/a><\/div><\/pre>\n<p>\u041a\u043e\u043d\u043d\u0435\u043a\u0442\u043e\u0440 \u043d\u0435 \u0431\u0440\u043e\u0441\u0430\u0435\u0442 \u0438\u0441\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435 \u043d\u0430 \u043e\u0442\u0440\u0438\u0446\u0430\u0442\u0435\u043b\u044c\u043d\u044b\u0439 MDN \u0438\u043b\u0438 \u0440\u0430\u0441\u0445\u043e\u0436\u0434\u0435\u043d\u0438\u0435 MIC \u2014 \u043e\u043d \u0432\u044b\u043a\u043b\u0430\u0434\u044b\u0432\u0430\u0435\u0442 \u0444\u0430\u043a\u0442 \u0438 \u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u0440\u0435\u0448\u0435\u043d\u0438\u0435 \u043c\u0430\u0440\u0448\u0440\u0443\u0442\u0443. \u0414\u043b\u044f \u043e\u0434\u043d\u043e\u0433\u043e \u043f\u0430\u0440\u0442\u043d\u0451\u0440\u0430 \u0440\u0430\u0441\u0445\u043e\u0436\u0434\u0435\u043d\u0438\u0435 MIC \u2014 \u043f\u043e\u0432\u043e\u0434 \u043d\u0435\u043c\u0435\u0434\u043b\u0435\u043d\u043d\u043e \u043f\u043e\u0434\u043d\u044f\u0442\u044c \u0442\u0440\u0435\u0432\u043e\u0433\u0443, \u0434\u043b\u044f \u0434\u0440\u0443\u0433\u043e\u0433\u043e \u2014 \u0437\u0430\u043f\u0438\u0441\u0430\u0442\u044c \u0432 \u0436\u0443\u0440\u043d\u0430\u043b \u0438 \u043f\u0440\u043e\u0434\u043e\u043b\u0436\u0438\u0442\u044c. \u042d\u0442\u043e \u043f\u043e\u043b\u0438\u0442\u0438\u043a\u0430 \u0432\u0430\u0448\u0435\u0433\u043e \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0430, \u0430 \u043d\u0435 \u0436\u0451\u0441\u0442\u043a\u043e \u0437\u0430\u0448\u0438\u0442\u043e\u0435 \u043f\u043e\u0432\u0435\u0434\u0435\u043d\u0438\u0435 \u0448\u043b\u044e\u0437\u0430.<\/p>\n<h3>\u041f\u0440\u0438\u0451\u043c: AS2-\u0441\u0435\u0440\u0432\u0435\u0440 \u043a\u0430\u043a \u0438\u0441\u0442\u043e\u0447\u043d\u0438\u043a \u043c\u0430\u0440\u0448\u0440\u0443\u0442\u0430<\/h3>\n<pre><code>From(As2.Receive(\"\/inbound\/orders\").Host(\"0.0.0.0\").Port(4080).ConnectionFactory(\"walmart\"))    .Unmarshal(...)                 \/\/ \u0440\u0430\u0437\u0431\u043e\u0440 EDI \u2014 \u0432\u0430\u0448 \u0444\u043e\u0440\u043c\u0430\u0442    .To(\"direct:\/\/process-order\");<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><img style=\"width:14px;height:14px;object-fit:cover;object-position:left;\"\/><\/a><\/div><\/pre>\n<p><code>From(As2.Receive(...))<\/code>\u00a0\u043f\u043e\u0434\u043d\u0438\u043c\u0430\u0435\u0442 AS2-\u0441\u0435\u0440\u0432\u0435\u0440. \u041f\u0440\u0438\u0448\u0435\u0434\u0448\u0438\u0439 \u043a\u043e\u043d\u0432\u0435\u0440\u0442 \u043a\u043e\u043d\u043d\u0435\u043a\u0442\u043e\u0440 \u0440\u0430\u0441\u0448\u0438\u0444\u0440\u043e\u0432\u044b\u0432\u0430\u0435\u0442 \u0432\u0430\u0448\u0438\u043c \u043f\u0440\u0438\u0432\u0430\u0442\u043d\u044b\u043c \u043a\u043b\u044e\u0447\u043e\u043c, \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u0442 \u043f\u043e\u0434\u043f\u0438\u0441\u044c \u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u043c \u043f\u0430\u0440\u0442\u043d\u0451\u0440\u0430, \u0440\u0430\u0441\u043f\u0430\u043a\u043e\u0432\u044b\u0432\u0430\u0435\u0442 \u2014 \u0438 \u0432 \u043c\u0430\u0440\u0448\u0440\u0443\u0442 \u043f\u043e\u043f\u0430\u0434\u0430\u0435\u0442\u00a0<strong>\u0447\u0438\u0441\u0442\u044b\u0439 \u0431\u0438\u0437\u043d\u0435\u0441-\u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442<\/strong>. \u0415\u0433\u043e \u0440\u0435\u0430\u043b\u044c\u043d\u044b\u0439 \u0442\u0438\u043f \u043b\u0435\u0436\u0438\u0442 \u043d\u0430\u00a0<code>Message.ContentType<\/code>\u00a0(\u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440,\u00a0<code>application\/edi-x12<\/code>), \u0430 \u043c\u0435\u0442\u0430\u0434\u0430\u043d\u043d\u044b\u0435 \u043e\u0431\u043c\u0435\u043d\u0430 \u2014 \u043f\u043e\u0434\u00a0<code>redbAs2.*<\/code>:<\/p>\n<div>\n<div class=\"table\">\n<table>\n<tbody>\n<tr>\n<th>\n<p align=\"left\">\u0417\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u043a<\/p>\n<\/th>\n<th>\n<p align=\"left\">\u0427\u0442\u043e \u0437\u043d\u0430\u0447\u0438\u0442<\/p>\n<\/th>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\"><code>redbAs2.mic<\/code>\u00a0\/\u00a0<code>redbAs2.micalg<\/code><\/p>\n<\/td>\n<td>\n<p align=\"left\">\u0432\u044b\u0447\u0438\u0441\u043b\u0435\u043d\u043d\u044b\u0439 Message Integrity Check \u0438 \u0435\u0433\u043e \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\"><code>redbAs2.signatureValid<\/code><\/p>\n<\/td>\n<td>\n<p align=\"left\">\u0432\u0445\u043e\u0434\u044f\u0449\u0430\u044f \u043f\u043e\u0434\u043f\u0438\u0441\u044c \u043f\u0440\u043e\u0432\u0435\u0440\u0435\u043d\u0430 \u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u043c \u043f\u0430\u0440\u0442\u043d\u0451\u0440\u0430<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\"><code>redbAs2.remoteAddress<\/code><\/p>\n<\/td>\n<td>\n<p align=\"left\">IP \u043e\u0442\u043f\u0440\u0430\u0432\u0438\u0442\u0435\u043b\u044f<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\"><code>redbAs2.partner<\/code><\/p>\n<\/td>\n<td>\n<p align=\"left\">\u0438\u043c\u044f \u0441\u043e\u043f\u043e\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u043d\u043e\u0433\u043e\u00a0<code>connectionFactory<\/code><\/p>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<p>\u0421\u0438\u043d\u0445\u0440\u043e\u043d\u043d\u044b\u0439 MDN \u043a\u043e\u043d\u043d\u0435\u043a\u0442\u043e\u0440 \u0444\u043e\u0440\u043c\u0438\u0440\u0443\u0435\u0442 \u0438 \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u0441\u0430\u043c. AS2-\u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043a\u0438 \u0441\u0430\u043c\u043e\u0433\u043e \u043f\u0440\u043e\u0442\u043e\u043a\u043e\u043b\u0430 (<code>AS2-From<\/code>,\u00a0<code>AS2-To<\/code>,\u00a0<code>Message-ID<\/code>,\u00a0<code>Subject<\/code>) \u043a\u043b\u0430\u0434\u0443\u0442\u0441\u044f \u043d\u0430 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0435 \u043a\u0430\u043a \u0435\u0441\u0442\u044c. \u041e\u0431\u0451\u0440\u0442\u043e\u0447\u043d\u044b\u0439\u00a0<code>Content-Type<\/code>\u00a0S\/MIME-\u043a\u043e\u043d\u0432\u0435\u0440\u0442\u0430 \u0432 \u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043a\u0438\u00a0<strong>\u043d\u0435<\/strong>\u00a0\u043f\u0440\u043e\u0441\u0430\u0447\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u2014 \u043c\u0430\u0440\u0448\u0440\u0443\u0442 \u0432\u0438\u0434\u0438\u0442 \u0442\u0438\u043f \u0440\u0435\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430, \u0430 \u043d\u0435 \u0442\u0440\u0430\u043d\u0441\u043f\u043e\u0440\u0442\u043d\u0443\u044e \u043e\u0431\u0451\u0440\u0442\u043a\u0443.<\/p>\n<h3>\u0410\u0441\u0438\u043d\u0445\u0440\u043e\u043d\u043d\u044b\u0439 MDN<\/h3>\n<p>\u041a\u0440\u0443\u043f\u043d\u044b\u0435 \u043f\u0430\u0440\u0442\u043d\u0451\u0440\u044b \u0447\u0430\u0441\u0442\u043e \u0442\u0440\u0435\u0431\u0443\u044e\u0442 \u0430\u0441\u0438\u043d\u0445\u0440\u043e\u043d\u043d\u0443\u044e \u0440\u0430\u0441\u043f\u0438\u0441\u043a\u0443: \u043f\u0440\u0438\u043d\u044f\u043b\u0438 \u2014 \u043e\u0442\u0432\u0435\u0442\u0438\u043b\u0438 200, \u0430 \u043f\u043e\u0434\u043f\u0438\u0441\u0430\u043d\u043d\u044b\u0439 MDN \u043f\u0440\u0438\u0441\u043b\u0430\u043b\u0438 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u043c POST-\u043e\u043c \u043f\u043e\u0437\u0436\u0435. \u041e\u0442\u043f\u0440\u0430\u0432\u0438\u0442\u0435\u043b\u044c \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0438\u0440\u0443\u0435\u0442 \u0438\u0441\u0445\u043e\u0434\u044f\u0449\u0438\u0439\u00a0<code>Message-ID<\/code>, \u0430 \u0432\u0445\u043e\u0434\u044f\u0449\u0438\u0439 MDN \u043a\u043e\u0440\u0440\u0435\u043b\u0438\u0440\u0443\u0435\u0442\u0441\u044f \u043f\u043e\u00a0<code>Original-Message-ID<\/code>:<\/p>\n<pre><code>\/\/ \u0412 \u043f\u0440\u043e\u0444\u0438\u043b\u0435 \u043f\u0430\u0440\u0442\u043d\u0451\u0440\u0430MdnMode = As2MdnMode.Async,AsyncMdnUrl = \"https:\/\/our-host:4081\/as2\/mdn\",\/\/ \u041c\u0430\u0440\u0448\u0440\u0443\u0442\u044bFrom(As2.Receive(\"\/inbound\").Host(\"0.0.0.0\").Port(4080).ConnectionFactory(\"walmart\"))    .To(\"direct:\/\/process\");From(As2.ReceiveMdn(\"\/as2\/mdn\").Host(\"0.0.0.0\").Port(4081).ConnectionFactory(\"walmart\"))    .Process(e =&gt;    {        var original = e.In.GetHeader&lt;string&gt;(As2Headers.MessageId);   \/\/ \u043a\u0430\u043a\u043e\u0439 \u043d\u0430\u0448 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442 \u043f\u043e\u0434\u0442\u0432\u0435\u0440\u0436\u0434\u0451\u043d        var ok = e.In.GetHeader&lt;bool&gt;(As2Headers.MdnMicMatch);         \/\/ \u0438 \u043f\u043e\u0434\u0442\u0432\u0435\u0440\u0436\u0434\u0451\u043d \u043b\u0438 \u0446\u0435\u043b\u044b\u043c    });<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><img style=\"width:14px;height:14px;object-fit:cover;object-position:left;\"\/><\/a><\/div><\/pre>\n<p>\u041e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0439 endpoint \u043f\u043e\u0434 \u0432\u0445\u043e\u0434\u044f\u0449\u0438\u0435 MDN \u2014 \u044d\u0442\u043e \u0442\u043e\u0436\u0435 \u043f\u0440\u043e\u0441\u0442\u043e\u00a0<code>From<\/code>\u00a0\u0432 \u043c\u0430\u0440\u0448\u0440\u0443\u0442\u0435, \u0438 \u043f\u0440\u0438\u0445\u043e\u0434\u044f\u0449\u0430\u044f \u0440\u0430\u0441\u043f\u0438\u0441\u043a\u0430 \u0442\u0430\u043a \u0436\u0435 \u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u0441\u044f \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0435\u043c, \u0441 \u043a\u043e\u0442\u043e\u0440\u044b\u043c \u043c\u043e\u0436\u043d\u043e \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c: \u043e\u0431\u043d\u043e\u0432\u0438\u0442\u044c \u0441\u0442\u0430\u0442\u0443\u0441 \u0437\u0430\u043a\u0430\u0437\u0430, \u0441\u043d\u044f\u0442\u044c \u0441 \u0440\u0435\u0442\u0440\u0430\u044f, \u0437\u0430\u043a\u0440\u044b\u0442\u044c \u0441\u0430\u0433\u0443.<\/p>\n<h3>\u041c\u0430\u0442\u0440\u0438\u0446\u0430 \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c\u043e\u0432<\/h3>\n<p>\u041f\u0430\u0440\u0442\u043d\u0451\u0440\u044b \u0434\u043e\u0433\u043e\u0432\u0430\u0440\u0438\u0432\u0430\u044e\u0442\u0441\u044f \u043e \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u044b\u0445 \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c\u0430\u0445, \u0438 \u043a\u043e\u043d\u043d\u0435\u043a\u0442\u043e\u0440 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442 \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u044b\u0439 \u043d\u0430\u0431\u043e\u0440:<\/p>\n<div>\n<div class=\"table\">\n<table>\n<tbody>\n<tr>\n<th>\n<p align=\"left\">\u041f\u0430\u0440\u0430\u043c\u0435\u0442\u0440<\/p>\n<\/th>\n<th>\n<p align=\"left\">\u0417\u043d\u0430\u0447\u0435\u043d\u0438\u044f<\/p>\n<\/th>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\"><code>SignAlg<\/code><\/p>\n<\/td>\n<td>\n<p align=\"left\"><code>sha-1<\/code>,\u00a0<code>sha-256<\/code>\u00a0(\u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e),\u00a0<code>sha-384<\/code>,\u00a0<code>sha-512<\/code><\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\"><code>EncryptAlg<\/code><\/p>\n<\/td>\n<td>\n<p align=\"left\"><code>aes-128-cbc<\/code>\u00a0(\u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e),\u00a0<code>aes-192-cbc<\/code>,\u00a0<code>aes-256-cbc<\/code>,\u00a0<code>3des<\/code><\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\"><code>Compress<\/code><\/p>\n<\/td>\n<td>\n<p align=\"left\"><code>true<\/code>\u00a0\/\u00a0<code>false<\/code>\u00a0(\u0441\u0436\u0430\u0442\u0438\u0435 \u043f\u043e RFC 3274)<\/p>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<p>\u041d\u0435\u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u043c\u044b\u0439 \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c \u043e\u0442\u0432\u0430\u043b\u0438\u0432\u0430\u0435\u0442\u0441\u044f\u00a0<strong>\u043d\u0430 \u044d\u0442\u0430\u043f\u0435 \u0441\u0431\u043e\u0440\u043a\u0438 \u043c\u0430\u0440\u0448\u0440\u0443\u0442\u0430<\/strong>, \u0430 \u043d\u0435 \u0432 \u0440\u0430\u043d\u0442\u0430\u0439\u043c\u0435 \u043d\u0430 \u043f\u0435\u0440\u0432\u043e\u043c \u0436\u0435 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0438 \u043f\u0430\u0440\u0442\u043d\u0451\u0440\u0443. \u041e\u0448\u0438\u0431\u043a\u0430 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438 \u0432\u0438\u0434\u043d\u0430 \u043f\u0440\u0438 \u0441\u0442\u0430\u0440\u0442\u0435, \u0430 \u043d\u0435 \u0432 \u0442\u0440\u0438 \u0447\u0430\u0441\u0430 \u043d\u043e\u0447\u0438 \u043f\u043e \u043b\u043e\u0433\u0430\u043c \u043e\u0442\u0431\u043e\u0439\u043d\u0438\u043a\u0430.<\/p>\n<p>\u041a\u0440\u0438\u043f\u0442\u043e\u0433\u0440\u0430\u0444\u0438\u044f \u043f\u043e\u0434 \u043a\u0430\u043f\u043e\u0442\u043e\u043c \u2014 MimeKit (\u043d\u0430 Bouncy Castle). \u042d\u0442\u043e \u0442\u043e\u0442 \u0436\u0435 \u043a\u0440\u0438\u043f\u0442\u043e\u0433\u0440\u0430\u0444\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u0444\u0443\u043d\u0434\u0430\u043c\u0435\u043d\u0442, \u043d\u0430 \u043a\u043e\u0442\u043e\u0440\u043e\u043c \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0432\u0435\u0441\u044c \u043c\u0438\u0440 AS2: \u0438 Apache camel-as2, \u0438 OpenAS2, \u0438 Mendelson \u0441\u0442\u043e\u044f\u0442 \u043d\u0430 Bouncy Castle. \u041c\u044b \u0441\u0430\u0434\u0438\u043c\u0441\u044f \u043d\u0430 \u043e\u0431\u0449\u0443\u044e \u043e\u0441\u043d\u043e\u0432\u0443, \u043d\u0430 \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u0441\u0442\u043e\u0440\u043e\u043d\u044b \u0438 \u0438\u043d\u0442\u0435\u0440\u043e\u043f\u044f\u0442\u0441\u044f, \u0430 \u043d\u0435 \u0438\u0437\u043e\u0431\u0440\u0435\u0442\u0430\u0435\u043c \u0441\u0432\u043e\u0439 S\/MIME.<\/p>\n<h3>\u0427\u0435\u043c \u044d\u0442\u043e \u043e\u0442\u043b\u0438\u0447\u0430\u0435\u0442\u0441\u044f \u043e\u0442 \u0448\u043b\u044e\u0437\u0430<\/h3>\n<p>AS2 \u0432 .NET-\u043f\u0440\u043e\u0435\u043a\u0442\u0435 \u0437\u0430\u043a\u0440\u044b\u0432\u0430\u043b\u0438 \u0442\u0440\u0435\u043c\u044f \u0441\u043f\u043e\u0441\u043e\u0431\u0430\u043c\u0438. \u0420\u0430\u0437\u043d\u0438\u0446\u0430 \u043d\u0435 \u0432 \u0442\u043e\u043c, \u00ab\u0443\u043c\u0435\u0435\u0442 \u0438\u043b\u0438 \u043d\u0435\u0442\u00bb \u2014 \u0443\u043c\u0435\u044e\u0442 \u0432\u0441\u0435, \u043f\u0440\u043e\u0442\u043e\u043a\u043e\u043b \u043e\u0434\u0438\u043d. \u0420\u0430\u0437\u043d\u0438\u0446\u0430 \u0432 \u0442\u043e\u043c, \u0433\u0434\u0435 \u0436\u0438\u0432\u0451\u0442 AS2 \u043e\u0442\u043d\u043e\u0441\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0432\u0430\u0448\u0435\u0439 \u043b\u043e\u0433\u0438\u043a\u0438.<\/p>\n<div>\n<div class=\"table\">\n<table>\n<tbody>\n<tr>\n<th>\n<p align=\"left\">\n<\/th>\n<th>\n<p align=\"left\">\u041a\u043e\u043c\u043c\u0435\u0440\u0447\u0435\u0441\u043a\u0438\u0439 \u0448\u043b\u044e\u0437<\/p>\n<\/th>\n<th>\n<p align=\"left\">Java-\u0441\u0435\u0440\u0432\u0435\u0440 (OpenAS2\/Mendelson)<\/p>\n<\/th>\n<th>\n<p align=\"left\"><a href=\"http:\/\/redb.Route.As\" rel=\"noopener noreferrer nofollow\">redb.Route.As<\/a>2<\/p>\n<\/th>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">\u041f\u0440\u043e\u0446\u0435\u0441\u0441<\/p>\n<\/td>\n<td>\n<p align=\"left\">\u043e\u0442\u0434\u0435\u043b\u044c\u043d\u0430\u044f \u043a\u043e\u0440\u043e\u0431\u043a\u0430<\/p>\n<\/td>\n<td>\n<p align=\"left\">\u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0439 JVM \u0440\u044f\u0434\u043e\u043c<\/p>\n<\/td>\n<td>\n<p align=\"left\">\u0432\u0430\u0448 .NET-\u043f\u0440\u043e\u0446\u0435\u0441\u0441<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">\u041f\u0440\u0438\u043d\u044f\u0442\u044b\u0439 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442<\/p>\n<\/td>\n<td>\n<p align=\"left\">\u0444\u0430\u0439\u043b \u0432 inbox-\u043a\u0430\u0442\u0430\u043b\u043e\u0433\u0435<\/p>\n<\/td>\n<td>\n<p align=\"left\">\u0444\u0430\u0439\u043b \u0432 inbox-\u043a\u0430\u0442\u0430\u043b\u043e\u0433\u0435<\/p>\n<\/td>\n<td>\n<p align=\"left\">\u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0435 \u0432 \u043c\u0430\u0440\u0448\u0440\u0443\u0442\u0435<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">\u041a\u0430\u043a \u0437\u0430\u0431\u0440\u0430\u0442\u044c<\/p>\n<\/td>\n<td>\n<p align=\"left\">\u0434\u0436\u043e\u0431\u0430-\u043f\u043e\u0434\u0431\u043e\u0440\u0449\u0438\u043a<\/p>\n<\/td>\n<td>\n<p align=\"left\">\u0434\u0436\u043e\u0431\u0430-\u043f\u043e\u0434\u0431\u043e\u0440\u0449\u0438\u043a<\/p>\n<\/td>\n<td>\n<p align=\"left\">\u0441\u0440\u0430\u0437\u0443 \u0432 pipeline<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">\u0414\u0435\u043f\u043b\u043e\u0439<\/p>\n<\/td>\n<td>\n<p align=\"left\">\u0441\u0432\u043e\u044f \u0438\u043d\u0441\u0442\u0430\u043b\u043b\u044f\u0446\u0438\u044f<\/p>\n<\/td>\n<td>\n<p align=\"left\">\u0441\u0432\u043e\u044f \u0438\u043d\u0441\u0442\u0430\u043b\u043b\u044f\u0446\u0438\u044f<\/p>\n<\/td>\n<td>\n<p align=\"left\">\u0432\u043c\u0435\u0441\u0442\u0435 \u0441 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435\u043c<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">\u041d\u0430\u0431\u043b\u044e\u0434\u0430\u0435\u043c\u043e\u0441\u0442\u044c<\/p>\n<\/td>\n<td>\n<p align=\"left\">\u0441\u0432\u043e\u044f \u043f\u0430\u043d\u0435\u043b\u044c<\/p>\n<\/td>\n<td>\n<p align=\"left\">\u043b\u043e\u0433\u0438 JVM<\/p>\n<\/td>\n<td>\n<p align=\"left\">\u043e\u0431\u0449\u0438\u0435 \u0442\u0440\u0435\u0439\u0441\u044b \u0438 \u0441\u0442\u0430\u0442\u0438\u0441\u0442\u0438\u043a\u0430<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">\u0414\u0430\u043b\u044c\u0448\u0435 \u043f\u043e \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0435<\/p>\n<\/td>\n<td>\n<p align=\"left\">\u0432\u043d\u0435 \u0448\u043b\u044e\u0437\u0430, \u0440\u0443\u043a\u0430\u043c\u0438<\/p>\n<\/td>\n<td>\n<p align=\"left\">\u0432\u043d\u0435 \u0441\u0435\u0440\u0432\u0435\u0440\u0430, \u0440\u0443\u043a\u0430\u043c\u0438<\/p>\n<\/td>\n<td>\n<p align=\"left\">\u0442\u0435 \u0436\u0435 EIP \u0432 \u0442\u043e\u043c \u0436\u0435 \u043c\u0430\u0440\u0448\u0440\u0443\u0442\u0435<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">\u041b\u0438\u0446\u0435\u043d\u0437\u0438\u044f<\/p>\n<\/td>\n<td>\n<p align=\"left\">\u043f\u043b\u0430\u0442\u043d\u0430\u044f<\/p>\n<\/td>\n<td>\n<p align=\"left\">\u043e\u0442\u043a\u0440\u044b\u0442\u0430\u044f<\/p>\n<\/td>\n<td>\n<p align=\"left\">\u043e\u0442\u043a\u0440\u044b\u0442\u0430\u044f, \u0431\u0435\u0437 \u043a\u043b\u044e\u0447\u0430<\/p>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<p>\u041e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0439 \u0448\u043b\u044e\u0437 \u043e\u043f\u0440\u0430\u0432\u0434\u0430\u043d, \u043a\u043e\u0433\u0434\u0430 AS2-\u043a\u043e\u043d\u0442\u0443\u0440 \u0441\u043e\u0437\u043d\u0430\u0442\u0435\u043b\u044c\u043d\u043e \u0432\u044b\u043d\u0435\u0441\u0435\u043d \u0432 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u0443\u044e \u0437\u043e\u043d\u0443 \u2014 \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0432 DMZ \u043f\u043e\u0434 \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435\u043c \u0434\u0440\u0443\u0433\u043e\u0439 \u043a\u043e\u043c\u0430\u043d\u0434\u044b. \u041a\u043e\u0433\u0434\u0430 \u0436\u0435 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442 \u0432\u0441\u0451 \u0440\u0430\u0432\u043d\u043e \u0443\u0445\u043e\u0434\u0438\u0442 \u0432 \u0432\u0430\u0448 .NET-\u0431\u044d\u043a\u0435\u043d\u0434 \u043d\u0430 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0443, \u043f\u0440\u043e\u043c\u0435\u0436\u0443\u0442\u043e\u0447\u043d\u0430\u044f \u043a\u043e\u0440\u043e\u0431\u043a\u0430 \u2014 \u044d\u0442\u043e \u043b\u0438\u0448\u043d\u0438\u0439 \u043f\u0440\u044b\u0436\u043e\u043a, \u043b\u0438\u0448\u043d\u0438\u0439 \u043a\u0430\u0442\u0430\u043b\u043e\u0433 \u0438 \u043b\u0438\u0448\u043d\u0438\u0439 \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442 \u0432 \u0441\u0445\u0435\u043c\u0435 \u0430\u0443\u0434\u0438\u0442\u0430.<\/p>\n<h3>\u0413\u0434\u0435 \u044d\u0442\u043e \u043f\u0440\u0438\u043c\u0435\u043d\u044f\u0435\u0442\u0441\u044f \u0438 \u043f\u043e\u0447\u0435\u043c\u0443 \u0438\u043c\u0435\u043d\u043d\u043e \u043d\u0430\u0442\u0438\u0432\u043d\u044b\u0439 \u043a\u043e\u043d\u043d\u0435\u043a\u0442\u043e\u0440<\/h3>\n<p>AS2 \u043d\u0443\u0436\u0435\u043d \u0442\u0430\u043c, \u0433\u0434\u0435 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442 \u043d\u0435\u0441\u0451\u0442 \u043e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u0441\u0442\u0432\u043e, \u0430 \u043f\u0430\u0440\u0442\u043d\u0451\u0440 \u0434\u0438\u043a\u0442\u0443\u0435\u0442 \u043a\u0430\u043d\u0430\u043b. \u041d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0442\u0438\u043f\u0438\u0447\u043d\u044b\u0445 \u0441\u0438\u0442\u0443\u0430\u0446\u0438\u0439.<\/p>\n<p><strong>\u041f\u043e\u0441\u0442\u0430\u0432\u0449\u0438\u043a \u0432 \u043a\u0440\u0443\u043f\u043d\u0443\u044e \u0440\u043e\u0437\u043d\u0438\u0446\u0443.<\/strong>\u00a0\u0427\u0442\u043e\u0431\u044b \u043e\u0442\u0433\u0440\u0443\u0436\u0430\u0442\u044c \u0432 Walmart, Target, Amazon Vendor, \u043f\u043e\u0441\u0442\u0430\u0432\u0449\u0438\u043a \u043e\u0431\u044f\u0437\u0430\u043d \u043f\u0440\u0438\u043d\u0438\u043c\u0430\u0442\u044c \u0437\u0430\u043a\u0430\u0437\u044b (850) \u0438 \u0441\u043b\u0430\u0442\u044c \u0441\u0447\u0435\u0442\u0430 (810) \u0438 ASN (856) \u043f\u043e AS2 \u0441 \u043f\u043e\u0434\u043f\u0438\u0441\u0430\u043d\u043d\u044b\u043c MDN. \u0420\u0430\u043d\u044c\u0448\u0435 \u043f\u043e\u0434 \u044d\u0442\u043e \u0441\u0442\u0430\u0432\u0438\u043b\u0438 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0439 \u0448\u043b\u044e\u0437; \u0442\u0435\u043f\u0435\u0440\u044c\u00a0<code>From(As2.Receive(...))<\/code>\u00a0\u043f\u0440\u0438\u043d\u0438\u043c\u0430\u0435\u0442 \u0437\u0430\u043a\u0430\u0437 \u043f\u0440\u044f\u043c\u043e \u0432 \u0442\u043e\u0442 \u043c\u0430\u0440\u0448\u0440\u0443\u0442, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0435\u0433\u043e \u0432\u0430\u043b\u0438\u0434\u0438\u0440\u0443\u0435\u0442 \u0438 \u043a\u043b\u0430\u0434\u0451\u0442 \u0432 \u0432\u0430\u0448\u0443 ERP.<\/p>\n<p><strong>3PL \u0438 \u043b\u043e\u0433\u0438\u0441\u0442\u0438\u043a\u0430.<\/strong>\u00a0\u0421\u043a\u043b\u0430\u0434 \u0438 \u043f\u0435\u0440\u0435\u0432\u043e\u0437\u0447\u0438\u043a \u043e\u0431\u043c\u0435\u043d\u0438\u0432\u0430\u044e\u0442\u0441\u044f \u0441\u0442\u0430\u0442\u0443\u0441\u0430\u043c\u0438 \u043e\u0442\u0433\u0440\u0443\u0437\u043a\u0438, \u043f\u043e\u0434\u0442\u0432\u0435\u0440\u0436\u0434\u0435\u043d\u0438\u044f\u043c\u0438 \u043f\u0440\u0438\u0451\u043c\u043a\u0438, \u0438\u043d\u0432\u0435\u043d\u0442\u0430\u0440\u0438\u0437\u0430\u0446\u0438\u0435\u0439. \u041e\u0431\u044a\u0451\u043c \u2014 \u043f\u043e\u0442\u043e\u043a\u043e\u0432\u044b\u0439, \u0438 \u0434\u0435\u0440\u0436\u0430\u0442\u044c \u043f\u043e\u0434 \u043d\u0435\u0433\u043e \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u0443\u044e Java-\u043a\u043e\u0440\u043e\u0431\u043a\u0443 \u0441 inbox-\u043a\u0430\u0442\u0430\u043b\u043e\u0433\u043e\u043c, \u0438\u0437 \u043a\u043e\u0442\u043e\u0440\u043e\u0433\u043e \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u044b \u0432\u044b\u0447\u0451\u0440\u043f\u044b\u0432\u0430\u0435\u0442 cron-\u0434\u0436\u043e\u0431\u0430, \u2014 \u043b\u0438\u0448\u043d\u0435\u0435 \u0437\u0432\u0435\u043d\u043e. \u0414\u043e\u043a\u0443\u043c\u0435\u043d\u0442 \u0434\u043e\u043b\u0436\u0435\u043d \u0442\u0435\u0447\u044c, \u0430 \u043d\u0435 \u043b\u0435\u0436\u0430\u0442\u044c \u0432 \u043f\u0430\u043f\u043a\u0435.<\/p>\n<p><strong>\u0417\u0434\u0440\u0430\u0432\u043e\u043e\u0445\u0440\u0430\u043d\u0435\u043d\u0438\u0435.<\/strong>\u00a0X12-\u0442\u0440\u0430\u043d\u0437\u0430\u043a\u0446\u0438\u0438 HIPAA (claims, remittance) \u043c\u0435\u0436\u0434\u0443 \u043f\u043b\u0430\u0442\u0435\u043b\u044c\u0449\u0438\u043a\u0430\u043c\u0438 \u0438 \u043f\u0440\u043e\u0432\u0430\u0439\u0434\u0435\u0440\u0430\u043c\u0438 \u0438\u0434\u0443\u0442 \u043f\u043e AS2 \u0441 \u0436\u0451\u0441\u0442\u043a\u0438\u043c\u0438 \u0442\u0440\u0435\u0431\u043e\u0432\u0430\u043d\u0438\u044f\u043c\u0438 \u043a \u043f\u043e\u0434\u043f\u0438\u0441\u0438 \u0438 \u0448\u0438\u0444\u0440\u043e\u0432\u0430\u043d\u0438\u044e. \u0422\u043e\u0442 \u0436\u0435 \u043f\u0440\u043e\u0444\u0438\u043b\u044c \u2014 \u043f\u043e\u0434\u043f\u0438\u0441\u044c, \u0448\u0438\u0444\u0440\u043e\u0432\u0430\u043d\u0438\u0435, \u043f\u043e\u0434\u043f\u0438\u0441\u0430\u043d\u043d\u044b\u0439 MDN.<\/p>\n<p><strong>\u0424\u0438\u043d\u0430\u043d\u0441\u044b \u0438 \u043f\u043b\u0430\u0442\u0435\u0436\u0438.<\/strong>\u00a0\u041f\u043b\u0430\u0442\u0451\u0436\u043d\u044b\u0435 \u0438 \u0440\u0430\u0441\u0447\u0451\u0442\u043d\u044b\u0435 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u044b EDI \u2014 \u043f\u043b\u0430\u0442\u0451\u0436\u043d\u043e\u0435 \u043f\u043e\u0440\u0443\u0447\u0435\u043d\u0438\u0435 \u0438 \u0430\u0432\u0438\u0437\u043e \u043e \u043f\u0435\u0440\u0435\u0432\u043e\u0434\u0435 (X12 820\/824) \u2014 \u0445\u043e\u0434\u044f\u0442 \u043c\u0435\u0436\u0434\u0443 \u043a\u043e\u0440\u043f\u043e\u0440\u0430\u0442\u0438\u0432\u043d\u044b\u043c\u0438 \u043a\u043b\u0438\u0435\u043d\u0442\u0430\u043c\u0438 \u0438 \u0438\u0445 \u0431\u0430\u043d\u043a\u0430\u043c\u0438 \u043f\u043e AS2 \u0442\u0430\u043c, \u0433\u0434\u0435 \u0431\u0430\u043d\u043a \u043f\u0440\u0435\u0434\u043b\u0430\u0433\u0430\u0435\u0442 host-to-host \u043a\u0430\u043d\u0430\u043b. AS2 \u0437\u0434\u0435\u0441\u044c \u043d\u0435 \u0437\u0430\u043c\u0435\u043d\u044f\u0435\u0442 SWIFT \u0438\u043b\u0438 EBICS \u043d\u0430 \u043c\u0435\u0436\u0431\u0430\u043d\u043a\u0435, \u0430 \u0437\u0430\u043a\u0440\u044b\u0432\u0430\u0435\u0442 EDI-\u0441\u043b\u043e\u0439: \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u043e\u043e\u0431\u043e\u0440\u043e\u0442 \u043a\u043e\u0440\u043f\u043e\u0440\u0430\u0446\u0438\u0438 \u0441 \u0431\u0430\u043d\u043a\u043e\u043c \u0438 \u043f\u043b\u0430\u0442\u0451\u0436\u043d\u044b\u0435 \u0438\u0437\u0432\u0435\u0449\u0435\u043d\u0438\u044f \u0432 \u0446\u0435\u043f\u043e\u0447\u043a\u0435 \u043f\u043e\u0441\u0442\u0430\u0432\u043e\u043a, \u0433\u0434\u0435 \u043e\u043f\u043b\u0430\u0442\u0430 \u2014 \u0442\u0430\u043a\u043e\u0439 \u0436\u0435 EDI-\u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442, \u043a\u0430\u043a \u0437\u0430\u043a\u0430\u0437 \u0438 \u0441\u0447\u0451\u0442. \u0414\u043b\u044f \u0444\u0438\u043d\u0442\u0435\u0445\u0430 \u0432\u0430\u0436\u043d\u0430 \u0440\u043e\u0432\u043d\u043e \u043d\u0435\u043e\u0442\u0440\u0435\u043a\u0430\u0435\u043c\u043e\u0441\u0442\u044c AS2: \u043f\u043e\u0434\u043f\u0438\u0441\u0430\u043d\u043d\u044b\u0439 MDN \u0441 MIC \u2014 \u044d\u0442\u043e \u0434\u043e\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u044c\u0441\u0442\u0432\u043e, \u0447\u0442\u043e \u0431\u0430\u043d\u043a \u043f\u043e\u043b\u0443\u0447\u0438\u043b \u0438\u043c\u0435\u043d\u043d\u043e \u044d\u0442\u043e \u043f\u043b\u0430\u0442\u0451\u0436\u043d\u043e\u0435 \u043f\u043e\u0440\u0443\u0447\u0435\u043d\u0438\u0435, \u0430 \u043d\u0435 \u0434\u0440\u0443\u0433\u043e\u0435.<\/p>\n<p><strong>\u041f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0441\u0442\u0432\u043e \u0438 \u0441\u043d\u0430\u0431\u0436\u0435\u043d\u0438\u0435.<\/strong>\u00a0\u0410\u0432\u0442\u043e\u043f\u0440\u043e\u043c \u0438 \u043f\u0440\u043e\u043c\u044b\u0448\u043b\u0435\u043d\u043d\u044b\u0435 supply-chain \u0441\u0435\u0442\u0438 \u0433\u043e\u043d\u044f\u044e\u0442 \u043f\u043e AS2 \u0437\u0430\u043a\u0430\u0437\u044b, \u043f\u043b\u0430\u043d-\u0433\u0440\u0430\u0444\u0438\u043a\u0438 \u043f\u043e\u0441\u0442\u0430\u0432\u043e\u043a, \u043e\u0442\u0433\u0440\u0443\u0437\u043e\u0447\u043d\u044b\u0435 \u0443\u0432\u0435\u0434\u043e\u043c\u043b\u0435\u043d\u0438\u044f (EDIFACT\/X12) \u043c\u0435\u0436\u0434\u0443 OEM \u0438 \u043f\u043e\u0441\u0442\u0430\u0432\u0449\u0438\u043a\u0430\u043c\u0438 \u0440\u0430\u0437\u043d\u044b\u0445 \u044f\u0440\u0443\u0441\u043e\u0432. \u041e\u0431\u043c\u0435\u043d \u043e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u044b\u0439: \u0431\u0435\u0437 \u044d\u043b\u0435\u043a\u0442\u0440\u043e\u043d\u043d\u043e\u0433\u043e \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u043e\u043e\u0431\u043e\u0440\u043e\u0442\u0430 \u043f\u043e\u0441\u0442\u0430\u0432\u0449\u0438\u043a\u0430 \u043a \u0441\u0435\u0442\u0438 \u043f\u0440\u043e\u0441\u0442\u043e \u043d\u0435 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0430\u0442.<\/p>\n<p><strong>\u0421\u0442\u0440\u0430\u0445\u043e\u0432\u0430\u043d\u0438\u0435.<\/strong>\u00a0Enrollment, claims, remittance (X12) \u043c\u0435\u0436\u0434\u0443 \u043f\u043b\u0430\u0442\u0435\u043b\u044c\u0449\u0438\u043a\u0430\u043c\u0438, \u0431\u0440\u043e\u043a\u0435\u0440\u0430\u043c\u0438 \u0438 \u043f\u0440\u043e\u0432\u0430\u0439\u0434\u0435\u0440\u0430\u043c\u0438 \u2014 \u0442\u043e\u0442 \u0436\u0435 \u043f\u0440\u043e\u0444\u0438\u043b\u044c \u043f\u043e\u0434\u043f\u0438\u0441\u0438 \u0438 \u0448\u0438\u0444\u0440\u043e\u0432\u0430\u043d\u0438\u044f, \u0442\u0435 \u0436\u0435 \u0442\u0440\u0435\u0431\u043e\u0432\u0430\u043d\u0438\u044f \u043a \u0440\u0430\u0441\u043f\u0438\u0441\u043a\u0435.<\/p>\n<p><strong>\u041a\u043e\u043d\u0441\u043e\u043b\u0438\u0434\u0430\u0446\u0438\u044f \u0448\u043b\u044e\u0437\u0430.<\/strong>\u00a0\u0423 \u0432\u0430\u0441 \u0443\u0436\u0435 \u0435\u0441\u0442\u044c \u043a\u043e\u043c\u043c\u0435\u0440\u0447\u0435\u0441\u043a\u0438\u0439 AS2-\u0448\u043b\u044e\u0437, \u043d\u043e \u044d\u0442\u043e \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u0430\u044f \u043a\u043e\u0440\u043e\u0431\u043a\u0430 \u0441\u043e \u0441\u0432\u043e\u0435\u0439 \u043b\u0438\u0446\u0435\u043d\u0437\u0438\u0435\u0439, \u0441\u0432\u043e\u0438\u043c \u0446\u0438\u043a\u043b\u043e\u043c \u043f\u0430\u0442\u0447\u0435\u0439 \u0438 \u0441\u0432\u043e\u0438\u043c \u043c\u043e\u043d\u0438\u0442\u043e\u0440\u0438\u043d\u0433\u043e\u043c, \u0436\u0438\u0432\u0443\u0449\u0430\u044f \u043f\u0430\u0440\u0430\u043b\u043b\u0435\u043b\u044c\u043d\u043e .NET-\u0431\u044d\u043a\u0435\u043d\u0434\u0443, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0438 \u0434\u0435\u043b\u0430\u0435\u0442 \u0432\u0441\u044e \u0431\u0438\u0437\u043d\u0435\u0441-\u043b\u043e\u0433\u0438\u043a\u0443. AS2-\u043a\u043e\u043d\u043d\u0435\u043a\u0442\u043e\u0440 \u0441\u0432\u043e\u0440\u0430\u0447\u0438\u0432\u0430\u0435\u0442 \u044d\u0442\u043e\u0442 \u043a\u043e\u043d\u0442\u0443\u0440 \u0432\u043d\u0443\u0442\u0440\u044c \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f.<\/p>\n<p>\u041f\u043e\u0447\u0435\u043c\u0443 \u043d\u0430\u0442\u0438\u0432\u043d\u044b\u0439 \u043a\u043e\u043d\u043d\u0435\u043a\u0442\u043e\u0440 \u0432 ESB, \u0430 \u043d\u0435 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0439 \u0448\u043b\u044e\u0437 \u0440\u044f\u0434\u043e\u043c:<\/p>\n<ul>\n<li>\n<p><strong>\u0414\u043e\u043a\u0443\u043c\u0435\u043d\u0442 \u043d\u0435 \u043b\u0435\u0436\u0438\u0442, \u0430 \u0442\u0435\u0447\u0451\u0442.<\/strong>\u00a0\u0423 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u043e\u0433\u043e \u0448\u043b\u044e\u0437\u0430 \u043f\u0440\u0438\u043d\u044f\u0442\u044b\u0439 \u0444\u0430\u0439\u043b \u043f\u043e\u043f\u0430\u0434\u0430\u0435\u0442 \u0432 inbox-\u043a\u0430\u0442\u0430\u043b\u043e\u0433, \u043e\u0442\u043a\u0443\u0434\u0430 \u0435\u0433\u043e \u043d\u0430\u0434\u043e \u0437\u0430\u0431\u0440\u0430\u0442\u044c. \u0423 \u043a\u043e\u043d\u043d\u0435\u043a\u0442\u043e\u0440\u0430 \u043f\u0440\u0438\u043d\u044f\u0442\u044b\u0439 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442 \u2014 \u044d\u0442\u043e \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0435 \u0432 \u043c\u0430\u0440\u0448\u0440\u0443\u0442\u0435: \u0441\u0440\u0430\u0437\u0443 \u0432\u0430\u043b\u0438\u0434\u0430\u0446\u0438\u044f, \u0442\u0440\u0430\u043d\u0441\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044f, \u043c\u0430\u0440\u0448\u0440\u0443\u0442\u0438\u0437\u0430\u0446\u0438\u044f. \u041d\u0435\u0442 \u043f\u0440\u043e\u043c\u0435\u0436\u0443\u0442\u043e\u0447\u043d\u043e\u0439 \u043f\u0430\u043f\u043a\u0438 \u0438 \u0434\u0436\u043e\u0431\u044b-\u043f\u043e\u0434\u0431\u043e\u0440\u0449\u0438\u043a\u0430.<\/p>\n<\/li>\n<li>\n<p><strong>\u041e\u0434\u0438\u043d \u043f\u0440\u043e\u0446\u0435\u0441\u0441, \u043e\u0434\u0438\u043d \u0434\u0435\u043f\u043b\u043e\u0439.<\/strong>\u00a0\u041d\u0435\u0442 \u0432\u0442\u043e\u0440\u043e\u0439 \u043a\u043e\u0440\u043e\u0431\u043a\u0438, \u043a\u043e\u0442\u043e\u0440\u0443\u044e \u043d\u0430\u0434\u043e \u0441\u0442\u0430\u0432\u0438\u0442\u044c, \u043f\u0430\u0442\u0447\u0438\u0442\u044c, \u043c\u043e\u043d\u0438\u0442\u043e\u0440\u0438\u0442\u044c \u0438 \u043e\u0431\u044a\u044f\u0441\u043d\u044f\u0442\u044c \u0430\u0443\u0434\u0438\u0442\u0443. AS2-\u044d\u043d\u0434\u043f\u043e\u0438\u043d\u0442 \u043f\u043e\u0434\u043d\u0438\u043c\u0430\u0435\u0442\u0441\u044f \u043d\u0430 \u043e\u0431\u0449\u0435\u043c Kestrel-\u0445\u043e\u0441\u0442\u0435 \u0432\u043c\u0435\u0441\u0442\u0435 \u0441 \u043e\u0441\u0442\u0430\u043b\u044c\u043d\u044b\u043c\u0438 HTTP-\u043c\u0430\u0440\u0448\u0440\u0443\u0442\u0430\u043c\u0438 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0430.<\/p>\n<\/li>\n<li>\n<p><strong>\u041e\u0434\u043d\u0430 \u043f\u043b\u043e\u0441\u043a\u043e\u0441\u0442\u044c \u043d\u0430\u0431\u043b\u044e\u0434\u0430\u0435\u043c\u043e\u0441\u0442\u0438.<\/strong>\u00a0AS2-\u044d\u043d\u0434\u043f\u043e\u0438\u043d\u0442\u044b \u0434\u0430\u044e\u0442 \u0441\u0442\u0430\u0442\u0438\u0441\u0442\u0438\u043a\u0443 \u0438 health (\u0432\u0438\u0434\u043d\u044b \u0432 \u0434\u0430\u0448\u0431\u043e\u0440\u0434\u0435 redb.Tsak) \u0438 \u0440\u0430\u0441\u043f\u0440\u0435\u0434\u0435\u043b\u0451\u043d\u043d\u044b\u0435 \u0442\u0440\u0435\u0439\u0441\u044b \u043d\u0430\u0440\u0430\u0432\u043d\u0435 \u0441 \u043e\u0441\u0442\u0430\u043b\u044c\u043d\u044b\u043c\u0438 \u043a\u043e\u043d\u043d\u0435\u043a\u0442\u043e\u0440\u0430\u043c\u0438: producer \u043e\u0442\u043a\u0440\u044b\u0432\u0430\u0435\u0442\u00a0<code>Client<\/code>-\u0441\u043f\u0430\u043d, consumer \u2014\u00a0<code>Consumer<\/code>-\u0441\u043f\u0430\u043d, \u0441\u0432\u044f\u0437\u0430\u043d\u043d\u044b\u0439 \u043f\u043e W3C\u00a0<code>traceparent<\/code>. \u041e\u0431\u043c\u0435\u043d \u0441 \u043f\u0430\u0440\u0442\u043d\u0451\u0440\u043e\u043c \u0432\u0438\u0434\u0435\u043d \u0432 \u0442\u043e\u0439 \u0436\u0435 Jaeger-\u0442\u0440\u0430\u0441\u0441\u0435, \u0447\u0442\u043e \u0438 \u043f\u0443\u0442\u044c \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430 \u0434\u0430\u043b\u044c\u0448\u0435 \u043f\u043e \u043c\u0430\u0440\u0448\u0440\u0443\u0442\u0443.<\/p>\n<\/li>\n<li>\n<p><strong>\u041a\u043e\u043c\u043f\u043e\u0437\u0438\u0446\u0438\u044f \u0441 EIP.<\/strong>\u00a0\u042d\u0442\u043e \u0438 \u0435\u0441\u0442\u044c \u0433\u043b\u0430\u0432\u043d\u043e\u0435. AS2 \u2014 \u043d\u0435 \u043e\u0441\u0442\u0440\u043e\u0432, \u0430 \u0448\u0430\u0433. \u041f\u0440\u0438\u043d\u044f\u0442\u044b\u0439 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442 \u043c\u043e\u0436\u043d\u043e \u043f\u0440\u043e\u0432\u0435\u0441\u0442\u0438 \u0447\u0435\u0440\u0435\u0437 \u0432\u0435\u0441\u044c \u043a\u0430\u0442\u0430\u043b\u043e\u0433 \u043f\u0430\u0442\u0442\u0435\u0440\u043d\u043e\u0432 redb.Route: \u043f\u0440\u043e\u0432\u0430\u043b\u0438\u0434\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043f\u043e \u0441\u0445\u0435\u043c\u0435, \u0442\u0440\u0430\u043d\u0441\u0444\u043e\u0440\u043c\u0438\u0440\u043e\u0432\u0430\u0442\u044c XSLT, \u0440\u0430\u0437\u043b\u043e\u0436\u0438\u0442\u044c Splitter&#8217;\u043e\u043c, \u043e\u0431\u043e\u0433\u0430\u0442\u0438\u0442\u044c, \u043f\u0440\u043e\u0434\u0443\u0431\u043b\u0438\u0440\u043e\u0432\u0430\u0442\u044c WireTap&#8217;\u043e\u043c \u0432 \u0430\u0440\u0445\u0438\u0432, \u043f\u043e\u043b\u043e\u0436\u0438\u0442\u044c \u0432 Kafka \u0438 \u0432 SQL \u043e\u0434\u043d\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u043e.<\/p>\n<\/li>\n<\/ul>\n<h3>AS2 \u043a\u0430\u043a \u043e\u0434\u0438\u043d \u0448\u0430\u0433 \u0441\u043a\u0432\u043e\u0437\u043d\u043e\u0433\u043e \u043c\u0430\u0440\u0448\u0440\u0443\u0442\u0430<\/h3>\n<p>\u0426\u0435\u043d\u043d\u043e\u0441\u0442\u044c \u043a\u043e\u043d\u043d\u0435\u043a\u0442\u043e\u0440\u0430 \u0432\u0438\u0434\u043d\u0430, \u043a\u043e\u0433\u0434\u0430 AS2 \u0441\u0442\u043e\u0438\u0442 \u043d\u0435 \u0441\u0430\u043c \u043f\u043e \u0441\u0435\u0431\u0435, \u0430 \u0432 \u0446\u0435\u043f\u043e\u0447\u043a\u0435. \u041f\u0440\u0438\u043d\u044f\u043b\u0438 \u0437\u0430\u043a\u0430\u0437 \u043e\u0442 \u043f\u0430\u0440\u0442\u043d\u0451\u0440\u0430, \u0442\u0440\u0430\u043d\u0441\u0444\u043e\u0440\u043c\u0438\u0440\u043e\u0432\u0430\u043b\u0438, \u0440\u0430\u0437\u043b\u043e\u0436\u0438\u043b\u0438 \u0438 \u0440\u0430\u0437\u043e\u0441\u043b\u0430\u043b\u0438 \u0434\u0430\u043b\u044c\u0448\u0435 \u2014 \u043e\u0434\u043d\u0438\u043c \u043c\u0430\u0440\u0448\u0440\u0443\u0442\u043e\u043c:<\/p>\n<pre><code>From(As2.Receive(\"\/inbound\/orders\").Host(\"0.0.0.0\").Port(4080).ConnectionFactory(\"walmart\"))    .Validate(...)                               \/\/ \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u0435\u0442 \u0441\u0445\u0435\u043c\u0435    .Xslt(\"styles\/x12-to-canonical.xsl\")         \/\/ X12 \u2192 \u0432\u0430\u0448\u0430 \u043a\u0430\u043d\u043e\u043d\u0438\u0447\u0435\u0441\u043a\u0430\u044f \u043c\u043e\u0434\u0435\u043b\u044c    .WireTap(\"sftp:\/\/archive\/edi?...\")           \/\/ \u043a\u043e\u043f\u0438\u044f \u0432 \u0430\u0440\u0445\u0438\u0432 \u0441 retention    .To(\"kafka:\/\/orders?brokers=...\")            \/\/ \u0432 \u0448\u0438\u043d\u0443 \u0434\u043b\u044f \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0438    .To(\"sql:INSERT INTO inbound_orders ...\");   \/\/ \u0438 \u0432 \u0411\u0414 \u0430\u0443\u0434\u0438\u0442\u0430<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><img style=\"width:14px;height:14px;object-fit:cover;object-position:left;\"\/><\/a><\/div><\/pre>\n<p>\u0422\u043e\u0442 \u0436\u0435 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442, \u0447\u0442\u043e \u043f\u0440\u0438\u0448\u0451\u043b \u0432 \u0437\u0430\u0448\u0438\u0444\u0440\u043e\u0432\u0430\u043d\u043d\u043e\u043c AS2-\u043a\u043e\u043d\u0432\u0435\u0440\u0442\u0435, \u0437\u0430 \u043e\u0434\u0438\u043d \u043f\u0440\u043e\u0445\u043e\u0434 \u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u043f\u0440\u043e\u0432\u0430\u043b\u0438\u0434\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u043c, \u0442\u0440\u0430\u043d\u0441\u0444\u043e\u0440\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u043c, \u0437\u0430\u0430\u0440\u0445\u0438\u0432\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u043c, \u0432 Kafka \u0438 \u0432 SQL \u2014 \u0438 \u0432\u0441\u0451 \u044d\u0442\u043e \u0432\u0438\u0434\u043d\u043e \u0432 \u043e\u0434\u043d\u043e\u0439 \u0442\u0440\u0430\u0441\u0441\u0435. \u041e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0439 \u0448\u043b\u044e\u0437 \u0434\u0430\u043b \u0431\u044b \u0432\u0430\u043c \u0444\u0430\u0439\u043b \u0432 \u043f\u0430\u043f\u043a\u0435; \u0437\u0434\u0435\u0441\u044c \u0432\u044b \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u0442\u0435 \u043f\u043e\u043b\u043d\u043e\u0446\u0435\u043d\u043d\u044b\u0439 \u043a\u043e\u043d\u0432\u0435\u0439\u0435\u0440, \u0443 \u043a\u043e\u0442\u043e\u0440\u043e\u0433\u043e AS2 \u2014 \u043f\u0440\u043e\u0441\u0442\u043e \u0432\u0445\u043e\u0434.<\/p>\n<p>\u0418\u0441\u0445\u043e\u0434\u044f\u0449\u0435\u0435 \u043d\u0430\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u0441\u0438\u043c\u043c\u0435\u0442\u0440\u0438\u0447\u043d\u043e: \u0441\u043e\u0431\u0440\u0430\u043b\u0438 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442 \u0438\u0437 \u0432\u0430\u0448\u0435\u0439 \u0441\u0438\u0441\u0442\u0435\u043c\u044b, \u043e\u0442\u043f\u0440\u0430\u0432\u0438\u043b\u0438 \u043f\u0430\u0440\u0442\u043d\u0451\u0440\u0443, \u0440\u0430\u0437\u043e\u0431\u0440\u0430\u043b\u0438 MDN, \u043e\u0431\u043d\u043e\u0432\u0438\u043b\u0438 \u0441\u0442\u0430\u0442\u0443\u0441 \u2014 \u0442\u043e\u0436\u0435 \u043e\u0434\u0438\u043d \u043c\u0430\u0440\u0448\u0440\u0443\u0442.<\/p>\n<h3>\u041f\u043e\u043b\u043d\u044b\u0439 \u043a\u043e\u043d\u0442\u0443\u0440: \u043f\u0440\u0438\u043d\u044f\u043b\u0438 \u0437\u0430\u043a\u0430\u0437 \u2014 \u043e\u0442\u043f\u0440\u0430\u0432\u0438\u043b\u0438 \u0441\u0447\u0451\u0442<\/h3>\n<p>\u041e\u043d\u0431\u043e\u0440\u0434\u0438\u043d\u0433 \u043f\u043e\u0441\u0442\u0430\u0432\u0449\u0438\u043a\u0430 \u043a \u0440\u043e\u0437\u043d\u0438\u0446\u0435 \u2014 \u044d\u0442\u043e \u0434\u0432\u0430 \u043d\u0430\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f AS2, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0432 redb.Route \u0436\u0438\u0432\u0443\u0442 \u0434\u0432\u0443\u043c\u044f \u043c\u0430\u0440\u0448\u0440\u0443\u0442\u0430\u043c\u0438 \u0432 \u043e\u0434\u043d\u043e\u043c \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0435.<\/p>\n<p>\u0412\u0445\u043e\u0434\u044f\u0449\u0435\u0435 \u2014 \u0437\u0430\u043a\u0430\u0437 (EDI 850) \u043e\u0442 \u0440\u0438\u0442\u0435\u0439\u043b\u0435\u0440\u0430:<\/p>\n<pre><code>From(As2.Receive(\"\/inbound\").Host(\"0.0.0.0\").Port(4080).ConnectionFactory(\"walmart\"))    .Validate(typeof(X12OrderValidator))          \/\/ \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0430 850 \u043a\u043e\u0440\u0440\u0435\u043a\u0442\u043d\u0430    .Unmarshal(typeof(X12Format), typeof(Order))  \/\/ X12 \u2192 \u0434\u043e\u043c\u0435\u043d\u043d\u0430\u044f \u043c\u043e\u0434\u0435\u043b\u044c    .Process(async (e, ct) =&gt; await _orders.Accept((Order)e.In.Body!, ct))    .To(\"kafka:\/\/orders-inbound?brokers={{kafka.brokers}}\");<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><img style=\"width:14px;height:14px;object-fit:cover;object-position:left;\"\/><\/a><\/div><\/pre>\n<p>\u0417\u0430\u043a\u0430\u0437 \u043f\u0440\u0438\u043d\u044f\u0442, \u043f\u0440\u043e\u0432\u0430\u043b\u0438\u0434\u0438\u0440\u043e\u0432\u0430\u043d, \u0440\u0430\u0437\u043e\u0431\u0440\u0430\u043d, \u0441\u043e\u0445\u0440\u0430\u043d\u0451\u043d \u0438 \u043e\u043f\u0443\u0431\u043b\u0438\u043a\u043e\u0432\u0430\u043d \u0432 \u0448\u0438\u043d\u0443 \u2014 \u0437\u0430 \u043e\u0434\u0438\u043d \u043f\u0440\u043e\u0445\u043e\u0434, \u0438 \u0441\u0438\u043d\u0445\u0440\u043e\u043d\u043d\u044b\u0439 MDN \u0443\u0448\u0451\u043b \u0440\u0438\u0442\u0435\u0439\u043b\u0435\u0440\u0443 \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438. \u0414\u0430\u043b\u044c\u0448\u0435 \u0432\u0430\u0448\u0430 \u0441\u0438\u0441\u0442\u0435\u043c\u0430 \u043e\u0431\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0435\u0442 \u0437\u0430\u043a\u0430\u0437 \u0441\u0432\u043e\u0438\u043c \u0442\u0435\u043c\u043f\u043e\u043c.<\/p>\n<p>\u0418\u0441\u0445\u043e\u0434\u044f\u0449\u0435\u0435 \u2014 \u0441\u0447\u0451\u0442 (EDI 810) \u043e\u0431\u0440\u0430\u0442\u043d\u043e \u043f\u0430\u0440\u0442\u043d\u0451\u0440\u0443, \u043a\u043e\u0433\u0434\u0430 \u043e\u0442\u0433\u0440\u0443\u0437\u043a\u0430 \u0433\u043e\u0442\u043e\u0432\u0430:<\/p>\n<pre><code>From(\"kafka:\/\/invoices-ready?brokers={{kafka.brokers}}\")    .Marshal(typeof(X12Format))                   \/\/ \u0434\u043e\u043c\u0435\u043d\u043d\u0430\u044f \u043c\u043e\u0434\u0435\u043b\u044c \u2192 X12 810    .To(As2.Send(\"{{walmart.as2.url}}\").ConnectionFactory(\"walmart\"))    .Choice()        .When(e =&gt; e.Out!.GetHeader&lt;bool&gt;(As2Headers.MdnMicMatch))            .Process(e =&gt; _invoices.MarkDelivered(e))        .Otherwise()            .To(\"direct:\/\/edi-ops-alert\");<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><img style=\"width:14px;height:14px;object-fit:cover;object-position:left;\"\/><\/a><\/div><\/pre>\n<p>\u041e\u0431\u0430 \u043d\u0430\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442 \u043e\u0434\u0438\u043d\u00a0<code>connectionFactory(\"walmart\")<\/code>\u00a0\u2014 \u043e\u0434\u043d\u0438 \u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u044b, \u043e\u0434\u0438\u043d \u043f\u0440\u043e\u0444\u0438\u043b\u044c. \u0412\u0435\u0441\u044c EDI-\u043a\u043e\u043d\u0442\u0443\u0440 \u0441 \u043f\u0430\u0440\u0442\u043d\u0451\u0440\u043e\u043c \u2014 \u0434\u0432\u0430 \u043c\u0430\u0440\u0448\u0440\u0443\u0442\u0430 \u0438 \u043e\u0434\u0438\u043d \u043e\u0431\u044a\u0435\u043a\u0442 \u043f\u0430\u0440\u0442\u043d\u0451\u0440\u0430, \u0432\u043d\u0443\u0442\u0440\u0438 \u0432\u0430\u0448\u0435\u0433\u043e \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f, \u043f\u043e\u0434 \u0432\u0430\u0448\u0435\u0439 \u043d\u0430\u0431\u043b\u044e\u0434\u0430\u0435\u043c\u043e\u0441\u0442\u044c\u044e.<\/p>\n<h3>\u041e\u0431\u043c\u0435\u043d \u0432\u0438\u0434\u0435\u043d \u0432 \u043e\u0431\u0449\u0435\u0439 \u0442\u0440\u0430\u0441\u0441\u0435<\/h3>\n<p>AS2 \u0443 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u043e\u0433\u043e \u0448\u043b\u044e\u0437\u0430 \u2014 \u0447\u0451\u0440\u043d\u044b\u0439 \u044f\u0449\u0438\u043a: \u043f\u0430\u0440\u0442\u043d\u0451\u0440 \u0433\u043e\u0432\u043e\u0440\u0438\u0442 \u00ab\u043d\u0435 \u043f\u0440\u0438\u0448\u043b\u043e\u00bb, \u0438 \u0432\u044b \u0438\u0434\u0451\u0442\u0435 \u0432 \u0447\u0443\u0436\u0438\u0435 \u043b\u043e\u0433\u0438 \u043d\u0430 \u0447\u0443\u0436\u043e\u0439 \u043a\u043e\u0440\u043e\u0431\u043a\u0435. \u0417\u0434\u0435\u0441\u044c AS2-\u044d\u043d\u0434\u043f\u043e\u0438\u043d\u0442\u044b \u2014 \u0447\u0430\u0441\u0442\u044c \u043e\u0431\u0449\u0435\u0439 \u043d\u0430\u0431\u043b\u044e\u0434\u0430\u0435\u043c\u043e\u0441\u0442\u0438 redb.Route. Producer \u043e\u0442\u043a\u0440\u044b\u0432\u0430\u0435\u0442\u00a0<code>Client<\/code>-\u0441\u043f\u0430\u043d, consumer \u2014\u00a0<code>Consumer<\/code>-\u0441\u043f\u0430\u043d, \u0441\u0432\u044f\u0437\u0430\u043d\u043d\u044b\u0439 \u0441 \u0432\u0445\u043e\u0434\u044f\u0449\u0438\u043c \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u043e\u043c \u043f\u043e W3C\u00a0<code>traceparent<\/code>. \u0412 \u043e\u0434\u043d\u043e\u0439 Jaeger-\u0442\u0440\u0430\u0441\u0441\u0435 \u0432\u0438\u0434\u043d\u043e \u0432\u0441\u0451: \u043f\u0440\u0438\u0448\u0451\u043b \u043a\u043e\u043d\u0432\u0435\u0440\u0442 \u043e\u0442 \u043f\u0430\u0440\u0442\u043d\u0451\u0440\u0430 \u2192 \u0440\u0430\u0441\u0448\u0438\u0444\u0440\u043e\u0432\u0430\u043d \u0438 \u043f\u0440\u043e\u0432\u0435\u0440\u0435\u043d\u0430 \u043f\u043e\u0434\u043f\u0438\u0441\u044c \u2192 \u043f\u0440\u043e\u0432\u0430\u043b\u0438\u0434\u0438\u0440\u043e\u0432\u0430\u043d \u2192 \u0442\u0440\u0430\u043d\u0441\u0444\u043e\u0440\u043c\u0438\u0440\u043e\u0432\u0430\u043d \u2192 \u0443\u0448\u0451\u043b \u0432 Kafka. \u0421\u0442\u0430\u0442\u0438\u0441\u0442\u0438\u043a\u0430 \u044d\u043d\u0434\u043f\u043e\u0438\u043d\u0442\u0430 \u2014 \u0441\u043a\u043e\u043b\u044c\u043a\u043e \u043f\u0440\u0438\u043d\u044f\u0442\u043e, \u0441\u043a\u043e\u043b\u044c\u043a\u043e \u043e\u0442\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u043e, \u043e\u0448\u0438\u0431\u043a\u0438 \u2014 \u0432 \u0434\u0430\u0448\u0431\u043e\u0440\u0434\u0435 redb.Tsak, \u0440\u044f\u0434\u043e\u043c \u0441 \u043e\u0441\u0442\u0430\u043b\u044c\u043d\u044b\u043c\u0438 \u043a\u043e\u043d\u043d\u0435\u043a\u0442\u043e\u0440\u0430\u043c\u0438. \u041a\u043e\u0433\u0434\u0430 \u043f\u0430\u0440\u0442\u043d\u0451\u0440 \u0441\u043f\u043e\u0440\u0438\u0442 \u043e \u0434\u043e\u0441\u0442\u0430\u0432\u043a\u0435, \u0443 \u0432\u0430\u0441 \u043d\u0430 \u0440\u0443\u043a\u0430\u0445 \u0442\u0440\u0430\u0441\u0441\u0430 \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u043e\u0433\u043e\u00a0<code>Message-ID<\/code>, \u0430 \u043d\u0435 \u00ab\u0433\u0434\u0435-\u0442\u043e \u0432 \u043b\u043e\u0433\u0430\u0445 \u0448\u043b\u044e\u0437\u0430\u00bb.<\/p>\n<h3>\u0427\u0442\u043e \u0432\u0430\u0436\u043d\u043e \u0437\u043d\u0430\u0442\u044c \u043f\u0440\u043e AS2 \u043d\u0430 \u043f\u0440\u0430\u043a\u0442\u0438\u043a\u0435<\/h3>\n<p>\u041d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0432\u0435\u0449\u0435\u0439, \u043d\u0430 \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043d\u0430\u0441\u0442\u0443\u043f\u0430\u0435\u0448\u044c \u0440\u043e\u0432\u043d\u043e \u043e\u0434\u0438\u043d \u0440\u0430\u0437.<\/p>\n<p><strong>MIC \u0441\u0447\u0438\u0442\u0430\u0435\u0442\u0441\u044f \u043f\u043e \u043a\u0430\u043d\u043e\u043d\u0438\u0447\u0435\u0441\u043a\u043e\u043c\u0443 \u0432\u0438\u0434\u0443, \u0431\u0430\u0439\u0442 \u0432 \u0431\u0430\u0439\u0442.<\/strong>\u00a0Message Integrity Check \u2014 \u044d\u0442\u043e \u0445\u0435\u0448 \u043f\u043e\u0434\u043f\u0438\u0441\u0430\u043d\u043d\u043e\u0439 \u0447\u0430\u0441\u0442\u0438 \u0432 CRLF-\u043a\u0430\u043d\u043e\u043d\u0438\u0447\u0435\u0441\u043a\u043e\u0439 \u0444\u043e\u0440\u043c\u0435, \u0432\u044b\u0447\u0438\u0441\u043b\u0435\u043d\u043d\u044b\u0439 \u0440\u043e\u0432\u043d\u043e \u0442\u0430\u043a, \u043a\u0430\u043a \u0435\u0433\u043e \u0441\u0447\u0438\u0442\u0430\u043b\u0430 \u043e\u0442\u043f\u0440\u0430\u0432\u043b\u044f\u044e\u0449\u0430\u044f \u0441\u0442\u043e\u0440\u043e\u043d\u0430. \u041e\u0442\u0441\u044e\u0434\u0430 \u0432\u0435\u0441\u044c \u0438\u043d\u0442\u0435\u0440\u043e\u043f-\u0431\u043e\u043b\u044c AS2: \u0435\u0441\u043b\u0438 \u043a\u0430\u043d\u043e\u043d\u0438\u043a\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f \u0438\u043b\u0438 \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c \u0440\u0430\u0437\u043e\u0448\u043b\u0438\u0441\u044c \u0445\u043e\u0442\u044c \u043d\u0430 \u0431\u0430\u0439\u0442, MIC \u0432 MDN \u043d\u0435 \u0441\u043e\u0432\u043f\u0430\u0434\u0451\u0442, \u0438 \u043f\u0430\u0440\u0442\u043d\u0451\u0440 \u0440\u0435\u0448\u0438\u0442, \u0447\u0442\u043e \u043f\u043e\u043b\u0443\u0447\u0438\u043b \u043d\u0435 \u0442\u043e. \u041a\u043e\u043d\u043d\u0435\u043a\u0442\u043e\u0440 \u0441\u0447\u0438\u0442\u0430\u0435\u0442 MIC \u043f\u043e RFC 4130 \u0438 \u0441\u0432\u0435\u0440\u044f\u0435\u0442 \u0435\u0433\u043e \u043d\u0430 \u043f\u0440\u0438\u0451\u043c\u0435 \u0438 \u0432 \u0440\u0430\u0437\u0431\u043e\u0440\u0435 MDN \u2014 \u0438 \u0438\u043c\u0435\u043d\u043d\u043e \u044d\u0442\u043e \u043f\u0440\u043e\u0432\u0435\u0440\u0435\u043d\u043e \u043f\u0440\u043e\u0442\u0438\u0432 \u0447\u0443\u0436\u043e\u0433\u043e \u0441\u0435\u0440\u0432\u0435\u0440\u0430, \u0430 \u043d\u0435 \u043d\u0430 \u0441\u0430\u043c\u043e\u043c \u0441\u0435\u0431\u0435.<\/p>\n<p><strong>Sync \u0438\u043b\u0438 async \u2014 \u0440\u0435\u0448\u0430\u0435\u0442 \u043f\u0430\u0440\u0442\u043d\u0451\u0440, \u043d\u0435 \u0432\u044b.<\/strong>\u00a0\u0421\u0438\u043d\u0445\u0440\u043e\u043d\u043d\u044b\u0439 MDN \u043f\u0440\u043e\u0449\u0435: \u0440\u0430\u0441\u043f\u0438\u0441\u043a\u0430 \u0432 \u0442\u043e\u043c \u0436\u0435 \u043e\u0442\u0432\u0435\u0442\u0435, \u043c\u0430\u0440\u0448\u0440\u0443\u0442 \u0441\u0440\u0430\u0437\u0443 \u0437\u043d\u0430\u0435\u0442 \u0438\u0441\u0445\u043e\u0434. \u041d\u043e \u043f\u0440\u0438 \u0431\u043e\u043b\u044c\u0448\u043e\u043c \u043e\u0431\u044a\u0451\u043c\u0435 \u0441\u0438\u043d\u0445\u0440\u043e\u043d\u043d\u044b\u0439 MDN \u0434\u0435\u0440\u0436\u0438\u0442 HTTP-\u0441\u043e\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u0435 \u0434\u043e \u043a\u043e\u043d\u0446\u0430 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0438, \u0438 \u043a\u0440\u0443\u043f\u043d\u044b\u0435 \u043f\u0430\u0440\u0442\u043d\u0451\u0440\u044b \u0442\u0440\u0435\u0431\u0443\u044e\u0442 \u0430\u0441\u0438\u043d\u0445\u0440\u043e\u043d\u043d\u044b\u0439: \u043f\u0440\u0438\u043d\u044f\u043b\u0438 \u2014 \u043e\u0442\u0432\u0435\u0442\u0438\u043b\u0438 200, MDN \u043f\u0440\u0438\u0441\u043b\u0430\u043b\u0438 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u043c POST-\u043e\u043c. \u041a\u043e\u043d\u043d\u0435\u043a\u0442\u043e\u0440 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442 \u043e\u0431\u0430; \u0432\u044b\u0431\u043e\u0440 \u2014 \u0441\u0442\u0440\u043e\u043a\u0430 \u0432 \u043f\u0440\u043e\u0444\u0438\u043b\u0435 \u043f\u0430\u0440\u0442\u043d\u0451\u0440\u0430, \u0430 \u043d\u0435 \u043f\u0435\u0440\u0435\u043f\u0438\u0441\u044b\u0432\u0430\u043d\u0438\u0435 \u043c\u0430\u0440\u0448\u0440\u0443\u0442\u0430.<\/p>\n<p><strong>\u041f\u043e\u0434\u043f\u0438\u0441\u0430\u043d\u043d\u044b\u0439 MDN \u2014 \u044d\u0442\u043e \u043f\u0440\u043e \u043d\u0435\u043e\u0442\u0440\u0435\u043a\u0430\u0435\u043c\u043e\u0441\u0442\u044c, \u0430 \u043d\u0435 \u043f\u0440\u043e \u0433\u0430\u043b\u043e\u0447\u043a\u0443.<\/strong>\u00a0<code>SignedMdn = true<\/code>\u00a0\u0437\u043d\u0430\u0447\u0438\u0442, \u0447\u0442\u043e \u0440\u0430\u0441\u043f\u0438\u0441\u043a\u0430 \u043f\u043e\u0434\u043f\u0438\u0441\u0430\u043d\u0430 \u043a\u043b\u044e\u0447\u043e\u043c \u043f\u0440\u0438\u043d\u0438\u043c\u0430\u044e\u0449\u0435\u0439 \u0441\u0442\u043e\u0440\u043e\u043d\u044b \u0438 \u043d\u0435\u0441\u0451\u0442 MIC. \u0414\u043b\u044f \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430, \u0437\u0430 \u043a\u043e\u0442\u043e\u0440\u044b\u043c \u0441\u0442\u043e\u0438\u0442 \u043e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u0441\u0442\u0432\u043e, \u044d\u0442\u043e \u0438 \u0435\u0441\u0442\u044c \u0434\u043e\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u044c\u0441\u0442\u0432\u043e: \u0443 \u0432\u0430\u0441 \u043d\u0430 \u0440\u0443\u043a\u0430\u0445 \u043f\u043e\u0434\u043f\u0438\u0441\u0430\u043d\u043d\u043e\u0435 \u043f\u043e\u0434\u0442\u0432\u0435\u0440\u0436\u0434\u0435\u043d\u0438\u0435, \u0447\u0442\u043e \u043f\u0430\u0440\u0442\u043d\u0451\u0440 \u043f\u043e\u043b\u0443\u0447\u0438\u043b \u0438\u043c\u0435\u043d\u043d\u043e \u044d\u0442\u043e\u0442 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442 \u0446\u0435\u043b\u044b\u043c. \u041d\u0435\u043f\u043e\u0434\u043f\u0438\u0441\u0430\u043d\u043d\u044b\u0439 MDN \u2014 \u043f\u0440\u043e\u0441\u0442\u043e \u00ab\u0434\u043e\u0448\u043b\u043e\u00bb, \u0447\u0435\u043c\u0443 \u0432 \u0441\u043f\u043e\u0440\u0435 \u0433\u0440\u043e\u0448 \u0446\u0435\u043d\u0430.<\/p>\n<p><strong>Content-Transfer-Encoding: binary.<\/strong>\u00a0EDI-\u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u044b \u0431\u0438\u043d\u0430\u0440\u043d\u044b \u043f\u043e \u0434\u0443\u0445\u0443, \u0438 \u043f\u0430\u0440\u0442\u043d\u0451\u0440\u044b \u043e\u0431\u044b\u0447\u043d\u043e \u043e\u0431\u043c\u0435\u043d\u0438\u0432\u0430\u044e\u0442\u0441\u044f \u0432\u00a0<code>binary<\/code>, \u0430 \u043d\u0435\u00a0<code>base64<\/code>\u00a0\u2014 \u043c\u0435\u043d\u044c\u0448\u0435 \u043d\u0430\u043a\u043b\u0430\u0434\u043d\u044b\u0445 \u0440\u0430\u0441\u0445\u043e\u0434\u043e\u0432 \u043d\u0430 \u0431\u043e\u043b\u044c\u0448\u043e\u043c \u043e\u0431\u044a\u0451\u043c\u0435. \u0414\u0435\u0442\u0430\u043b\u044c \u043f\u0440\u043e\u0444\u0438\u043b\u044f, \u043d\u043e \u0438\u043c\u0435\u043d\u043d\u043e \u043d\u0430 \u043d\u0435\u0439 \u0447\u0430\u0441\u0442\u043e \u0441\u043f\u043e\u0442\u044b\u043a\u0430\u044e\u0442\u0441\u044f \u0441\u0430\u043c\u043e\u0434\u0435\u043b\u044c\u043d\u044b\u0435 \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438.<\/p>\n<h3>\u0421\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u044b \u0438 \u0441\u0435\u043a\u0440\u0435\u0442\u044b<\/h3>\n<p>AS2 \u0441\u0442\u043e\u0438\u0442 \u043d\u0430 \u043f\u0430\u0440\u0435 \u043a\u043b\u044e\u0447\u0435\u0439: \u0432\u0430\u0448 \u043f\u0440\u0438\u0432\u0430\u0442\u043d\u044b\u0439 (\u043f\u043e\u0434\u043f\u0438\u0441\u044c \u0438\u0441\u0445\u043e\u0434\u044f\u0449\u0435\u0433\u043e, \u0440\u0430\u0441\u0448\u0438\u0444\u0440\u043e\u0432\u043a\u0430 \u0432\u0445\u043e\u0434\u044f\u0449\u0435\u0433\u043e) \u0438 \u043f\u0443\u0431\u043b\u0438\u0447\u043d\u044b\u0439 \u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442 \u043f\u0430\u0440\u0442\u043d\u0451\u0440\u0430 (\u0448\u0438\u0444\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u0438\u0441\u0445\u043e\u0434\u044f\u0449\u0435\u0433\u043e, \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0430 \u0438\u0445 \u043f\u043e\u0434\u043f\u0438\u0441\u0438). \u0412 \u043a\u043e\u043d\u043d\u0435\u043a\u0442\u043e\u0440\u0435 \u044d\u0442\u043e\u00a0<code>X509Certificate2<\/code>\u00a0\u0432\u00a0<code>As2ConnectionFactory<\/code>\u00a0\u2014 \u0433\u0440\u0443\u0437\u0438\u0442\u0435 \u0438\u0437 PKCS#12\/PFX \u043a\u0430\u043a \u0443\u0434\u043e\u0431\u043d\u043e: \u0438\u0437 \u0444\u0430\u0439\u043b\u0430, \u0438\u0437 \u0445\u0440\u0430\u043d\u0438\u043b\u0438\u0449\u0430 \u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0432 Windows, \u0438\u0437 \u0441\u0435\u043a\u0440\u0435\u0442-\u043c\u0435\u043d\u0435\u0434\u0436\u0435\u0440\u0430.<\/p>\n<p>\u0421\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u044b \u2014 \u0447\u0430\u0441\u0442\u044c \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438 \u043f\u0430\u0440\u0442\u043d\u0451\u0440\u0430 \u0432 \u0440\u0435\u0435\u0441\u0442\u0440\u0435, \u0430 \u043d\u0435 \u0441\u0442\u0440\u043e\u043a\u0438 \u0432 URI. \u041f\u0430\u0440\u043e\u043b\u044c \u043e\u0442 PFX, \u0435\u0441\u043b\u0438 \u043e\u043d \u043f\u0440\u0438\u0445\u043e\u0434\u0438\u0442 \u0447\u0435\u0440\u0435\u0437 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440 endpoint&#8217;\u0430, \u043f\u043e\u043c\u0435\u0447\u0435\u043d\u00a0<code>[Sensitive]<\/code>\u00a0\u0438 \u0432\u044b\u0440\u0435\u0437\u0430\u0435\u0442\u0441\u044f \u0438\u0437 \u043b\u043e\u0433\u043e\u0432 \u0438 \u0438\u0437 \u0434\u0430\u0448\u0431\u043e\u0440\u0434\u0430 \u2014 \u0441\u0435\u043a\u0440\u0435\u0442 \u043d\u0435 \u0443\u0442\u0435\u043a\u0430\u0435\u0442 \u0432 \u0442\u0440\u0430\u0441\u0441\u0443. \u0420\u043e\u0442\u0430\u0446\u0438\u044f \u043f\u0430\u0440\u0442\u043d\u0451\u0440\u0441\u043a\u043e\u0433\u043e \u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u0430 \u2014 \u044d\u0442\u043e \u0437\u0430\u043c\u0435\u043d\u0430 \u043e\u0431\u044a\u0435\u043a\u0442\u0430 \u0432 \u0440\u0435\u0435\u0441\u0442\u0440\u0435; \u043c\u0430\u0440\u0448\u0440\u0443\u0442 \u043d\u0435 \u0442\u0440\u043e\u0433\u0430\u0435\u0442\u0441\u044f.<\/p>\n<h3>\u0418\u043d\u0442\u0435\u0440\u043e\u043f \u0434\u043e\u043a\u0430\u0437\u0430\u043d, \u0430 \u043d\u0435 \u0437\u0430\u044f\u0432\u043b\u0435\u043d<\/h3>\n<p>\u041f\u0440\u043e AS2 \u043b\u0435\u0433\u043a\u043e \u043d\u0430\u043f\u0438\u0441\u0430\u0442\u044c \u00ab\u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u043c\u00bb \u0438 \u043f\u0440\u0438\u043b\u043e\u0436\u0438\u0442\u044c \u044e\u043d\u0438\u0442-\u0442\u0435\u0441\u0442\u044b, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0433\u043e\u043d\u044f\u044e\u0442 \u043a\u043e\u043d\u043d\u0435\u043a\u0442\u043e\u0440 \u043f\u0440\u043e\u0442\u0438\u0432 \u0441\u0430\u043c\u043e\u0433\u043e \u0441\u0435\u0431\u044f. \u042d\u0442\u043e \u0434\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442 \u0432\u043d\u0443\u0442\u0440\u0435\u043d\u043d\u044e\u044e \u043d\u0435\u043f\u0440\u043e\u0442\u0438\u0432\u043e\u0440\u0435\u0447\u0438\u0432\u043e\u0441\u0442\u044c, \u043d\u043e \u043d\u0435 \u0442\u043e, \u0447\u0442\u043e \u0432\u0430\u0448 \u043a\u043e\u043d\u0432\u0435\u0440\u0442 \u043f\u0440\u0438\u043c\u0435\u0442 \u0447\u0443\u0436\u043e\u0439 \u0441\u043e\u0444\u0442. \u041d\u0430\u0441\u0442\u043e\u044f\u0449\u0430\u044f \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0430 \u2014 \u043e\u0431\u043c\u0435\u043d \u0441 \u043d\u0435\u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0439 \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0435\u0439.<\/p>\n<p>\u041a\u043e\u043d\u043d\u0435\u043a\u0442\u043e\u0440 \u043f\u0440\u043e\u0432\u0435\u0440\u0435\u043d \u043f\u0440\u043e\u0442\u0438\u0432 \u0436\u0438\u0432\u043e\u0433\u043e\u00a0<strong>OpenAS2 v4.9.0<\/strong>\u00a0(\u0437\u0440\u0435\u043b\u044b\u0439 \u0441\u0435\u0440\u0432\u0435\u0440 \u043d\u0430 Bouncy Castle) \u0432 Docker, \u0432\u00a0<strong>\u043e\u0431\u043e\u0438\u0445 \u043d\u0430\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f\u0445<\/strong>, \u043f\u0440\u043e\u0444\u0438\u043b\u0435\u043c \u00ab\u043f\u043e\u0434\u043f\u0438\u0441\u044c SHA-256 + \u0448\u0438\u0444\u0440\u043e\u0432\u0430\u043d\u0438\u0435 AES-128-CBC + \u043f\u043e\u0434\u043f\u0438\u0441\u0430\u043d\u043d\u044b\u0439 MDN\u00bb:<\/p>\n<ul>\n<li>\n<p><strong>redb \u2192 OpenAS2.<\/strong>\u00a0\u041d\u0430\u0448 producer \u043e\u0442\u043f\u0440\u0430\u0432\u0438\u043b \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442, OpenAS2 \u0441\u0432\u043e\u0438\u043c\u0438 \u043b\u043e\u0433\u0430\u043c\u0438 \u043f\u043e\u0434\u0442\u0432\u0435\u0440\u0434\u0438\u043b: \u0440\u0430\u0441\u0448\u0438\u0444\u0440\u043e\u0432\u0430\u043b \u043d\u0430\u0448\u0438\u043c \u043a\u043e\u043d\u0432\u0435\u0440\u0442\u043e\u043c, \u043f\u0440\u043e\u0432\u0435\u0440\u0438\u043b \u043d\u0430\u0448\u0443 \u043f\u043e\u0434\u043f\u0438\u0441\u044c, \u0441\u043e\u0445\u0440\u0430\u043d\u0438\u043b \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442, \u0432\u0435\u0440\u043d\u0443\u043b \u043f\u043e\u043b\u043e\u0436\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0439 \u043f\u043e\u0434\u043f\u0438\u0441\u0430\u043d\u043d\u044b\u0439 MDN. \u041d\u0430\u0448 \u0440\u0430\u0437\u0431\u043e\u0440 MDN \u043f\u0440\u043e\u0432\u0435\u0440\u0438\u043b \u0435\u0433\u043e \u043f\u043e\u0434\u043f\u0438\u0441\u044c \u0438 \u043f\u043e\u0434\u0442\u0432\u0435\u0440\u0434\u0438\u043b \u0441\u043e\u0432\u043f\u0430\u0434\u0435\u043d\u0438\u0435\u00a0<code>Received-Content-MIC<\/code>.<\/p>\n<\/li>\n<li>\n<p><strong>OpenAS2 \u2192 redb.<\/strong>\u00a0OpenAS2 \u0441\u043e\u0431\u0440\u0430\u043b \u043f\u043e\u0434\u043f\u0438\u0441\u0430\u043d\u043d\u044b\u0439 \u0438 \u0437\u0430\u0448\u0438\u0444\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0439 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442 \u0438 \u043e\u0442\u043f\u0440\u0430\u0432\u0438\u043b \u043d\u0430\u0448\u0435\u043c\u0443 consumer&#8217;\u0443. \u041c\u044b \u0440\u0430\u0441\u0448\u0438\u0444\u0440\u043e\u0432\u0430\u043b\u0438 \u043f\u0440\u0438\u0432\u0430\u0442\u043d\u044b\u043c \u043a\u043b\u044e\u0447\u043e\u043c, \u043f\u0440\u043e\u0432\u0435\u0440\u0438\u043b\u0438 \u043f\u043e\u0434\u043f\u0438\u0441\u044c OpenAS2, \u043e\u0442\u0434\u0430\u043b\u0438 EDI \u0432 \u043c\u0430\u0440\u0448\u0440\u0443\u0442 \u0438 \u0432\u0435\u0440\u043d\u0443\u043b\u0438 \u043f\u043e\u0434\u043f\u0438\u0441\u0430\u043d\u043d\u044b\u0439 MDN, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 OpenAS2 \u043f\u0440\u0438\u043d\u044f\u043b \u0438 \u0441\u043a\u043e\u0440\u0440\u0435\u043b\u0438\u0440\u043e\u0432\u0430\u043b \u0441\u043e \u0441\u0432\u043e\u0438\u043c \u043e\u0436\u0438\u0434\u0430\u043d\u0438\u0435\u043c.<\/p>\n<\/li>\n<\/ul>\n<p>\u042d\u0442\u043e \u0437\u0430\u043a\u0440\u044b\u0432\u0430\u0435\u0442 \u00ab\u0441\u043b\u043e\u0436\u043d\u0443\u044e \u0447\u0430\u0441\u0442\u044c\u00bb AS2 \u0432 \u043e\u0431\u0435 \u0441\u0442\u043e\u0440\u043e\u043d\u044b: \u0432\u044b\u0447\u0438\u0441\u043b\u0435\u043d\u0438\u0435 MIC \u043f\u043e RFC 4130, \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0443 S\/MIME \u0438 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0443 MDN \u2014 \u043d\u0430 \u043f\u0440\u0438\u0451\u043c \u0438 \u043d\u0430 \u043e\u0442\u043f\u0440\u0430\u0432\u043a\u0443 \u2014 \u043f\u0440\u0438\u043d\u0438\u043c\u0430\u0435\u0442 \u043d\u0430\u0441\u0442\u043e\u044f\u0449\u0438\u0439, \u0447\u0443\u0436\u043e\u0439 \u043f\u0430\u0440\u0442\u043d\u0451\u0440.<\/p>\n<p>\u0422\u0435\u0441\u0442\u044b \u043e\u0442\u043a\u0440\u044b\u0442\u044b. \u041a\u0430\u043a \u0438\u043c\u0435\u043d\u043d\u043e \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u043b\u0438 \u2014 \u0442\u0440\u0438 \u0441\u043b\u043e\u044f (\u043a\u0440\u0438\u043f\u0442\u043e-\u0440\u0430\u0443\u043d\u0434-\u0442\u0440\u0438\u043f\u044b \u0438 MIC, e2e-\u043f\u0435\u0442\u043b\u044f \u043f\u0440\u043e\u0434\u044e\u0441\u0435\u0440\u2192\u043a\u043e\u043d\u0441\u044c\u044e\u043c\u0435\u0440 \u0447\u0435\u0440\u0435\u0437 \u0436\u0438\u0432\u043e\u0439 Kestrel, \u0438\u043d\u0442\u0435\u0440\u043e\u043f \u043f\u0440\u043e\u0442\u0438\u0432 OpenAS2) \u2014 \u0440\u0430\u0441\u043f\u0438\u0441\u0430\u043d\u043e \u0432 \u0444\u0430\u0439\u043b\u0435\u00a0<a href=\"http:\/\/TESTING.md\" rel=\"noopener noreferrer nofollow\">TESTING.md<\/a><a href=\"https:\/\/github.com\/redbase-app\/redb-route\/tree\/main\/redb.Route.As2\" rel=\"noopener noreferrer nofollow\"> \u043a\u043e\u043d\u043d\u0435\u043a\u0442\u043e\u0440\u0430 \u043d\u0430 GitHub<\/a>. \u0421\u0442\u0435\u043d\u0434 \u0438\u043d\u0442\u0435\u0440\u043e\u043f\u0430 (docker-compose \u0441 OpenAS2, \u043a\u043e\u043d\u0444\u0438\u0433, \u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u044b) \u0432\u043e\u0441\u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0441\u044f \u043e\u0434\u043d\u043e\u0439 \u043a\u043e\u043c\u0430\u043d\u0434\u043e\u0439; \u0438\u043d\u0442\u0435\u0440\u043e\u043f-\u0442\u0435\u0441\u0442 gated \u2014 \u043e\u0431\u044b\u0447\u043d\u044b\u0439 \u043f\u0440\u043e\u0433\u043e\u043d \u0437\u0435\u043b\u0451\u043d\u044b\u0439 \u0438 \u0431\u0435\u0437 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u0430.<\/p>\n<h3>\u0427\u0430\u0441\u0442\u044b\u0435 \u0432\u043e\u043f\u0440\u043e\u0441\u044b<\/h3>\n<p><strong>\u041d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u043f\u0430\u0440\u0442\u043d\u0451\u0440\u043e\u0432 \u043d\u0430 \u043e\u0434\u043d\u043e\u043c \u043f\u043e\u0440\u0442\u0443?<\/strong>\u00a0\u0414\u0430. \u041f\u0440\u0438\u0451\u043c\u043d\u044b\u0435 endpoint&#8217;\u044b \u0440\u0430\u0437\u043d\u044b\u0445 \u043f\u0430\u0440\u0442\u043d\u0451\u0440\u043e\u0432 \u0436\u0438\u0432\u0443\u0442 \u043d\u0430 \u043e\u0431\u0449\u0435\u043c Kestrel-\u0445\u043e\u0441\u0442\u0435, \u0440\u0430\u0437\u0432\u0435\u0434\u0451\u043d\u043d\u044b\u0435 \u043f\u043e \u043f\u0443\u0442\u0438 (<code>\/inbound\/walmart<\/code>,\u00a0<code>\/inbound\/target<\/code>), \u043a\u0430\u0436\u0434\u044b\u0439 \u0441\u043e \u0441\u0432\u043e\u0438\u043c\u00a0<code>connectionFactory<\/code>. \u041e\u0434\u0438\u043d \u0441\u0435\u0440\u0432\u0435\u0440, \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u043f\u0430\u0440\u0442\u043d\u0451\u0440\u0441\u0442\u0432.<\/p>\n<p><strong>\u041a\u0440\u0443\u043f\u043d\u044b\u0435 \u0444\u0430\u0439\u043b\u044b?<\/strong>\u00a0\u0422\u0435\u043b\u043e \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u044f \u2014 \u0431\u0430\u0439\u0442\u044b, \u0438 \u043f\u043e\u0442\u043e\u043a \u0438\u0434\u0451\u0442 \u0447\u0435\u0440\u0435\u0437 \u043e\u0431\u044b\u0447\u043d\u044b\u0439 HTTP-\u043a\u043e\u043d\u0432\u0435\u0439\u0435\u0440, \u0430 \u043d\u0435 \u0441\u043e\u0431\u0438\u0440\u0430\u0435\u0442\u0441\u044f \u0432 \u0441\u0442\u0440\u043e\u043a\u0443. \u0414\u043b\u044f \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0442\u044f\u0436\u0451\u043b\u044b\u0445 \u0432\u044b\u0433\u0440\u0443\u0437\u043e\u043a \u043f\u0430\u0440\u0442\u043d\u0451\u0440\u044b \u043e\u0431\u044b\u0447\u043d\u043e \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u044f\u0442 \u043d\u0430 SFTP \u2014 \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0432 redb.Route \u0442\u043e\u0436\u0435 \u043a\u043e\u043d\u043d\u0435\u043a\u0442\u043e\u0440 \u0438 \u0441\u0442\u043e\u0438\u0442 \u0432 \u0442\u043e\u043c \u0436\u0435 \u043c\u0430\u0440\u0448\u0440\u0443\u0442\u0435.<\/p>\n<p><strong>mTLS \/ \u043a\u043b\u0438\u0435\u043d\u0442\u0441\u043a\u0438\u0435 \u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u044b \u043d\u0430 \u0442\u0440\u0430\u043d\u0441\u043f\u043e\u0440\u0442\u0435?<\/strong>\u00a0AS2 \u0441\u0430\u043c \u0430\u0443\u0442\u0435\u043d\u0442\u0438\u0444\u0438\u0446\u0438\u0440\u0443\u0435\u0442 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442 \u043f\u043e\u0434\u043f\u0438\u0441\u044c\u044e, \u043d\u043e \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043f\u0430\u0440\u0442\u043d\u0451\u0440\u044b \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0442\u0440\u0435\u0431\u0443\u044e\u0442 TLS client-auth. \u0421\u0445\u0435\u043c\u0430\u00a0<code>as2s<\/code>\u00a0\u0438\u0434\u0451\u0442 \u043f\u043e\u0432\u0435\u0440\u0445 \u0442\u043e\u0433\u043e \u0436\u0435 Kestrel-\u0445\u043e\u0441\u0442\u0430, \u0447\u0442\u043e \u0438 HTTP-\u043a\u043e\u043d\u043d\u0435\u043a\u0442\u043e\u0440, \u0441 \u0435\u0433\u043e \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430\u043c\u0438 TLS.<\/p>\n<p><strong>\u0427\u0442\u043e \u043f\u0440\u0438 \u0440\u0435\u0441\u0442\u0430\u0440\u0442\u0435?<\/strong>\u00a0\u0410\u0441\u0438\u043d\u0445\u0440\u043e\u043d\u043d\u044b\u0439 MDN \u043a\u043e\u0440\u0440\u0435\u043b\u0438\u0440\u0443\u0435\u0442\u0441\u044f \u043f\u043e\u00a0<code>Original-Message-ID<\/code>; \u0438\u0441\u0445\u043e\u0434\u044f\u0449\u0438\u0435, \u0436\u0434\u0443\u0449\u0438\u0435 \u0440\u0430\u0441\u043f\u0438\u0441\u043a\u0443, \u2014 \u044d\u0442\u043e \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435 \u0432\u0430\u0448\u0435\u0433\u043e \u043c\u0430\u0440\u0448\u0440\u0443\u0442\u0430, \u0438 \u0445\u0440\u0430\u043d\u0438\u0442\u0441\u044f \u043e\u043d\u043e \u0442\u0430\u043c, \u0433\u0434\u0435 \u0432\u044b \u0434\u0435\u0440\u0436\u0438\u0442\u0435 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435 \u0441\u0430\u0433\u0438 \u0438\u043b\u0438 \u0438\u0434\u0435\u043c\u043f\u043e\u0442\u0435\u043d\u0442\u043d\u043e\u0441\u0442\u0438, \u0430 \u043d\u0435 \u0432 \u043f\u0430\u043c\u044f\u0442\u0438 \u043a\u043e\u043d\u043d\u0435\u043a\u0442\u043e\u0440\u0430.<\/p>\n<h3>\u0423\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430<\/h3>\n<pre><code>services.AddRedbRoute(route =&gt;{    route.Services.AddRedbRouteAs2();    route.AddRouteBuilder&lt;MyRoutes&gt;();});<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><img style=\"width:14px;height:14px;object-fit:cover;object-position:left;\"\/><\/a><\/div><\/pre>\n<p><code>AddRedbRouteAs2()<\/code>\u00a0\u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0438\u0440\u0443\u0435\u0442 \u0441\u0445\u0435\u043c\u044b\u00a0<code>as2<\/code>\u00a0\/\u00a0<code>as2s<\/code>\u00a0\u0438 \u043f\u0435\u0440\u0435\u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442 \u043e\u0431\u0449\u0438\u0439 Kestrel-\u0445\u043e\u0441\u0442 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0430 \u2014 AS2-\u043c\u0430\u0440\u0448\u0440\u0443\u0442 \u0438 \u043e\u0431\u044b\u0447\u043d\u044b\u0439 HTTP-\u043c\u0430\u0440\u0448\u0440\u0443\u0442 \u0432 \u043e\u0434\u043d\u043e\u043c \u0432\u043e\u0440\u043a\u0435\u0440\u0435 \u0434\u0435\u043b\u044f\u0442 \u043e\u0434\u0438\u043d \u0441\u0435\u0440\u0432\u0435\u0440 \u0438 \u043d\u0435 \u0441\u043f\u043e\u0440\u044f\u0442 \u0437\u0430 \u043f\u043e\u0440\u0442.<\/p>\n<p>\u041f\u0430\u043a\u0435\u0442 \u2014\u00a0<a href=\"http:\/\/redb.Route.As\" rel=\"noopener noreferrer nofollow\">redb.Route.As<\/a><a href=\"https:\/\/www.nuget.org\/packages\/redb.Route.As2\/\" rel=\"noopener noreferrer nofollow\">2 \u043d\u0430 NuGet<\/a>, \u0438\u0441\u0445\u043e\u0434\u043d\u0438\u043a\u0438 \u0438 \u043f\u043e\u043b\u043d\u043e\u0435 \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u0435 DSL \u2014 \u0432\u00a0<a href=\"https:\/\/github.com\/redbase-app\/redb-route\/tree\/main\/redb.Route.As2\" rel=\"noopener noreferrer nofollow\">README \u043a\u043e\u043d\u043d\u0435\u043a\u0442\u043e\u0440\u0430<\/a>. AS2 \u2014 \u043e\u0447\u0435\u0440\u0435\u0434\u043d\u043e\u0439 \u0442\u0440\u0430\u043d\u0441\u043f\u043e\u0440\u0442 \u0432 \u0441\u0435\u043c\u0435\u0439\u0441\u0442\u0432\u0435 redb.Route, \u043d\u0430\u0440\u0430\u0432\u043d\u0435 \u0441 Kafka, RabbitMQ, IBM MQ, SFTP \u0438 \u043e\u0441\u0442\u0430\u043b\u044c\u043d\u044b\u043c\u0438: \u0442\u043e\u0442 \u0436\u0435\u00a0<code>From \u2192 \u2026 \u2192 To<\/code>, \u0442\u0435 \u0436\u0435 EIP, \u0442\u0430 \u0436\u0435 \u043d\u0430\u0431\u043b\u044e\u0434\u0430\u0435\u043c\u043e\u0441\u0442\u044c. \u0420\u0430\u0437\u043d\u0438\u0446\u0430 \u0442\u043e\u043b\u044c\u043a\u043e \u0432 \u0442\u043e\u043c, \u0447\u0442\u043e \u043d\u0430 \u0432\u0445\u043e\u0434\u0435 \u0438 \u0432\u044b\u0445\u043e\u0434\u0435 \u2014 \u043f\u043e\u0434\u043f\u0438\u0441\u0430\u043d\u043d\u044b\u0439 \u0438 \u0437\u0430\u0448\u0438\u0444\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0439 \u043a\u043e\u043d\u0432\u0435\u0440\u0442, \u043a\u043e\u0442\u043e\u0440\u043e\u0433\u043e \u0436\u0434\u0451\u0442 \u0432\u0430\u0448 \u0442\u043e\u0440\u0433\u043e\u0432\u044b\u0439 \u043f\u0430\u0440\u0442\u043d\u0451\u0440.<\/p>\n<hr\/>\n<p>\u0414\u0440\u0443\u0433\u0438\u0435 \u043c\u043e\u0438 \u0441\u0442\u0430\u0442\u044c\u0438 \u2014\u00a0<a href=\"https:\/\/redb.ru\/articles\" rel=\"noopener noreferrer nofollow\">redb.ru\/articles<\/a>, \u0435\u0449\u0451 \u2014 \u043d\u0430\u00a0<a href=\"https:\/\/habr.com\/ru\/users\/reliktbk\/publications\/articles\/\" rel=\"noopener noreferrer nofollow\">\u0425\u0430\u0431\u0440\u0435<\/a>.<\/p>\n<p>If this was useful \u2014 a \u2b50 on\u00a0<a href=\"https:\/\/github.com\/redbase-app\/\" rel=\"noopener noreferrer nofollow\">GitHub<\/a>\u00a0helps others find it.  <\/p>\n<\/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=\"https:\/\/habr.com\/ru\/articles\/1069840\/\">https:\/\/habr.com\/ru\/articles\/1069840\/<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>redb.Route.AS2\u0415\u0441\u043b\u0438 \u0432\u044b \u043f\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442\u0435 \u0442\u043e\u0432\u0430\u0440 \u0432 \u043a\u0440\u0443\u043f\u043d\u0443\u044e \u0440\u043e\u0437\u043d\u0438\u0446\u0443, \u0432\u043e\u0437\u0438\u0442\u0435 \u0433\u0440\u0443\u0437\u044b \u0434\u043b\u044f 3PL-\u043e\u043f\u0435\u0440\u0430\u0442\u043e\u0440\u0430, \u0448\u043b\u0451\u0442\u0435 \u043f\u043b\u0430\u0442\u0451\u0436\u043d\u044b\u0435 \u0438\u0437\u0432\u0435\u0449\u0435\u043d\u0438\u044f \u0431\u0430\u043d\u043a\u0443 \u0438\u043b\u0438 \u043e\u0431\u043c\u0435\u043d\u0438\u0432\u0430\u0435\u0442\u0435\u0441\u044c \u043c\u0435\u0434\u0438\u0446\u0438\u043d\u0441\u043a\u0438\u043c\u0438 \u0442\u0440\u0430\u043d\u0437\u0430\u043a\u0446\u0438\u044f\u043c\u0438 X12 \u2014 \u0432\u044b \u043f\u043e\u0447\u0442\u0438 \u043d\u0430\u0432\u0435\u0440\u043d\u044f\u043a\u0430 \u043e\u0431\u043c\u0435\u043d\u0438\u0432\u0430\u0435\u0442\u0435\u0441\u044c \u044d\u0442\u0438\u043c\u0438 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u043c\u0438 \u043f\u043e\u00a0AS2. \u0417\u0430\u043a\u0430\u0437 (EDI 850), \u0441\u0447\u0451\u0442 (810), \u0443\u0432\u0435\u0434\u043e\u043c\u043b\u0435\u043d\u0438\u0435 \u043e\u0431 \u043e\u0442\u0433\u0440\u0443\u0437\u043a\u0435 (856), \u043f\u043b\u0430\u0442\u0451\u0436\u043d\u043e\u0435 \u0430\u0432\u0438\u0437\u043e (820) \u0443\u0445\u043e\u0434\u044f\u0442 \u043f\u0430\u0440\u0442\u043d\u0451\u0440\u0443 \u043d\u0435 \u043f\u043e\u0447\u0442\u043e\u0439 \u0438 \u043d\u0435 \u0447\u0435\u0440\u0435\u0437 REST, \u0430 \u043a\u0430\u043a \u043f\u043e\u0434\u043f\u0438\u0441\u0430\u043d\u043d\u044b\u0439 \u0438 \u0437\u0430\u0448\u0438\u0444\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0439 S\/MIME-\u043a\u043e\u043d\u0432\u0435\u0440\u0442 \u043f\u043e\u0432\u0435\u0440\u0445 HTTP, \u0441 \u043f\u043e\u0434\u043f\u0438\u0441\u0430\u043d\u043d\u043e\u0439 \u043a\u0432\u0438\u0442\u043a\u043e\u0439-\u0440\u0430\u0441\u043f\u0438\u0441\u043a\u043e\u0439 \u0432 \u043e\u0442\u0432\u0435\u0442. \u0422\u0430\u043a \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0440\u0435\u0433\u043b\u0430\u043c\u0435\u043d\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0439 B2B-\u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u043e\u043e\u0431\u043e\u0440\u043e\u0442 \u0432 \u0440\u043e\u0437\u043d\u0438\u0446\u0435, \u043b\u043e\u0433\u0438\u0441\u0442\u0438\u043a\u0435, \u0444\u0438\u043d\u0430\u043d\u0441\u0430\u0445, \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0441\u0442\u0432\u0435 \u0438 \u0437\u0434\u0440\u0430\u0432\u043e\u043e\u0445\u0440\u0430\u043d\u0435\u043d\u0438\u0438 \u0443\u0436\u0435 \u0434\u0432\u0430\u0434\u0446\u0430\u0442\u044c \u043b\u0435\u0442: Walmart, Amazon \u0438 \u0438\u0445 \u0441\u0435\u0442\u0438 \u043f\u043e\u0441\u0442\u0430\u0432\u0449\u0438\u043a\u043e\u0432, \u0431\u0430\u043d\u043a\u0438 \u0441 host-to-host \u043a\u0430\u043d\u0430\u043b\u043e\u043c, \u0430\u0432\u0442\u043e\u043f\u0440\u043e\u043c, \u0434\u0438\u0441\u0442\u0440\u0438\u0431\u044c\u044e\u0442\u043e\u0440\u044b \u2014 \u0432\u0441\u0435 \u0442\u0440\u0435\u0431\u0443\u044e\u0442 AS2.\u0412 .NET \u0434\u043e \u0441\u0438\u0445 \u043f\u043e\u0440 \u0431\u044b\u043b\u043e \u0434\u0432\u0430 \u043f\u0443\u0442\u0438. \u041b\u0438\u0431\u043e \u043a\u043e\u043c\u043c\u0435\u0440\u0447\u0435\u0441\u043a\u0438\u0439 AS2-\u0448\u043b\u044e\u0437 \u2014 Cleo, Seeburger, BizTalk \u2014 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u0430\u044f \u043a\u043e\u0440\u043e\u0431\u043a\u0430, \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u0430\u044f \u043b\u0438\u0446\u0435\u043d\u0437\u0438\u044f, \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u0430\u044f \u043a\u043e\u043c\u0430\u043d\u0434\u0430 \u0441\u043e\u043f\u0440\u043e\u0432\u043e\u0436\u0434\u0435\u043d\u0438\u044f. \u041b\u0438\u0431\u043e Java-\u0441\u0435\u0440\u0432\u0435\u0440 \u0441 \u043e\u0442\u043a\u0440\u044b\u0442\u044b\u043c \u043a\u043e\u0434\u043e\u043c \u2014 OpenAS2, Mendelson Community \u2014 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0439 JVM-\u043f\u0440\u043e\u0446\u0435\u0441\u0441 \u0440\u044f\u0434\u043e\u043c \u0441 \u0432\u0430\u0448\u0438\u043c .NET-\u0431\u044d\u043a\u0435\u043d\u0434\u043e\u043c, \u0441\u043e \u0441\u0432\u043e\u0438\u043c inbox-\u043a\u0430\u0442\u0430\u043b\u043e\u0433\u043e\u043c, \u043e\u0442\u043a\u0443\u0434\u0430 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u044b \u043d\u0430\u0434\u043e \u0435\u0449\u0451 \u0437\u0430\u0431\u0438\u0440\u0430\u0442\u044c \u0434\u0436\u043e\u0431\u043e\u0439. \u0412 \u043e\u0431\u043e\u0438\u0445 \u0441\u043b\u0443\u0447\u0430\u044f\u0445 AS2 \u0436\u0438\u0432\u0451\u0442\u00a0\u0441\u0431\u043e\u043a\u0443\u00a0\u043e\u0442 \u0432\u0430\u0448\u0435\u0439 \u0438\u043d\u0442\u0435\u0433\u0440\u0430\u0446\u0438\u0438, \u0430 \u043d\u0435 \u0432\u043d\u0443\u0442\u0440\u0438 \u043d\u0435\u0451.redb.Route.AS2\u0437\u0430\u043a\u0440\u044b\u0432\u0430\u0435\u0442 \u044d\u0442\u043e\u0442 \u0440\u0430\u0437\u0440\u044b\u0432: AS2 \u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u0441\u044f \u043e\u0431\u044b\u0447\u043d\u044b\u043c \u0448\u0430\u0433\u043e\u043c \u043c\u0430\u0440\u0448\u0440\u0443\u0442\u0430 \u0432 \u0432\u0430\u0448\u0435\u043c .NET-\u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0435. \u041f\u0440\u0438\u043d\u044f\u043b\u0438 \u043a\u043e\u043d\u0432\u0435\u0440\u0442 \u043e\u0442 \u043f\u0430\u0440\u0442\u043d\u0451\u0440\u0430, \u0440\u0430\u0441\u0448\u0438\u0444\u0440\u043e\u0432\u0430\u043b\u0438, \u043f\u0440\u043e\u0432\u0435\u0440\u0438\u043b\u0438 \u043f\u043e\u0434\u043f\u0438\u0441\u044c, \u043e\u0442\u0434\u0430\u043b\u0438 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442 \u0432 pipeline \u2014 \u043f\u0440\u043e\u0432\u0430\u043b\u0438\u0434\u0438\u0440\u043e\u0432\u0430\u043b\u0438, \u0442\u0440\u0430\u043d\u0441\u0444\u043e\u0440\u043c\u0438\u0440\u043e\u0432\u0430\u043b\u0438, \u043f\u043e\u043b\u043e\u0436\u0438\u043b\u0438 \u0432 Kafka \u0438\u043b\u0438 SQL \u2014 \u0438 \u0432\u0435\u0440\u043d\u0443\u043b\u0438 \u043f\u0430\u0440\u0442\u043d\u0451\u0440\u0443 \u043f\u043e\u0434\u043f\u0438\u0441\u0430\u043d\u043d\u0443\u044e \u0440\u0430\u0441\u043f\u0438\u0441\u043a\u0443. \u041e\u0434\u0438\u043d \u043f\u0440\u043e\u0446\u0435\u0441\u0441, \u043e\u0434\u0438\u043d \u0434\u0435\u043f\u043b\u043e\u0439, \u043e\u0434\u043d\u0430 \u043f\u0430\u043d\u0435\u043b\u044c \u043d\u0430\u0431\u043b\u044e\u0434\u0430\u0435\u043c\u043e\u0441\u0442\u0438. \u0420\u0430\u0437\u0431\u0435\u0440\u0451\u043c, \u043a\u0430\u043a \u044d\u0442\u043e \u0432\u044b\u0433\u043b\u044f\u0434\u0438\u0442 \u0432 \u043a\u043e\u0434\u0435, \u0433\u0434\u0435 \u043f\u0440\u0438\u043c\u0435\u043d\u044f\u0435\u0442\u0441\u044f \u0438 \u043f\u043e\u0447\u0435\u043c\u0443 \u043d\u0430\u0442\u0438\u0432\u043d\u044b\u0439 \u043a\u043e\u043d\u043d\u0435\u043a\u0442\u043e\u0440 \u0432 ESB \u0432\u044b\u0438\u0433\u0440\u044b\u0432\u0430\u0435\u0442 \u0443 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u043e\u0433\u043e \u0448\u043b\u044e\u0437\u0430.\u0427\u0442\u043e \u0442\u0430\u043a\u043e\u0435 AS2 \u0437\u0430 \u043e\u0434\u043d\u0443 \u043c\u0438\u043d\u0443\u0442\u0443AS2 (Applicability Statement 2,\u00a0RFC 4130) \u2014 \u044d\u0442\u043e \u043f\u0440\u043e\u0442\u043e\u043a\u043e\u043b \u0433\u0430\u0440\u0430\u043d\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e\u0439 \u0434\u043e\u0441\u0442\u0430\u0432\u043a\u0438 \u0431\u0438\u0437\u043d\u0435\u0441-\u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u043e\u0432 \u043c\u0435\u0436\u0434\u0443 \u0434\u0432\u0443\u043c\u044f \u0441\u0442\u043e\u0440\u043e\u043d\u0430\u043c\u0438 \u0447\u0435\u0440\u0435\u0437 \u0438\u043d\u0442\u0435\u0440\u043d\u0435\u0442. \u0422\u0435\u0445\u043d\u0438\u0447\u0435\u0441\u043a\u0438 \u044d\u0442\u043e \u043a\u043e\u043d\u0432\u0435\u0440\u0442:\u041f\u043e\u043b\u0435\u0437\u043d\u0430\u044f \u043d\u0430\u0433\u0440\u0443\u0437\u043a\u0430 (\u043e\u0431\u044b\u0447\u043d\u043e EDI: X12 \u0438\u043b\u0438 EDIFACT, \u043d\u043e \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c XML, JSON, \u0447\u0442\u043e \u0443\u0433\u043e\u0434\u043d\u043e) \u2014\u00a0\u0441\u0436\u0438\u043c\u0430\u0435\u0442\u0441\u044f\u00a0(\u043e\u043f\u0446\u0438\u043e\u043d\u0430\u043b\u044c\u043d\u043e),\u00a0\u043f\u043e\u0434\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u0442\u0441\u044f\u00a0\u0432\u0430\u0448\u0438\u043c \u043f\u0440\u0438\u0432\u0430\u0442\u043d\u044b\u043c \u043a\u043b\u044e\u0447\u043e\u043c \u0438\u00a0\u0448\u0438\u0444\u0440\u0443\u0435\u0442\u0441\u044f\u00a0\u043f\u0443\u0431\u043b\u0438\u0447\u043d\u044b\u043c \u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u043c \u043f\u0430\u0440\u0442\u043d\u0451\u0440\u0430.\u0413\u043e\u0442\u043e\u0432\u044b\u0439 S\/MIME-\u043a\u043e\u043d\u0432\u0435\u0440\u0442 \u0443\u0445\u043e\u0434\u0438\u0442 \u043f\u0430\u0440\u0442\u043d\u0451\u0440\u0443 \u043e\u0431\u044b\u0447\u043d\u044b\u043c HTTP POST.\u041f\u0430\u0440\u0442\u043d\u0451\u0440 \u0440\u0430\u0441\u0448\u0438\u0444\u0440\u043e\u0432\u044b\u0432\u0430\u0435\u0442 \u0441\u0432\u043e\u0438\u043c \u043a\u043b\u044e\u0447\u043e\u043c, \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u0442 \u0432\u0430\u0448\u0443 \u043f\u043e\u0434\u043f\u0438\u0441\u044c \u0432\u0430\u0448\u0438\u043c \u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u043c \u0438 \u043e\u0442\u0432\u0435\u0447\u0430\u0435\u0442\u00a0MDN\u00a0(Message Disposition Notification) \u2014 \u0440\u0430\u0441\u043f\u0438\u0441\u043a\u043e\u0439. \u041f\u043e\u0434\u043f\u0438\u0441\u0430\u043d\u043d\u044b\u0439 MDN \u043d\u0435\u0441\u0451\u0442\u00a0Received-Content-MIC: \u043a\u0440\u0438\u043f\u0442\u043e\u0433\u0440\u0430\u0444\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u0445\u0435\u0448 \u0442\u043e\u0433\u043e, \u0447\u0442\u043e \u043f\u0430\u0440\u0442\u043d\u0451\u0440 \u0440\u0435\u0430\u043b\u044c\u043d\u043e \u043f\u043e\u043b\u0443\u0447\u0438\u043b.\u0421\u043c\u044b\u0441\u043b MDN \u2014 \u044e\u0440\u0438\u0434\u0438\u0447\u0435\u0441\u043a\u0438 \u0437\u043d\u0430\u0447\u0438\u043c\u0430\u044f\u00a0\u043d\u0435\u043e\u0442\u0440\u0435\u043a\u0430\u0435\u043c\u043e\u0441\u0442\u044c. \u0412\u044b \u043e\u0442\u043f\u0440\u0430\u0432\u0438\u043b\u0438 \u0437\u0430\u043a\u0430\u0437, \u043f\u0430\u0440\u0442\u043d\u0451\u0440 \u043f\u0440\u0438\u0441\u043b\u0430\u043b \u043f\u043e\u0434\u043f\u0438\u0441\u0430\u043d\u043d\u0443\u044e \u0440\u0430\u0441\u043f\u0438\u0441\u043a\u0443 \u0441 MIC, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0441\u043e\u0432\u043f\u0430\u0434\u0430\u0435\u0442 \u0441 \u0442\u0435\u043c, \u0447\u0442\u043e \u0432\u044b \u043e\u0442\u043f\u0440\u0430\u0432\u0438\u043b\u0438: \u0443 \u0432\u0430\u0441 \u0435\u0441\u0442\u044c \u0434\u043e\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u044c\u0441\u0442\u0432\u043e \u0434\u043e\u0441\u0442\u0430\u0432\u043a\u0438 \u0440\u043e\u0432\u043d\u043e \u0442\u043e\u0433\u043e \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430, \u0430 \u043d\u0435 \u0434\u0440\u0443\u0433\u043e\u0433\u043e. \u0418\u043c\u0435\u043d\u043d\u043e \u043f\u043e\u044d\u0442\u043e\u043c\u0443 AS2 \u0441\u0442\u0430\u043b \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043e\u043c \u0434\u0435-\u0444\u0430\u043a\u0442\u043e \u0442\u0430\u043c, \u0433\u0434\u0435 \u0437\u0430 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u043e\u043c \u0441\u0442\u043e\u044f\u0442 \u0434\u0435\u043d\u044c\u0433\u0438 \u0438 \u043e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u0441\u0442\u0432\u0430.MDN \u0431\u044b\u0432\u0430\u0435\u0442 \u0441\u0438\u043d\u0445\u0440\u043e\u043d\u043d\u044b\u0439 (\u0440\u0430\u0441\u043f\u0438\u0441\u043a\u0430 \u043f\u0440\u0438\u0445\u043e\u0434\u0438\u0442 \u0432 \u0442\u043e\u043c \u0436\u0435 HTTP-\u043e\u0442\u0432\u0435\u0442\u0435) \u0438 \u0430\u0441\u0438\u043d\u0445\u0440\u043e\u043d\u043d\u044b\u0439 (\u043f\u0430\u0440\u0442\u043d\u0451\u0440 \u043f\u043e\u0434\u0442\u0432\u0435\u0440\u0436\u0434\u0430\u0435\u0442 \u043f\u0440\u0438\u0451\u043c \u0438 \u043f\u0440\u0438\u0441\u044b\u043b\u0430\u0435\u0442 MDN \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u043c POST-\u043e\u043c \u043f\u043e\u0437\u0436\u0435, \u043d\u0430 \u0432\u0430\u0448 \u0430\u0434\u0440\u0435\u0441). \u041e\u0431\u0430 \u0440\u0435\u0436\u0438\u043c\u0430 \u2014 \u0447\u0430\u0441\u0442\u044c \u043f\u0440\u043e\u0442\u043e\u043a\u043e\u043b\u0430, \u0438 \u043e\u0431\u0430 \u043d\u0443\u0436\u043d\u044b \u0432 \u0436\u0438\u0437\u043d\u0438: \u043a\u0440\u0443\u043f\u043d\u044b\u0435 \u043f\u0430\u0440\u0442\u043d\u0451\u0440\u044b \u0447\u0430\u0441\u0442\u043e \u0442\u0440\u0435\u0431\u0443\u044e\u0442 \u0438\u043c\u0435\u043d\u043d\u043e \u0430\u0441\u0438\u043d\u0445\u0440\u043e\u043d\u043d\u044b\u0439.\u00ab\u0410 \u043f\u043e\u0447\u0435\u043c\u0443 \u043d\u0435 \u043f\u0440\u043e\u0441\u0442\u043e HTTPS\u00bb\u0420\u0435\u0437\u043e\u043d\u043d\u044b\u0439 \u0432\u043e\u043f\u0440\u043e\u0441: \u0435\u0441\u043b\u0438 \u043a\u0430\u043d\u0430\u043b \u0438 \u0442\u0430\u043a \u0437\u0430\u0449\u0438\u0449\u0451\u043d TLS, \u0437\u0430\u0447\u0435\u043c \u0435\u0449\u0451 \u043f\u043e\u0434\u043f\u0438\u0441\u044b\u0432\u0430\u0442\u044c \u0438 \u0448\u0438\u0444\u0440\u043e\u0432\u0430\u0442\u044c \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442? \u041f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e TLS \u0437\u0430\u0449\u0438\u0449\u0430\u0435\u0442\u00a0\u043a\u0430\u043d\u0430\u043b, \u0430 AS2 \u2014\u00a0\u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442. TLS \u0436\u0438\u0432\u0451\u0442 \u0440\u043e\u0432\u043d\u043e \u043e\u0442 \u0432\u0430\u0448\u0435\u0433\u043e \u0441\u043e\u043a\u0435\u0442\u0430 \u0434\u043e \u0441\u043e\u043a\u0435\u0442\u0430 \u043f\u0430\u0440\u0442\u043d\u0451\u0440\u0430 \u0438 \u0438\u0441\u0447\u0435\u0437\u0430\u0435\u0442, \u043a\u0430\u043a \u0442\u043e\u043b\u044c\u043a\u043e \u0431\u0430\u0439\u0442\u044b \u043b\u0435\u0433\u043b\u0438 \u043d\u0430 \u0434\u0438\u0441\u043a: \u0432 \u043b\u043e\u0433\u0435 \u043f\u0440\u043e\u043a\u0441\u0438, \u0432 inbox-\u043a\u0430\u0442\u0430\u043b\u043e\u0433\u0435, \u043d\u0430 \u0431\u0430\u043b\u0430\u043d\u0441\u0438\u0440\u043e\u0432\u0449\u0438\u043a\u0435 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442 \u0443\u0436\u0435 \u043e\u0442\u043a\u0440\u044b\u0442. S\/MIME-\u043a\u043e\u043d\u0432\u0435\u0440\u0442 AS2 \u043e\u0441\u0442\u0430\u0451\u0442\u0441\u044f \u043f\u043e\u0434\u043f\u0438\u0441\u0430\u043d\u043d\u044b\u043c \u0438 \u0437\u0430\u0448\u0438\u0444\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u043c \u043d\u0430 \u0432\u0441\u0451\u043c \u043f\u0443\u0442\u0438 \u0438 \u0432 \u043f\u043e\u043a\u043e\u0435 \u2014 \u0440\u0430\u0441\u0448\u0438\u0444\u0440\u043e\u0432\u0430\u0442\u044c \u0435\u0433\u043e \u043c\u043e\u0436\u0435\u0442 \u0442\u043e\u043b\u044c\u043a\u043e \u0432\u043b\u0430\u0434\u0435\u043b\u0435\u0446 \u043f\u0440\u0438\u0432\u0430\u0442\u043d\u043e\u0433\u043e \u043a\u043b\u044e\u0447\u0430, \u0430 \u043f\u043e\u0434\u043f\u0438\u0441\u044c \u0434\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442 \u0430\u0432\u0442\u043e\u0440\u0430. \u0418 \u0433\u043b\u0430\u0432\u043d\u043e\u0435 \u2014 TLS \u043d\u0435 \u0434\u0430\u0451\u0442 \u0440\u0430\u0441\u043f\u0438\u0441\u043a\u0438: \u0443 HTTPS \u043d\u0435\u0442 MDN \u0441 MIC, \u0430 \u0438\u043c\u0435\u043d\u043d\u043e \u043e\u043d \u0434\u0435\u043b\u0430\u0435\u0442 \u0434\u043e\u0441\u0442\u0430\u0432\u043a\u0443 \u043d\u0435\u043e\u0442\u0440\u0435\u043a\u0430\u0435\u043c\u043e\u0439. AS2 \u043e\u0431\u044b\u0447\u043d\u043e \u0438 \u0445\u043e\u0434\u0438\u0442 \u043f\u043e\u0432\u0435\u0440\u0445 HTTPS (as2s) \u2014 \u043e\u0434\u043d\u043e \u0434\u0440\u0443\u0433\u043e\u043c\u0443 \u043d\u0435 \u043c\u0435\u0448\u0430\u0435\u0442: \u043a\u0430\u043d\u0430\u043b \u0448\u0438\u0444\u0440\u0443\u0435\u0442 TLS, \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442 \u0438 \u043d\u0435\u043e\u0442\u0440\u0435\u043a\u0430\u0435\u043c\u043e\u0441\u0442\u044c \u043e\u0431\u0435\u0441\u043f\u0435\u0447\u0438\u0432\u0430\u0435\u0442 S\/MIME.\u0427\u0438\u0442\u0430\u0435\u043c\u044b\u0439 \u043c\u0430\u0440\u0448\u0440\u0443\u0442: endpoint \u043a\u0430\u043a \u0441\u0442\u0440\u043e\u043a\u0430redb.Route \u2014 \u044d\u0442\u043e\u00a0Apache Camel \u043f\u043e\u0434 .NET: \u043c\u0430\u0440\u0448\u0440\u0443\u0442 \u043e\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u043a\u0430\u043a\u00a0From \u2192 \u2026 \u2192 To, \u0430 endpoint \u2014 \u044d\u0442\u043e URI-\u0441\u0442\u0440\u043e\u043a\u0430. \u041a\u043e\u043d\u043d\u0435\u043a\u0442\u043e\u0440 AS2 \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u0442 \u0434\u0432\u0435 \u0441\u0445\u0435\u043c\u044b,\u00a0as2\u00a0(HTTP) \u0438\u00a0as2s\u00a0(HTTPS), \u0438 \u043e\u043d\u0438 \u0447\u0438\u0442\u0430\u044e\u0442\u0441\u044f \u043a\u0430\u043a \u043f\u0440\u0435\u0434\u043b\u043e\u0436\u0435\u043d\u0438\u0435:as2s:\/\/partner.example.com\/as2?connectionFactory=walmart          # \u043a\u043e\u043c\u0443 \u043e\u0442\u043f\u0440\u0430\u0432\u043b\u044f\u0435\u043cas2:\/inbound\/orders?host=0.0.0.0&amp;port=4080&amp;connectionFactory=walmart   # \u0433\u0434\u0435 \u043f\u0440\u0438\u043d\u0438\u043c\u0430\u0435\u043cas2:\/as2\/mdn?host=0.0.0.0&amp;port=4081&amp;mode=mdn&amp;connectionFactory=walmart # \u043a\u0443\u0434\u0430 \u043f\u0430\u0440\u0442\u043d\u0451\u0440 \u0448\u043b\u0451\u0442 \u0430\u0441\u0438\u043d\u0445\u0440\u043e\u043d\u043d\u044b\u0439 MDN\u041f\u043e URI \u0441\u0440\u0430\u0437\u0443 \u0432\u0438\u0434\u043d\u043e \u043d\u0430\u043c\u0435\u0440\u0435\u043d\u0438\u0435: \u043a\u0443\u0434\u0430 \u0438\u0434\u0451\u043c, \u043d\u0430 \u043a\u0430\u043a\u043e\u043c \u043f\u043e\u0440\u0442\u0443 \u0441\u043b\u0443\u0448\u0430\u0435\u043c, \u043a\u0430\u043a\u043e\u0439 \u043f\u0430\u0440\u0442\u043d\u0451\u0440. \u0421\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u044b \u0438 \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c\u044b \u0432 \u0441\u0442\u0440\u043e\u043a\u0435 \u043d\u0435 \u0436\u0438\u0432\u0443\u0442 \u2014 \u0438\u043c \u0442\u0430\u043c \u043d\u0435 \u043c\u0435\u0441\u0442\u043e. \u0414\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u0435\u0441\u0442\u044c \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u0430\u044f \u0441\u0443\u0449\u043d\u043e\u0441\u0442\u044c.\u041f\u0430\u0440\u0442\u043d\u0451\u0440 \u2014 \u043e\u0434\u0438\u043d \u043e\u0431\u044a\u0435\u043a\u0442, \u0430 \u043d\u0435 \u0440\u043e\u0441\u0441\u044b\u043f\u044c \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043e\u0432\u041e\u0431\u043c\u0435\u043d \u043f\u043e AS2 \u2014 \u044d\u0442\u043e \u0432\u0441\u0435\u0433\u0434\u0430 \u0434\u043e\u0433\u043e\u0432\u043e\u0440\u0451\u043d\u043d\u043e\u0441\u0442\u044c \u0434\u0432\u0443\u0445 \u0441\u0442\u043e\u0440\u043e\u043d: \u0447\u044c\u0438 \u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u044b, \u043a\u0430\u043a\u0438\u0435 AS2-\u0438\u0434\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0440\u044b, \u0447\u0442\u043e \u043f\u043e\u0434\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u043c \u0438 \u0447\u0435\u043c \u0448\u0438\u0444\u0440\u0443\u0435\u043c, \u043a\u0430\u043a\u043e\u0439 \u0440\u0435\u0436\u0438\u043c MDN. \u0412\u0441\u0451 \u044d\u0442\u043e \u2014\u00a0As2ConnectionFactory, \u0437\u0430\u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0439 \u0432 \u0440\u0435\u0435\u0441\u0442\u0440\u0435 \u043e\u0434\u0438\u043d \u0440\u0430\u0437 \u043f\u043e \u0438\u043c\u0435\u043d\u0438:context.AddToRegistry(&#171;walmart&#187;, new As2ConnectionFactory{    OurCertificate     = ourPfx,     \/\/ \u043d\u0430\u0448 \u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442 \u0441 \u041f\u0420\u0418\u0412\u0410\u0422\u041d\u042b\u041c \u043a\u043b\u044e\u0447\u043e\u043c \u2014 \u043f\u043e\u0434\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u0442 \u0438\u0441\u0445\u043e\u0434\u044f\u0449\u0435\u0435, \u0440\u0430\u0441\u0448\u0438\u0444\u0440\u043e\u0432\u044b\u0432\u0430\u0435\u0442 \u0432\u0445\u043e\u0434\u044f\u0449\u0435\u0435    PartnerCertificate = theirCer,   \/\/ \u043f\u0443\u0431\u043b\u0438\u0447\u043d\u044b\u0439 \u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442 \u043f\u0430\u0440\u0442\u043d\u0451\u0440\u0430 \u2014 \u0448\u0438\u0444\u0440\u0443\u0435\u0442 \u0438\u0441\u0445\u043e\u0434\u044f\u0449\u0435\u0435, \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u0442 \u0438\u0445 \u043f\u043e\u0434\u043f\u0438\u0441\u044c    As2From = &#171;OUR-AS2-ID&#187;,    As2To   = &#171;WALMART-AS2-ID&#187;,    PartnerUrl = &#171;https:\/\/partner.example.com\/as2&#187;,    \/\/ \u041f\u0440\u043e\u0444\u0438\u043b\u044c \u043e\u0431\u043c\u0435\u043d\u0430 \u2014 \u0442\u043e, \u043e \u0447\u0451\u043c \u0434\u043e\u0433\u043e\u0432\u043e\u0440\u0438\u043b\u0438\u0441\u044c    Sign = true, Encrypt = true, Compress = false,    SignAlg = &#171;sha-256&#187;, EncryptAlg = &#171;aes-128-cbc&#187;,    SignedMdn = true, MdnMode = As2MdnMode.Sync,});\u041c\u0430\u0440\u0448\u0440\u0443\u0442\u044b \u0441\u0441\u044b\u043b\u0430\u044e\u0442\u0441\u044f \u043d\u0430 \u043f\u0430\u0440\u0442\u043d\u0451\u0440\u0430 \u043f\u043e \u0438\u043c\u0435\u043d\u0438 \u2014\u00a0?connectionFactory=walmart\u00a0\u0432 URI \u0438\u043b\u0438\u00a0.ConnectionFactory(&#171;walmart&#187;)\u00a0\u0432 fluent-DSL. \u0414\u043e\u0431\u0430\u0432\u0438\u043b\u0438 \u0432\u0442\u043e\u0440\u043e\u0433\u043e \u043f\u0430\u0440\u0442\u043d\u0451\u0440\u0430 \u2014 \u0437\u0430\u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0438\u0440\u043e\u0432\u0430\u043b\u0438 \u0435\u0449\u0451 \u043e\u0434\u0438\u043d \u043e\u0431\u044a\u0435\u043a\u0442, URI \u043c\u0430\u0440\u0448\u0440\u0443\u0442\u0430 \u043d\u0435 \u043c\u0435\u043d\u044f\u0435\u0442\u0441\u044f. \u0421\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u044b \u0432\u0435\u0440\u0441\u0438\u043e\u043d\u0438\u0440\u0443\u044e\u0442\u0441\u044f \u0432\u043c\u0435\u0441\u0442\u0435 \u0441 \u0432\u0430\u0448\u0438\u043c \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435\u043c, \u0430 \u043d\u0435 \u043b\u0435\u0436\u0430\u0442 \u0432 keystore \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u043e\u0433\u043e \u0448\u043b\u044e\u0437\u0430, \u043e \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u043e\u0432\u0430\u043d\u0438\u0438 \u043a\u043e\u0442\u043e\u0440\u043e\u0433\u043e \u0437\u043d\u0430\u0435\u0442 \u043e\u0434\u0438\u043d \u0447\u0435\u043b\u043e\u0432\u0435\u043a \u0432 \u043a\u043e\u043c\u0430\u043d\u0434\u0435.\u041e\u0434\u0438\u043d \u043c\u0430\u0440\u0448\u0440\u0443\u0442 \u2014 \u0442\u0440\u0438 \u043e\u043a\u0440\u0443\u0436\u0435\u043d\u0438\u044fURI endpoint&#8217;\u0430 \u2014 \u0441\u0442\u0440\u043e\u043a\u0430, \u0430 \u0432 \u0441\u0442\u0440\u043e\u043a\u0435 \u0440\u0430\u0431\u043e\u0442\u0430\u044e\u0442 \u043f\u043b\u0435\u0439\u0441\u0445\u043e\u043b\u0434\u0435\u0440\u044b\u00a0{{\u043a\u043b\u044e\u0447}}, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 redb.Route \u043f\u043e\u0434\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u0438\u0437\u00a0IConfiguration\u00a0\u043d\u0430 \u044d\u0442\u0430\u043f\u0435 \u0441\u0431\u043e\u0440\u043a\u0438 \u043c\u0430\u0440\u0448\u0440\u0443\u0442\u0430. \u041f\u0430\u0440\u0442\u043d\u0451\u0440\u0441\u043a\u0438\u0439 \u0430\u0434\u0440\u0435\u0441 \u0432 dev, staging \u0438 prod \u0440\u0430\u0437\u043d\u044b\u0439 \u2014 \u043d\u043e \u043c\u0430\u0440\u0448\u0440\u0443\u0442 \u043e\u0434\u0438\u043d:From(&#171;direct:\/\/outbound&#187;)    .To(As2.Send(&#171;{{walmart.as2.url}}&#187;).ConnectionFactory(&#171;walmart&#187;));# appsettings.Development.json \u2192 &#171;walmart.as2.url&#187;: &#171;https:\/\/sandbox.partner\/as2&#8243;# appsettings.Production.json  \u2192 &#171;walmart.as2.url&#187;: &#171;https:\/\/edi.partner.com\/as2&#8243;\u0425\u043e\u0441\u0442, \u043f\u043e\u0440\u0442 \u043f\u0440\u0438\u0451\u043c\u043d\u0438\u043a\u0430, \u0438\u043c\u044f \u043f\u0430\u0440\u0442\u043d\u0451\u0440\u0430 \u0432\u044b\u043d\u043e\u0441\u044f\u0442\u0441\u044f \u0432 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044e, \u0430 \u043d\u0435 \u0445\u0430\u0440\u0434\u043a\u043e\u0434\u044f\u0442\u0441\u044f \u0432 \u043c\u0430\u0440\u0448\u0440\u0443\u0442. \u0421\u0435\u043a\u0440\u0435\u0442\u044b \u2014 \u043f\u0430\u0440\u043e\u043b\u044c \u043e\u0442 PFX \u2014 \u043f\u0440\u0438\u0445\u043e\u0434\u044f\u0442 \u0438\u0437 \u0442\u043e\u0433\u043e \u0436\u0435 \u0441\u043b\u043e\u044f (\u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0435 \u043e\u043a\u0440\u0443\u0436\u0435\u043d\u0438\u044f, user-secrets) \u0438 \u043d\u0435 \u043e\u0441\u0435\u0434\u0430\u044e\u0442 \u0432 \u0438\u0441\u0445\u043e\u0434\u043d\u0438\u043a\u0430\u0445. \u041e\u0434\u0438\u043d \u0438 \u0442\u043e\u0442 \u0436\u0435 \u0441\u043e\u0431\u0440\u0430\u043d\u043d\u044b\u0439 \u043e\u0431\u0440\u0430\u0437 \u0435\u0434\u0435\u0442 \u0438\u0437 dev \u0432 prod, \u043c\u0435\u043d\u044f\u0435\u0442\u0441\u044f \u0442\u043e\u043b\u044c\u043a\u043e \u043a\u043e\u043d\u0444\u0438\u0433.\u041e\u0442\u043f\u0440\u0430\u0432\u043a\u0430: \u043f\u043e\u0434\u043f\u0438\u0441\u0430\u043b\u0438, \u0437\u0430\u0448\u0438\u0444\u0440\u043e\u0432\u0430\u043b\u0438, \u043f\u043e\u043b\u0443\u0447\u0438\u043b\u0438 \u0440\u0430\u0441\u043f\u0438\u0441\u043a\u0443From(&#171;direct:\/\/outbound&#187;)    .To(As2.Send(&#171;https:\/\/partner.example.com\/as2&#187;).ConnectionFactory(&#171;walmart&#187;));\u0417\u0430 \u044d\u0442\u043e\u0439 \u043e\u0434\u043d\u043e\u0439 \u0441\u0442\u0440\u043e\u043a\u043e\u0439 \u2014 \u0441\u0436\u0430\u0442\u0438\u0435 (\u0435\u0441\u043b\u0438 \u0432\u043a\u043b\u044e\u0447\u0435\u043d\u043e), \u043f\u043e\u0434\u043f\u0438\u0441\u044c \u0432\u0430\u0448\u0438\u043c \u043a\u043b\u044e\u0447\u043e\u043c, \u0448\u0438\u0444\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u043c \u043f\u0430\u0440\u0442\u043d\u0451\u0440\u0430, POST \u0438 \u0440\u0430\u0437\u0431\u043e\u0440 \u043e\u0442\u0432\u0435\u0442\u043d\u043e\u0433\u043e MDN. \u0420\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u043e\u0431\u043c\u0435\u043d\u0430 \u043a\u043e\u043d\u043d\u0435\u043a\u0442\u043e\u0440 \u043a\u043b\u0430\u0434\u0451\u0442 \u043d\u0430\u00a0exchange.Out, \u0447\u0442\u043e\u0431\u044b \u043c\u0430\u0440\u0448\u0440\u0443\u0442 \u043c\u043e\u0433 \u043f\u0440\u0438\u043d\u044f\u0442\u044c \u0440\u0435\u0448\u0435\u043d\u0438\u0435:\u0417\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u043a \u043d\u0430\u00a0exchange.Out\u0427\u0442\u043e \u0437\u043d\u0430\u0447\u0438\u0442redbAs2.mdnDisposition\u0432\u0435\u0440\u0434\u0438\u043a\u0442 \u043f\u0430\u0440\u0442\u043d\u0451\u0440\u0430, \u043d\u0430\u043f\u0440.\u00a0automatic-action\/MDN-sent-automatically; processedredbAs2.signatureValidbool\u00a0\u2014 \u043f\u043e\u0434\u043f\u0438\u0441\u044c MDN \u043f\u0440\u043e\u0432\u0435\u0440\u0435\u043d\u0430redbAs2.mdnMicMatchbool\u00a0\u2014 \u043f\u0430\u0440\u0442\u043d\u0451\u0440 \u043f\u043e\u043b\u0443\u0447\u0438\u043b \u0440\u043e\u0432\u043d\u043e \u0442\u043e, \u0447\u0442\u043e \u043c\u044b \u043e\u0442\u043f\u0440\u0430\u0432\u0438\u043b\u0438, \u0431\u0435\u0437 \u0438\u0441\u043a\u0430\u0436\u0435\u043d\u0438\u0439\u0418 \u0442\u0443\u0442 \u0436\u0435, \u0432 \u0442\u043e\u043c \u0436\u0435 \u043c\u0430\u0440\u0448\u0440\u0443\u0442\u0435, \u0440\u0430\u0437\u0432\u0435\u0442\u0432\u043b\u044f\u0435\u043c\u0441\u044f \u043f\u043e \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0443:From(&#171;direct:\/\/outbound&#187;)    .To(As2.Send(&#171;https:\/\/partner\/as2&#187;).ConnectionFactory(&#171;walmart&#187;))    .Choice()        .When(e =&gt; e.Out!.GetHeader&lt;bool&gt;(As2Headers.MdnMicMatch))            .Log(&#171;\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u043e \u0438 \u043f\u043e\u0434\u0442\u0432\u0435\u0440\u0436\u0434\u0435\u043d\u043e&#187;)        .Otherwise()            .To(&#171;direct:\/\/delivery-alert&#187;);   \/\/ MIC \u043d\u0435 \u0441\u043e\u0448\u0451\u043b\u0441\u044f \u0438\u043b\u0438 \u043e\u0442\u0440\u0438\u0446\u0430\u0442\u0435\u043b\u044c\u043d\u044b\u0439 MDN \u2014 \u044d\u0441\u043a\u0430\u043b\u0430\u0446\u0438\u044f\u041a\u043e\u043d\u043d\u0435\u043a\u0442\u043e\u0440 \u043d\u0435 \u0431\u0440\u043e\u0441\u0430\u0435\u0442 \u0438\u0441\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435 \u043d\u0430 \u043e\u0442\u0440\u0438\u0446\u0430\u0442\u0435\u043b\u044c\u043d\u044b\u0439 MDN \u0438\u043b\u0438 \u0440\u0430\u0441\u0445\u043e\u0436\u0434\u0435\u043d\u0438\u0435 MIC \u2014 \u043e\u043d \u0432\u044b\u043a\u043b\u0430\u0434\u044b\u0432\u0430\u0435\u0442 \u0444\u0430\u043a\u0442 \u0438 \u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u0440\u0435\u0448\u0435\u043d\u0438\u0435 \u043c\u0430\u0440\u0448\u0440\u0443\u0442\u0443. \u0414\u043b\u044f \u043e\u0434\u043d\u043e\u0433\u043e \u043f\u0430\u0440\u0442\u043d\u0451\u0440\u0430 \u0440\u0430\u0441\u0445\u043e\u0436\u0434\u0435\u043d\u0438\u0435 MIC \u2014 \u043f\u043e\u0432\u043e\u0434 \u043d\u0435\u043c\u0435\u0434\u043b\u0435\u043d\u043d\u043e \u043f\u043e\u0434\u043d\u044f\u0442\u044c \u0442\u0440\u0435\u0432\u043e\u0433\u0443, \u0434\u043b\u044f \u0434\u0440\u0443\u0433\u043e\u0433\u043e \u2014 \u0437\u0430\u043f\u0438\u0441\u0430\u0442\u044c \u0432 \u0436\u0443\u0440\u043d\u0430\u043b \u0438 \u043f\u0440\u043e\u0434\u043e\u043b\u0436\u0438\u0442\u044c. \u042d\u0442\u043e \u043f\u043e\u043b\u0438\u0442\u0438\u043a\u0430 \u0432\u0430\u0448\u0435\u0433\u043e \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0430, \u0430 \u043d\u0435 \u0436\u0451\u0441\u0442\u043a\u043e \u0437\u0430\u0448\u0438\u0442\u043e\u0435 \u043f\u043e\u0432\u0435\u0434\u0435\u043d\u0438\u0435 \u0448\u043b\u044e\u0437\u0430.\u041f\u0440\u0438\u0451\u043c: AS2-\u0441\u0435\u0440\u0432\u0435\u0440 \u043a\u0430\u043a \u0438\u0441\u0442\u043e\u0447\u043d\u0438\u043a \u043c\u0430\u0440\u0448\u0440\u0443\u0442\u0430From(As2.Receive(&#171;\/inbound\/orders&#187;).Host(&#171;0.0.0.0&#187;).Port(4080).ConnectionFactory(&#171;walmart&#187;))    .Unmarshal(&#8230;)                 \/\/ \u0440\u0430\u0437\u0431\u043e\u0440 EDI \u2014 \u0432\u0430\u0448 \u0444\u043e\u0440\u043c\u0430\u0442    .To(&#171;direct:\/\/process-order&#187;);From(As2.Receive(&#8230;))\u00a0\u043f\u043e\u0434\u043d\u0438\u043c\u0430\u0435\u0442 AS2-\u0441\u0435\u0440\u0432\u0435\u0440. \u041f\u0440\u0438\u0448\u0435\u0434\u0448\u0438\u0439 \u043a\u043e\u043d\u0432\u0435\u0440\u0442 \u043a\u043e\u043d\u043d\u0435\u043a\u0442\u043e\u0440 \u0440\u0430\u0441\u0448\u0438\u0444\u0440\u043e\u0432\u044b\u0432\u0430\u0435\u0442 \u0432\u0430\u0448\u0438\u043c \u043f\u0440\u0438\u0432\u0430\u0442\u043d\u044b\u043c \u043a\u043b\u044e\u0447\u043e\u043c, \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u0442 \u043f\u043e\u0434\u043f\u0438\u0441\u044c \u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u043c \u043f\u0430\u0440\u0442\u043d\u0451\u0440\u0430, \u0440\u0430\u0441\u043f\u0430\u043a\u043e\u0432\u044b\u0432\u0430\u0435\u0442 \u2014 \u0438 \u0432 \u043c\u0430\u0440\u0448\u0440\u0443\u0442 \u043f\u043e\u043f\u0430\u0434\u0430\u0435\u0442\u00a0\u0447\u0438\u0441\u0442\u044b\u0439 \u0431\u0438\u0437\u043d\u0435\u0441-\u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442. \u0415\u0433\u043e \u0440\u0435\u0430\u043b\u044c\u043d\u044b\u0439 \u0442\u0438\u043f \u043b\u0435\u0436\u0438\u0442 \u043d\u0430\u00a0Message.ContentType\u00a0(\u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440,\u00a0application\/edi-x12), \u0430 \u043c\u0435\u0442\u0430\u0434\u0430\u043d\u043d\u044b\u0435 \u043e\u0431\u043c\u0435\u043d\u0430 \u2014 \u043f\u043e\u0434\u00a0redbAs2.*:\u0417\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u043a\u0427\u0442\u043e \u0437\u043d\u0430\u0447\u0438\u0442redbAs2.mic\u00a0\/\u00a0redbAs2.micalg\u0432\u044b\u0447\u0438\u0441\u043b\u0435\u043d\u043d\u044b\u0439 Message Integrity Check \u0438 \u0435\u0433\u043e \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043credbAs2.signatureValid\u0432\u0445\u043e\u0434\u044f\u0449\u0430\u044f \u043f\u043e\u0434\u043f\u0438\u0441\u044c \u043f\u0440\u043e\u0432\u0435\u0440\u0435\u043d\u0430 \u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u043c \u043f\u0430\u0440\u0442\u043d\u0451\u0440\u0430redbAs2.remoteAddressIP \u043e\u0442\u043f\u0440\u0430\u0432\u0438\u0442\u0435\u043b\u044fredbAs2.partner\u0438\u043c\u044f \u0441\u043e\u043f\u043e\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u043d\u043e\u0433\u043e\u00a0connectionFactory\u0421\u0438\u043d\u0445\u0440\u043e\u043d\u043d\u044b\u0439 MDN \u043a\u043e\u043d\u043d\u0435\u043a\u0442\u043e\u0440 \u0444\u043e\u0440\u043c\u0438\u0440\u0443\u0435\u0442 \u0438 \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u0441\u0430\u043c. AS2-\u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043a\u0438 \u0441\u0430\u043c\u043e\u0433\u043e \u043f\u0440\u043e\u0442\u043e\u043a\u043e\u043b\u0430 (AS2-From,\u00a0AS2-To,\u00a0Message-ID,\u00a0Subject) \u043a\u043b\u0430\u0434\u0443\u0442\u0441\u044f \u043d\u0430 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0435 \u043a\u0430\u043a \u0435\u0441\u0442\u044c. \u041e\u0431\u0451\u0440\u0442\u043e\u0447\u043d\u044b\u0439\u00a0Content-Type\u00a0S\/MIME-\u043a\u043e\u043d\u0432\u0435\u0440\u0442\u0430 \u0432 \u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043a\u0438\u00a0\u043d\u0435\u00a0\u043f\u0440\u043e\u0441\u0430\u0447\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u2014 \u043c\u0430\u0440\u0448\u0440\u0443\u0442 \u0432\u0438\u0434\u0438\u0442 \u0442\u0438\u043f \u0440\u0435\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430, \u0430 \u043d\u0435 \u0442\u0440\u0430\u043d\u0441\u043f\u043e\u0440\u0442\u043d\u0443\u044e \u043e\u0431\u0451\u0440\u0442\u043a\u0443.\u0410\u0441\u0438\u043d\u0445\u0440\u043e\u043d\u043d\u044b\u0439 MDN\u041a\u0440\u0443\u043f\u043d\u044b\u0435 \u043f\u0430\u0440\u0442\u043d\u0451\u0440\u044b \u0447\u0430\u0441\u0442\u043e \u0442\u0440\u0435\u0431\u0443\u044e\u0442 \u0430\u0441\u0438\u043d\u0445\u0440\u043e\u043d\u043d\u0443\u044e \u0440\u0430\u0441\u043f\u0438\u0441\u043a\u0443: \u043f\u0440\u0438\u043d\u044f\u043b\u0438 \u2014 \u043e\u0442\u0432\u0435\u0442\u0438\u043b\u0438 200, \u0430 \u043f\u043e\u0434\u043f\u0438\u0441\u0430\u043d\u043d\u044b\u0439 MDN \u043f\u0440\u0438\u0441\u043b\u0430\u043b\u0438 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u043c POST-\u043e\u043c \u043f\u043e\u0437\u0436\u0435. \u041e\u0442\u043f\u0440\u0430\u0432\u0438\u0442\u0435\u043b\u044c \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0438\u0440\u0443\u0435\u0442 \u0438\u0441\u0445\u043e\u0434\u044f\u0449\u0438\u0439\u00a0Message-ID, \u0430 \u0432\u0445\u043e\u0434\u044f\u0449\u0438\u0439 MDN \u043a\u043e\u0440\u0440\u0435\u043b\u0438\u0440\u0443\u0435\u0442\u0441\u044f \u043f\u043e\u00a0Original-Message-ID:\/\/ \u0412 \u043f\u0440\u043e\u0444\u0438\u043b\u0435 \u043f\u0430\u0440\u0442\u043d\u0451\u0440\u0430MdnMode = As2MdnMode.Async,AsyncMdnUrl = &#171;https:\/\/our-host:4081\/as2\/mdn&#187;,\/\/ \u041c\u0430\u0440\u0448\u0440\u0443\u0442\u044bFrom(As2.Receive(&#171;\/inbound&#187;).Host(&#171;0.0.0.0&#187;).Port(4080).ConnectionFactory(&#171;walmart&#187;))    .To(&#171;direct:\/\/process&#187;);From(As2.ReceiveMdn(&#171;\/as2\/mdn&#187;).Host(&#171;0.0.0.0&#187;).Port(4081).ConnectionFactory(&#171;walmart&#187;))    .Process(e =&gt;    {        var original = e.In.GetHeader&lt;string&gt;(As2Headers.MessageId);   \/\/ \u043a\u0430\u043a\u043e\u0439 \u043d\u0430\u0448 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442 \u043f\u043e\u0434\u0442\u0432\u0435\u0440\u0436\u0434\u0451\u043d        var ok = e.In.GetHeader&lt;bool&gt;(As2Headers.MdnMicMatch);         \/\/ \u0438 \u043f\u043e\u0434\u0442\u0432\u0435\u0440\u0436\u0434\u0451\u043d \u043b\u0438 \u0446\u0435\u043b\u044b\u043c    });\u041e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0439 endpoint \u043f\u043e\u0434 \u0432\u0445\u043e\u0434\u044f\u0449\u0438\u0435 MDN \u2014 \u044d\u0442\u043e \u0442\u043e\u0436\u0435 \u043f\u0440\u043e\u0441\u0442\u043e\u00a0From\u00a0\u0432 \u043c\u0430\u0440\u0448\u0440\u0443\u0442\u0435, \u0438 \u043f\u0440\u0438\u0445\u043e\u0434\u044f\u0449\u0430\u044f \u0440\u0430\u0441\u043f\u0438\u0441\u043a\u0430 \u0442\u0430\u043a \u0436\u0435 \u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u0441\u044f \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0435\u043c, \u0441 \u043a\u043e\u0442\u043e\u0440\u044b\u043c \u043c\u043e\u0436\u043d\u043e \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c: \u043e\u0431\u043d\u043e\u0432\u0438\u0442\u044c \u0441\u0442\u0430\u0442\u0443\u0441 \u0437\u0430\u043a\u0430\u0437\u0430, \u0441\u043d\u044f\u0442\u044c \u0441 \u0440\u0435\u0442\u0440\u0430\u044f, \u0437\u0430\u043a\u0440\u044b\u0442\u044c \u0441\u0430\u0433\u0443.\u041c\u0430\u0442\u0440\u0438\u0446\u0430 \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c\u043e\u0432\u041f\u0430\u0440\u0442\u043d\u0451\u0440\u044b \u0434\u043e\u0433\u043e\u0432\u0430\u0440\u0438\u0432\u0430\u044e\u0442\u0441\u044f \u043e \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u044b\u0445 \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c\u0430\u0445, \u0438 \u043a\u043e\u043d\u043d\u0435\u043a\u0442\u043e\u0440 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442 \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u044b\u0439 \u043d\u0430\u0431\u043e\u0440:\u041f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u0417\u043d\u0430\u0447\u0435\u043d\u0438\u044fSignAlgsha-1,\u00a0sha-256\u00a0(\u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e),\u00a0sha-384,\u00a0sha-512EncryptAlgaes-128-cbc\u00a0(\u043f\u043e&#8230;<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[],"tags":[],"class_list":["post-490726","post","type-post","status-publish","format-standard","hentry"],"_links":{"self":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/490726","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=490726"}],"version-history":[{"count":0,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/490726\/revisions"}],"wp:attachment":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=490726"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=490726"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=490726"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}