рдХреНрдпреЛрдВ рдпреВрдирд┐рдЯ рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдЧреБрдгрд╡рддреНрддрд╛ рд╡рд╛рд╕реНрддреБрдХрд▓рд╛ рдореЗрдВ рдПрдХ рдорд╣рд╛рди рдирд┐рд╡реЗрд╢ рд╣реИ

рдПрдХ рдЕрдВрдЧреНрд░реЗрдЬреА рдмреЛрд▓рдиреЗ рд╡рд╛рд▓реЗ .net рд╕рдореБрджрд╛рдп рдореЗрдВ рдЗрдХрд╛рдИ рдкрд░реАрдХреНрд╖рдг рдХреЗ рд▓рд┐рдП рд╕рдорд░реНрдкрд┐рдд рд╡рд┐рд╖рдп рдиреЗ рдореБрдЭреЗ рдЗрд╕ рддрдереНрдп рдХреЛ рд╕рдордЭрдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд░реЗрд░рд┐рдд рдХрд┐рдпрд╛ рдХрд┐ рдЗрдХрд╛рдИ рдкрд░реАрдХреНрд╖рдг рди рдХреЗрд╡рд▓ рдХреЛрдб рдореЗрдВ рдкреНрд░рддрд┐рдЧрдорди рдХрд╛ рдореБрдХрд╛рдмрд▓рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдЙрдкрдХрд░рдг рд╣реИ, рдмрд▓реНрдХрд┐ рдЙрдЪреНрдЪ рдЧреБрдгрд╡рддреНрддрд╛ рд╡рд╛рд▓реЗ рд╡рд╛рд╕реНрддреБрдХрд▓рд╛ рдореЗрдВ рдПрдХ рдЙрддреНрдХреГрд╖реНрдЯ рдирд┐рд╡реЗрд╢ рднреА рд╣реИред рд╡рд┐рд╖рдп рдХреЗ рд▓реЗрдЦрдХ рдЬреЙрдиреА рдереЗ рдФрд░ рдЙрдиреНрд╣реЛрдВрдиреЗ рд╡рд┐рддреНрддреАрдп рдХреНрд╖реЗрддреНрд░ рдореЗрдВ рдЙрджреНрдпрдореЛрдВ рдХреЗ рд▓рд┐рдП рд╕реЙрдлреНрдЯрд╡реЗрдпрд░ рдХреЗ рд╡рд┐рдХрд╛рд╕ рдореЗрдВ рд▓рдЧреА рдХрдВрдкрдиреА рдореЗрдВ рдЕрдкрдирд╛ рдкрд╣рд▓рд╛ (рдФрд░ рдЕрдВрддрд┐рдо) рджрд┐рди рд╡рд░реНрдгрд┐рдд рдХрд┐рдпрд╛ рдерд╛ред рдЬреЙрдиреА рдиреЗ рдПрдХ рдЗрдХрд╛рдИ рдкрд░реАрдХреНрд╖рдг рдбреЗрд╡рд▓рдкрд░ рдХреЗ рд░реВрдк рдореЗрдВ рдиреМрдХрд░реА рдХрд╛ рджрд╛рд╡рд╛ рдХрд┐рдпрд╛ рдФрд░ рдХреЛрдб рдХреА рдЦрд░рд╛рдм рдЧреБрдгрд╡рддреНрддрд╛ рд╕реЗ рдкрд░реЗрд╢рд╛рди рдерд╛, рдЬрд┐рд╕реЗ рд╡рд╣ рдкрд░реАрдХреНрд╖рдг рдХреЗ рд╕рд╛рде рдЖрд░реЛрдкрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рдЙрдиреНрд╣реЛрдВрдиреЗ рдЙрди рдХреЛрдбреЛрдВ рдХреА рддреБрд▓рдирд╛ рдХреА рдЬрд┐рдиреНрд╣реЗрдВ рдЙрдиреНрд╣реЛрдВрдиреЗ рд╡рд╕реНрддреБрдУрдВ рд╕реЗ рднрд░реЗ рдбрдВрдк рдХреЗ рд╕рд╛рде рджреЗрдЦрд╛ рдерд╛ рдЬреЛ рдХрд┐рд╕реА рднреА рд╕реНрдерд╛рди рдкрд░ рдЕрдирд┐рдпрдВрддреНрд░рд┐рдд рд░реВрдк рд╕реЗ рдПрдХ рджреВрд╕рд░реЗ рдХреЛ рдЗрд╕рдХреЗ рд▓рд┐рдП рдЕрдиреБрдкрдпреБрдХреНрдд рдмрдирд╛ рджреЗрддреЗ рдереЗред рдЙрдиреНрд╣реЛрдВрдиреЗ рдпрд╣ рднреА рд▓рд┐рдЦрд╛ рдХрд┐ рд╡реЗ рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдореЗрдВ рдЕрдореВрд░реНрдд рдбреЗрдЯрд╛ рдкреНрд░рдХрд╛рд░реЛрдВ рдХреЛ рдЦреЛрдЬрдиреЗ рдореЗрдВ рдЕрд╕рдорд░реНрде рдереЗ, рдХреЛрдб рдореЗрдВ рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдХрд╕рдХрд░ рдЗрдВрдЯрд░рд╡реЙрд╡рди рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рд╢рд╛рдорд┐рд▓ рдереЗ рдЬреЛ рдПрдХ-рджреВрд╕рд░реЗ рдХреЛ рдХреНрд░реЙрд╕-рдХреЙрд▓ рдХрд░рддреЗ рдереЗред рдЬреЙрдиреА рдиреЗ рдЗрд╕ рдХрдВрдкрдиреА рдореЗрдВ рдЗрдХрд╛рдИ рдкрд░реАрдХреНрд╖рдг рдХреЗ рдЕрднреНрдпрд╛рд╕ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреА рдирд┐рд░рд░реНрдердХрддрд╛ рдХреЛ рдорд╣рд╕реВрд╕ рдХрд░рддреЗ рд╣реБрдП, рдЙрд╕ рд╕реНрдерд┐рддрд┐ рдХреЛ рд░реЗрдЦрд╛рдВрдХрд┐рдд рдХрд┐рдпрд╛, рдЬреЛ рдкреНрд░рдмрдВрдзрдХ рдиреЗ рдЙрд╕реЗ рдХрд╛рдо рдкрд░ рд░рдЦрд╛ рдерд╛ рдФрд░ рдЖрдЧреЗ рдХреЗ рд╕рд╣рдпреЛрдЧ рд╕реЗ рдЗрдирдХрд╛рд░ рдХрд░рддреЗ рд╣реБрдП, рдЖрдЦрд┐рд░рдХрд╛рд░ рдЕрдкрдиреЗ рджреГрд╖реНрдЯрд┐рдХреЛрдг рд╕реЗ рдореВрд▓реНрдпрд╡рд╛рди рд╕рд▓рд╛рд╣ рджреАред рдЙрдиреНрд╣реЛрдВрдиреЗ рд╡рд┐рдХрд╛рд╕ рдЯреАрдо рдХреЛ рдЙрди рдкрд╛рдареНрдпрдХреНрд░рдореЛрдВ рдореЗрдВ рднреЗрдЬрдиреЗ рдХреА рд╕рд▓рд╛рд╣ рджреА, рдЬрд╣рд╛рдБ рдЙрдиреНрд╣реЗрдВ рд╡рд╕реНрддреБрдУрдВ рдХреЛ рд╕рд╣реА рдврдВрдЧ рд╕реЗ рдЗрдВрд╕реНрдЯреЗрдВрдЯ рдХрд░рдиреЗ рдФрд░ рдЕрдореВрд░реНрдд рдбреЗрдЯрд╛ рдкреНрд░рдХрд╛рд░реЛрдВ рдХрд╛ рд▓рд╛рдн рдЙрдард╛рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рд┐рдЦрд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдореБрдЭреЗ рдирд╣реАрдВ рдкрддрд╛ рдХрд┐ рдкреНрд░рдмрдВрдзрдХ рдиреЗ рд╕рд▓рд╛рд╣ рдХрд╛ рдкрд╛рд▓рди рдХрд┐рдпрд╛ (рдореБрдЭреЗ рдирд╣реАрдВ рд▓рдЧрддрд╛), рд▓реЗрдХрд┐рди рдпрджрд┐ рдЖрдк рд░реБрдЪрд┐ рд░рдЦрддреЗ рд╣реИрдВ рдХрд┐ рдЬреЙрдиреА рдХреЗ рдорди рдореЗрдВ рдХреНрдпрд╛ рдерд╛ рдФрд░ рдЗрдХрд╛рдИ рдкрд░реАрдХреНрд╖рдг рдкреНрд░рдерд╛рдУрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдЖрдкрдХреА рд╡рд╛рд╕реНрддреБрдХрд▓рд╛ рдХреА рдЧреБрдгрд╡рддреНрддрд╛ рдХреЛ рдХреИрд╕реЗ рдкреНрд░рднрд╛рд╡рд┐рдд рдХрд░ рд╕рдХрддрд╛ рд╣реИ, рддреЛ рдЖрдкрдХрд╛ рд╕реНрд╡рд╛рдЧрдд рд╣реИ, рд╣рдо рдПрдХ рд╕рд╛рде рдирд┐рдкрдЯреЗрдВрдЧреЗред

