Nancy: рдХрдИ рд╕рдорд╡рд░реНрддреА рдЕрдиреБрд░реЛрдз

рдХреЛ рдирд┐рд░реНрдорд┐рдд 16 рдЕрдкреНрд░реИрд▓ 2016  ┬╖  9рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ  ┬╖  рд╕реНрд░реЛрдд: NancyFx/Nancy

рд╡рд┐рд╡рд░рдг

рдиреИрдиреНрд╕реА рдПрдХ рд╕рд╛рде рдХрдИ (<10) рд╕рдорд╡рд░реНрддреА рдЕрдиреБрд░реЛрдзреЛрдВ рдХреЛ рдкреВрд░рд╛ рдирд╣реАрдВ рдХрд░ рд╕рдХрддреА рд╣реИред

рдкреНрд░рдЬрдирди рдХреЗ рдЪрд░рдг

  1. рдПрдХ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рд╕реЗ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреА рд╕реЗрд╡рд╛ рдХреЗ рд▓рд┐рдП рдПрдХ StaticContentsConventions рдЬреЛрдбрд╝реЗрдВред
  2. рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдореЗрдВ рдПрдХ рд▓рдВрдмреА рд╡реАрдбрд┐рдпреЛ рдлрд╝рд╛рдЗрд▓ рдХреА рдкреНрд░рддрд┐рд▓рд┐рдкрд┐ рдмрдирд╛рдПрдБред
  3. рд╕рднреА рдХреЛ рдЗрдВрдЧрд┐рдд рдХрд░рдХреЗ рдЕрдкрдиреЗ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдореЗрдВ рд╡реАрдбрд┐рдпреЛ рдХреЛ рдХрдИ рдЯреИрдм (>10) рдореЗрдВ рдЦреЛрд▓реЗрдВ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП http://localhost/myvideo.mp4ред
  4. рдирд┐рд░реАрдХреНрд╖рдг рдХрд░реЗрдВ: рд╡реАрдбрд┐рдпреЛ рд╕рднреА рдЯреИрдм рдкрд░ рдкреНрд░рджрд░реНрд╢рд┐рдд рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИ, рдЗрд╕рдХреЗ рдмрдЬрд╛рдп рд╡реЗ рддрдм рддрдХ рдХрдиреЗрдХреНрд╢рди рдХреА рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░рддреЗ рд╣реИрдВ рдЬрдм рддрдХ рдЖрдк рдЕрдиреНрдп рдЯреИрдм рдмрдВрдж рдирд╣реАрдВ рдХрд░рддреЗред

    рдкреНрд░рдгрд╛рд▓реА рд╡рд┐рдиреНрдпрд╛рд╕

  • рдиреИрдиреНрд╕реА рд╕рдВрд╕реНрдХрд░рдг: 1.4.1
  • рдиреИрдиреНрд╕реА рд╣реЛрд╕реНрдЯ: OWIN
  • рдмреНрд░рд╛рдЙрдЬрд╝рд░: рдХреНрд░реЛрдо

рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгреА

рд╕реНрдерд┐рд░ рд╕рд╛рдордЧреНрд░реА (рдпрд╛ рдХрд┐рд╕реА рдЕрдиреНрдп http рд╕рд░реНрд╡рд░) рдХреЗ рд▓рд┐рдП nginx рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рд╡рд┐рдХрд▓реНрдкред

рд╕рднреА 9 рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

рдпрд╣ рдЧреИрд░-рд╕рд░реНрд╡рд░ рд╡рд┐рдВрдбреЛрдЬрд╝ рдУрдПрд╕ рдкрд░ рдкреВрд░реНрдг рдЖрдИрдЖрдИрдПрд╕ рдХреЗ рд╕рд╛рде рдПрдХ рдЖрдо рд╕рдорд╕реНрдпрд╛ рдХреА рдЪреАрдЦ рд╣реИ, рдЖрдк рд╡рд┐рдВрдбреЛрдЬрд╝/рдЖрдИрдЖрдИрдПрд╕ рдХреЗ рдХрд┐рд╕ рд╕рдВрд╕реНрдХрд░рдг рдореЗрдВ рдЪрд▓ рд░рд╣реЗ рд╣реИрдВ (рдпрджрд┐ рдмрд┐рд▓реНрдХреБрд▓ рднреА)?

