2010-10-08 17 views
5

इस कोड के साथ एक ASP.NET पेज पर विचार करें:ASP.NET के साथ विशाल बाइनरी फ़ाइलों को स्थानांतरित करने के लिए सबसे अच्छा अभ्यास क्या है?

while (read) 
{ 
    Response.OutputStream.Write(buffer, 0, buffer.Length); 
    Response.Flush(); 
} 

आवेदन अत्यधिक प्रदर्शन-देखते हो सकता है और समवर्ती अनुरोध और मुख्य उद्देश्य उच्च गति कनेक्शन पर ग्राहकों के लिए बहुत बड़ा बाइनरी फ़ाइल स्थानांतरित कर रहा है पर हजारों संभाल चाहिए। मैं HTTP Handler, IHttpAsyncHandler, ISAPI filter और ...

सवाल के साथ, एक ASP.NET page साथ काम कर सकते हैं क्या इस उद्देश्य के लिए सबसे अच्छा विकल्प है?

+0

सॉकेट – Xaqron

+0

के माध्यम से अन्य सर्वर से बाइनरी डेटा प्राप्त होता है प्रक्रिया सीपीयू बाध्य नहीं होती है, लेकिन क्योंकि यह लंबे समय तक तनाव परीक्षण के तहत एएसपी.नेट भूख (पूल में कोई और धागा नहीं छोड़ा जाता है) ताकि ग्राहकों को पर्याप्त समय मिल जाए सीपीयू और रैम। – Xaqron

उत्तर

2

यदि पृष्ठ I/O बाध्य होने के लिए उत्तरदायी है तो मैं Async सड़क पर जाऊंगा। लेकिन आपको Stream ऑब्जेक्ट पर एसिंक्रोनस रीड विधियों (यदि उपलब्ध हो) का भी उपयोग करना चाहिए।

अधिक जानकारी के लिए देखें:

FileStream Constructor - with async example

अपनी टिप्पणी है कि आप एक सॉकेट से इस डेटा को प्राप्त करने के लिए, तुम भी मिल जाएगा System.Net.Sockets नाम स्थान वर्गों के सबसे अतुल्यकालिक व्यवहार का समर्थन करने वाले ।

+0

जैसा कि मैंने शोध किया है आईएसएपीआई फ़िल्टर सबसे तेज़ तरीका हैं, लेकिन मुझे नहीं पता कि सी # के साथ एक लिखना संभव है या नहीं, यदि हां, तो क्या मुझे एएसपीनेट फीचर्स तक कोई एक्सेस है जैसे कि webservice, आदि ... – Xaqron

+0

@xaqron - आईआईएस का कौन सा संस्करण आप पर हैं? – Kev

+0

कोई सीमा नहीं। मैं आईआईएस 7.0 का उपयोग कर सकता हूं क्योंकि यह अब मेरी पसंद है। कृपया टिप्पणी में जोड़े गए टिप्पणी की जांच करें। – Xaqron

संबंधित मुद्दे

 संबंधित मुद्दे