рдирд┐рд░реНрднрд░рддрд╛ рдЕрд▓рдЧрд╛рд╡ - рдЗрдХрд╛рдИ рдкрд░реАрдХреНрд╖рдг рдЖрдзрд╛рд░

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

рд╕реНрдкрд╖реНрдЯрддрд╛ рдХреЗ рд▓рд┐рдП рдЙрджрд╛рд╣рд░рдг

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

//     C#.  1. public class MessagingService { public void SendMessage(Guid messageAuthorId, Guid messageRecieverId, string message) { //        new MessagesRepository().SaveMessage(messageAuthorId, messageRecieverId, message); //,     if (UsersService.IsUserOnline(messageRecieverId)) { //  ,     NotificationsService.SendNotificationToUser(messageAuthorId, messageRecieverId, message); } } } 


рдЖрдЗрдП рджреЗрдЦреЗрдВ рдХрд┐ рд╣рдорд╛рд░реЗ рдореЙрдбреНрдпреВрд▓ рдореЗрдВ рдХреНрдпрд╛ рдирд┐рд░реНрднрд░рддрд╛рдПрдВ рд╣реИрдВред SendMessage рдлрд╝рдВрдХреНрд╢рди, NotificationsService, UsersService рдСрдмреНрдЬреЗрдХреНрдЯреНрд╕ рдХреЗ рд╕реНрдерд┐рд░ рддрд░реАрдХреЛрдВ рдХреЛ рдХреЙрд▓ рдХрд░рддрд╛ рд╣реИ рдФрд░ рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЬрд┐рдореНрдореЗрджрд╛рд░ MessageRepository рдСрдмреНрдЬреЗрдХреНрдЯ рдмрдирд╛рддрд╛ рд╣реИред рд╣рдорд╛рд░реЗ рдореЙрдбреНрдпреВрд▓ рдХреЛ рдЕрдиреНрдп рд╡рд╕реНрддреБрдУрдВ рдХреЗ рд╕рд╛рде рдмрд╛рддрдЪреАрдд рдХрд░рдиреЗ рдореЗрдВ рдХреЛрдИ рд╕рдорд╕реНрдпрд╛ рдирд╣реАрдВ рд╣реИред рд╕рдорд╕реНрдпрд╛ рдпрд╣ рд╣реИ рдХрд┐ рдпрд╣ рдЗрдВрдЯрд░реИрдХреНрд╢рди рдХреИрд╕реЗ рдмрдирд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдЕрд╕рдлрд▓ рд░реВрдк рд╕реЗ рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рд╣реИред рддреГрддреАрдп-рдкрдХреНрд╖ рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЗ рддрд░реАрдХреЛрдВ рддрдХ рд╕реАрдзреА рдкрд╣реБрдВрдЪ рдиреЗ рд╣рдорд╛рд░реЗ рдореЙрдбреНрдпреВрд▓ рдХреЛ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЗ рд╕рд╛рде рдХрд╕рдХрд░ рдЬреЛрдбрд╝рд╛ред рдЗрд╕ рдЗрдВрдЯрд░реИрдХреНрд╢рди рдореЗрдВ рдХрдИ рдХрдорд┐рдпрд╛рдВ рд╣реИрдВ, рд▓реЗрдХрд┐рди рд╣рдорд╛рд░реЗ рд▓рд┐рдП рдореБрдЦреНрдп рдмрд╛рдд рдпрд╣ рд╣реИ рдХрд┐ рдореИрд╕реЗрдЬрд┐рдВрдЧ рд╕рд░реНрд╡рд┐рд╕ рд╕рд░реНрд╡рд┐рд╕ рдХреЛ рдиреЛрдЯрд┐рдлрд┐рдХреЗрд╢рди рд╕рд░реНрд╡рд┐рд╕, рдпреВрдЬрд░реНрд╕ рд╕рд░реНрд╡рд┐рд╕ рдФрд░ рдореИрд╕реЗрдЬ рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдСрдмреНрдЬреЗрдХреНрдЯреНрд╕ рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рд╕реЗ рдЕрд▓рдЧ-рдерд▓рдЧ рдХрд░рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рдЦреЛ рджреА рд╣реИред рд╣рдо рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдПрдХ рдЗрдХрд╛рдИ рдкрд░реАрдХреНрд╖рдг рдХреЗ рднрд╛рдЧ рдХреЗ рд░реВрдк рдореЗрдВ рдЗрди рд╡рд╕реНрддреБрдУрдВ рдХреЛ рд╕реНрдЯрдмреНрд╕ рдХреЗ рд╕рд╛рде рдмрджрд▓ рдирд╣реАрдВ рд╕рдХрддреЗ рд╣реИрдВред
рдЕрдм рджреЗрдЦрддреЗ рд╣реИрдВ рдХрд┐ рдбреЗрд╡рд▓рдкрд░ рдЕрдкрдиреА рдкрд░реАрдХреНрд╖рдг рдХреНрд╖рдорддрд╛ рдХрд╛ рдзреНрдпрд╛рди рд░рдЦрддрд╛ рд╣реИ рддреЛ рдпрд╣ рдореЙрдбреНрдпреВрд▓ рдХреИрд╕рд╛ рджрд┐рдЦреЗрдЧрд╛ред

 //     C#.  2. public class MessagingService: IMessagingService { private readonly IUserService _userService; private readonly INotificationService _notificationService; private readonly IMessagesRepository _messagesRepository; public MessagingService(IUserService userService, INotificationService notificationService, IMessagesRepository messagesRepository) { _userService = userService; _notificationService = notificationService; _messagesRepository = messagesRepository; } public void AddMessage(Guid messageAuthorId, Guid messageRecieverId, string message) { //        _messagesRepository.SaveMessage(messageAuthorId, messageRecieverId, message); //,     if (_userService.IsUserOnline(messageRecieverId)) { //   _notificationService.SendNotificationToUser(messageAuthorId, messageRecieverId, message); } } } 


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