рдЙрд▓реНрд▓реЗрдЦ рдХрд░рдирд╛ рднреВрд▓ рдЧрдпрд╛: рдореИрдВ Microsoft.Owin.Host.HttpListener рдХреЗ рд╕рд╛рде рд╕реЗрд▓реНрдлрд╣реЛрд╕реНрдЯрд┐рдВрдЧ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реВрдБред
рд╢рд╛рдпрдж рдпрд╣реА рд╕рдорд╕реНрдпрд╛ рд╣реИ?
рдУрдПрд╕ рд╡рд┐рдВрдбреЛрдЬ 10 рд╣реИред
рд╕реЗрд▓реНрдлрд╣реЛрд╕реНрдЯрд┐рдВрдЧ рдХреЗ рд▓рд┐рдП рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рд╡рд┐рдХрд▓реНрдк рдХреНрдпрд╛ рд╣реЛрдЧрд╛?

рд╕реНрдерд┐рд░ рд╕рд╛рдордЧреНрд░реА (рдпрд╛ рдХрд┐рд╕реА рдЕрдиреНрдп http рд╕рд░реНрд╡рд░) рдХреЗ рд▓рд┐рдП nginx рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рд╡рд┐рдХрд▓реНрдкред

рдореИрдВ рд╕рд╣рдордд рд╣реВрдВ @ рдХрд┐рд░реА-рд░рд┐рди nginx рд╕реНрдерд┐рд░ рд╕рд╛рдордЧреНрд░реА рдХреЗ рд▓рд┐рдП рдПрдХрджрдо рд╕рд╣реА рд╣реИ рдФрд░ рдлрд┐рд░ рдиреИрдиреНрд╕реА рдХреЛ рдПрдкреАрдЖрдИ рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рд╕рд╛рдорд╛рди рдХреЛ рд╕рдВрднрд╛рд▓рдиреЗ рджреЗрдВред

рдЦреИрд░, рд╕рдорд╕реНрдпрд╛ рдпрд╣ рд╣реИ рдХрд┐ рдореЗрд░реЗ рдкрд╛рд╕ рдЧреИрд░-рд╕реНрдерд┐рд░ рд╕рд╛рдордЧреНрд░реА рднреА рд╣реИ рдЬреЛ рдмрдбрд╝реА рд╣реИ рдпрд╛ рдЙрддреНрдкрдиреНрди рд╣реЛрдиреЗ рдореЗрдВ рдХреБрдЫ рд╕рдордп рд▓реЗрддреА рд╣реИред
рдореИрдВ рд╕рдордЭрддрд╛ рд╣реВрдВ рдХрд┐ рд╣рд╛рд▓рд╛рдВрдХрд┐ рдпрд╣ рдХреЛрдИ рд╕рд╛рдорд╛рдиреНрдп рдЙрдкрдпреЛрдЧ рдХрд╛ рдорд╛рдорд▓рд╛ рдирд╣реАрдВ рд╣реИред
рдореИрдВ рдЖрдЧреЗ рдЗрд╕рдХреА рдЬрд╛рдВрдЪ рдХрд░реВрдВрдЧрд╛ред рдЕрдЧрд░ рдХреЛрдИ рдореБрдЭреЗ рд╕рдВрдХреЗрдд рджреЗ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рд╕рдорд╕реНрдпрд╛ рдХрд╣рд╛рдВ рд╣реЛ рд╕рдХрддреА рд╣реИ рддреЛ рдпрд╣ рдмрд╣реБрдд рдЕрдЪреНрдЫрд╛ рд╣реЛрдЧрд╛ред

@ рдХреЛрдбреА 82 рдпрджрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ рд▓рдВрдмреЗ рд╕рдордп рддрдХ рдЪрд▓рдиреЗ рд╡рд╛рд▓реЗ рдорд╛рд░реНрдЧ рд╣реИрдВ рддреЛ рдЖрдкрдХреЛ рдЙрдиреНрд╣реЗрдВ

рд╣рд╛рдВред рддреЛ рдХреНрдпрд╛ рдЗрд╕рдХрд╛ рдорддрд▓рдм рдпрд╣ рд╣реИ рдХрд┐ рд╕рдорд╕реНрдпрд╛ рдиреИрдиреНрд╕реА рдореЗрдВ рд╕рд╛рдорд╛рдиреНрдп HTTP рдЕрдиреБрд░реЛрдз рд╕реЗ рдирд┐рдкрдЯрдиреЗ рдореЗрдВ рдирд╣реАрдВ рд╣реИ, рдмрд▓реНрдХрд┐ рд╕реНрдерд┐рд░ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЗ рд▓рд┐рдП рд╣реИрдВрдбрд▓рд░ рдореЗрдВ рд╣реИ рдЬреЛ рдареАрдХ рд╕реЗ async рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░рддреА рд╣реИ?

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