рд╣рдо рд╕рдВрджреЗрд╢ рднреЗрдЬрдиреЗ рд╡рд╛рд▓реЗ рдореЙрдбреНрдпреВрд▓ рдХреЗ рд▓рд┐рдП рдПрдХ рдкрд░реАрдХреНрд╖рдг рд▓рд┐рдЦ рд░рд╣реЗ рд╣реИрдВ

рдкрд░реАрдХреНрд╖рдг рд╡рд┐рдирд┐рд░реНрджреЗрд╢
рд╣рдо рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рддреЗ рд╣реИрдВ рдХрд┐ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд╣рдорд╛рд░реЗ рдкрд░реАрдХреНрд╖рдг рдХреЛ рдХреНрдпрд╛ рдЬрд╛рдВрдЪрдирд╛ рдЪрд╛рд╣рд┐рдПред

  • IMessageRepository.SaveMessage рдкрджреНрдзрддрд┐ рдХреЗ рд▓рд┐рдП рдПрдХрд▓ рдХреЙрд▓ рдХрд╛ рддрдереНрдп
  • INUificationsService.SendNotificationToUser () рд╡рд┐рдзрд┐ рдХреЗ рд▓рд┐рдП рдПрдХ рдПрдХрд▓ рдХреЙрд▓ рдХрд╛ рддрдереНрдп, рдпрджрд┐ IsUserOnline () рд╡рд┐рдзрд┐ IUserService рдСрдмреНрдЬреЗрдХреНрдЯ рдкрд░ рд╕реНрдЯрдмреНрд╕ рд╕рд╣реА рд▓реМрдЯреЗ
  • рдХреЙрд▓рд┐рдВрдЧ рдХреА рдХрдореА INOTificationsService.SendNotificationToUser () рд╡рд┐рдзрд┐, рдпрджрд┐ IsUserOnline () рд╡рд┐рдзрд┐ IUserService рдСрдмреНрдЬреЗрдХреНрдЯ рдкрд░ рдареВрдВрда рдЧрд▓рдд рд╣реИ

рдЗрди рддреАрди рд╢рд░реНрддреЛрдВ рдХреЛ рдкреВрд░рд╛ рдХрд░рдиреЗ рд╕реЗ рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рд╣реЛрддрд╛ рд╣реИ рдХрд┐ SendMessage рдкрджреНрдзрддрд┐ рдХрд╛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рд╕рд╣реА рд╣реИ рдФрд░ рддреНрд░реБрдЯрд┐ рдореБрдХреНрдд рд╣реИред

рдкрд░реАрдХреНрд╖рдг
Moq рдЖрдЗрд╕реЛрд▓реЗрд╢рди рдлреНрд░реЗрдорд╡рд░реНрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдкрд░реАрдХреНрд╖рдг рдХреЛ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред
 [TestMethod] public void AddMessage_MessageAdded_SavedOnce() { //Arrange // Guid messageAuthorId = Guid.NewGuid(); //,   Guid recieverId = Guid.NewGuid(); //,     string msg = "message"; //    IsUserOnline  IUserService Mock<IUserService> userServiceStub = new Mock<IUserService>(new MockBehavior()); userServiceStub.Setup(x => x.IsUserOnline(It.IsAny<Guid>())).Returns(true); //  INotificationService  IMessagesRepository Mock<INotificationService> notificationsServiceMoq = new Mock<INotificationService>(); Mock<IMessagesRepository> repositoryMoq = new Mock<IMessagesRepository>(); //  ,         var messagingService = new MessagingService(userServiceStub.Object, notificationsServiceMoq.Object, repositoryMoq.Object); //Act messagingService.AddMessage(messageAuthorId, recieverId, msg); //Assert repositoryMoq.Verify(x => x.SaveMessage(messageAuthorId, recieverId, msg), Times.Once); } [TestMethod] public void AddMessage_MessageSendedToOffnlineUser_NotificationDoesntRecieved() { //Arrange // Guid messageAuthorId = Guid.NewGuid(); //   Guid offlineReciever = Guid.NewGuid(); //,     string msg = "message"; //    IsUserOnline  IUserService Mock<IUserService> userServiceStub = new Mock<IUserService>(new MockBehavior()); userServiceStub.Setup(x => x.IsUserOnline(offlineReciever)).Returns(false); //  INotificationService  IMessagesRepository Mock<INotificationService> notificationsServiceMoq = new Mock<INotificationService>(); Mock<IMessagesRepository> repositoryMoq = new Mock<IMessagesRepository>(); //  ,         var messagingService = new MessagingService(userServiceStub.Object, notificationsServiceMoq.Object, repositoryMoq.Object); //Act messagingService.AddMessage(messageAuthorId, offlineReciever, msg); //Assert notificationsServiceMoq.Verify(x => x.SendNotificationToUser(messageAuthorId, offlineReciever, msg), Times.Never); } [TestMethod] public void AddMessage_MessageSendedToOnlineUser_NotificationRecieved() { //Arrange // Guid messageAuthorId = Guid.NewGuid(); //,   Guid onlineRecieverId = Guid.NewGuid(); //,     string msg = "message"; //    IsUserOnline  IUserService Mock<IUserService> userServiceStub = new Mock<IUserService>(new MockBehavior()); userServiceStub.Setup(x => x.IsUserOnline(onlineRecieverId)).Returns(true); //  INotificationService  IMessagesRepository Mock<INotificationService> notificationsServiceMoq = new Mock<INotificationService>(); Mock<IMessagesRepository> repositoryMoq = new Mock<IMessagesRepository>(); //  ,         var messagingService = new MessagingService(userServiceStub.Object, notificationsServiceMoq.Object, repositoryMoq.Object); //Act messagingService.AddMessage(messageAuthorId, onlineRecieverId, msg); //Assert notificationsServiceMoq.Verify(x => x.SendNotificationToUser(messageAuthorId, onlineRecieverId, msg), Times.Once); } 



рд╕рд╣реА рд╡рд╛рд╕реНрддреБрдХрд▓рд╛ рдвреВрдБрдврдирд╛ - рдПрдХ рд╡реНрдпрд░реНрде рд╡реНрдпрд╛рдпрд╛рдо

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

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


All Articles