рдореИрдВрдиреЗ рд╕рдорд╕реНрдпрд╛ рдХреЛ GenericFileResponse.GetFileContent рдкрд░ рдЯреНрд░реИрдХ рдХрд┐рдпрд╛ рд╣реИ:

c# private static Action<Stream> GetFileContent(string filePath, long length) { return stream => { using (var file = File.OpenRead(filePath)) { file.CopyTo(stream, (int)(length < BufferSize ? length : BufferSize)); } }; }

рддреЛ File.CopyTo рдлрд╛рдЗрд▓/рд╡реАрдбрд┐рдпреЛ рдЯреНрд░рд╛рдВрд╕рдлрд░ рд╣реЛрдиреЗ рдХреЗ рджреМрд░рд╛рди рдереНрд░реЗрдб рдХреЛ рдмреНрд▓реЙрдХ рдХрд░ рджреЗрддрд╛ рд╣реИред
(рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛ рдпрд╣ рд╡рд░реНрдЧ рдЖрдВрд╢рд┐рдХ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛рдУрдВ рдХреЛ рд╕рдВрднрд╛рд▓рдиреЗ рдХреЗ рд▓рд┐рдП рд╕реАрдо рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ рд▓реЗрдХрд┐рди рдпрд╣ рдПрдХ рдФрд░ рдореБрджреНрджрд╛ рд╣реИред)
рдореБрдЭреЗ рд╕рдВрджреЗрд╣ рд╣реИ рдХрд┐ рдЗрд╕реЗ рд╕рд┐рд░реНрдл рдПрдХ рдПрд╕рд┐рдВрдХ рдлрд╝рдВрдХреНрд╢рди рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рд▓реЗрдХрд┐рди рдореИрдВ рдЧрд▓рдд рд╣реЛ рд╕рдХрддрд╛ рд╣реВрдВ?

(рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛ рдпрд╣ рд╡рд░реНрдЧ рдЖрдВрд╢рд┐рдХ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛рдУрдВ рдХреЛ рд╕рдВрднрд╛рд▓рдиреЗ рдХреЗ рд▓рд┐рдП рд╕реАрдо рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ рд▓реЗрдХрд┐рди рдпрд╣ рдПрдХ рдФрд░ рдореБрджреНрджрд╛ рд╣реИред)

@ рдХреЛрдбреА82 рдореИрдВрдиреЗ рд╡реАрдбрд┐рдпреЛ/рдСрдбрд┐рдпреЛ рд╕реНрдЯреНрд░реАрдорд┐рдВрдЧ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЗ рд▓рд┐рдП рдПрдХ рдкрд╛рд░реНрдЯрд┐рдпрд▓рдлрд╛рдЗрд▓ рд░рд┐рд╕реНрдкреЙрдиреНрд╕ рдмрдирд╛рдпрд╛: https://gist.github.com/danbarua/0fd9fcad5ec85e0c02dc

рдереЛрдбрд╝реА рд╕рдлрд╛рдИ рдХреА рдЬрд░реВрд░рдд рд╣реИ рд▓реЗрдХрд┐рди рд╕рдВрднрд╡рддрдГ рдиреИрдиреНрд╕реА рдореЗрдВ рд╡рд┐рд▓рдп рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдпрд╛ рдЬреЗрдиреЗрд░рд┐рдХрдлрд╛рдЗрд▓ рд░реЗрд╕реНрдкреЙрдиреНрд╕ рдореЗрдВ рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдЬреЛрдбрд╝рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

рдХреНрдпрд╛ рдпрд╣ рдкреГрд╖реНрда рдЙрдкрдпреЛрдЧреА рдерд╛?
0 / 5 - 0 рд░реЗрдЯрд┐рдВрдЧреНрд╕

рд╕рдВрдмрдВрдзрд┐рдд рдореБрджреНрджреЛрдВ

epsitec picture epsitec  ┬╖  5рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

jchannon picture jchannon  ┬╖  9рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

lgabryel picture lgabryel  ┬╖  7рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

thecodejunkie picture thecodejunkie  ┬╖  8рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

ndphuong picture ndphuong  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