การใช้งานดาวหางสำหรับ ASP.NET? [ปิด]


103

ฉันกำลังมองหาวิธีใช้การส่งข้อความแบบ gmail ภายในเบราว์เซอร์และมาถึงแนวคิดของComet อย่างไรก็ตามฉันไม่พบการใช้งาน. NET ที่ดีที่ช่วยให้ฉันทำสิ่งนี้ได้ภายใน IIS (แอปพลิเคชันของเราเขียนใน ASP.NET 2.0)

วิธีแก้ปัญหาที่ฉันพบ (หรืออาจคิดได้สำหรับเรื่องนั้น) จำเป็นต้องออกจากเธรดที่กำลังรันต่อผู้ใช้ - เพื่อที่จะได้ตอบกลับเขาเมื่อได้รับข้อความ นี่ไม่ได้ขนาดเลยแน่นอน

คำถามของฉันคือ - คุณรู้หรือไม่เกี่ยวกับการใช้งาน ASP.NET สำหรับดาวหางที่ทำงานในลักษณะอื่น เป็นไปได้หรือไม่กับ IIS


12
ฉันเดาว่าการใช้งาน MS-blessed เริ่มต้นคือ SignalR: hanselman.com/blog/…
user423430

ขณะนี้ Node.JS ได้รับการสนับสนุนบน Azure แล้วเร็ว ๆ นี้ IIS ในปี 2003 จะได้รับการสนับสนุน นั่นหมายความว่าเราจะสามารถที่จะใช้เซิร์ฟเวอร์ดาวหางภายใน IIS ( windowsazure.com/en-us/develop/nodejs )
goodguys_activate

คำตอบ:


44

ดาวหางมีความท้าทายในการปรับขนาดด้วย IIS เนื่องจากการเชื่อมต่ออย่างต่อเนื่องของดาวหาง แต่ตอนนี้มีทีมกำลังดูสถานการณ์ของดาวหาง ดูบล็อกของ Aaron Lerch ด้วยเพราะฉันเชื่อว่าเขาทำงานดาวหางยุคแรก ๆ ใน ASP.NET


9
สิ่งนี้ถูกนำไปใช้จริง ตรวจสอบ WebSync ตามคำตอบของ Anton ด้านล่าง ( frozenmountain.com/websync )
jvenema

3
ไม่มีใครเรียก reverse ajax? ตรวจสอบสิ่งนี้: pokein.codeplex.com
Zuuum

4
ควบคุม MVC Async สามารถช่วยต่อสู้กับปัญหา IIS โดยระบายรอไม่ใช่เธรด IIS, เห็นนี้โพสต์ที่ดีโดยดิน Lenhart ดูโครงการตัวอย่างเซิร์ฟเวอร์แชทบน BitBucket
Jacob

33

WebSyncเป็นเซิร์ฟเวอร์ Comet ที่ปรับขนาดได้ตามมาตรฐานซึ่งรวมเข้ากับไปป์ไลน์ IIS / .NET โดยตรง นอกจากนี้ยังมีให้บริการตามความต้องการเป็นบริการโฮสต์

อย่างเป็นทางการรองรับการเชื่อมต่อไคลเอนต์พร้อมกันได้สูงสุด 20,000 รายการต่อโหนดเซิร์ฟเวอร์ แต่การทดสอบแต่ละครั้งพบว่าสูงถึง 50,000 ทรูพุตข้อความเหมาะสมที่สุดในช่วง 1,000-5,000 ไคลเอ็นต์พร้อมกันโดยมีการส่งข้อความสูงถึง 300,000 ต่อวินาทีจากโหนดเดียว

รวมถึงการสนับสนุนฝั่งไคลเอ็นต์สำหรับ JavaScript, .NET / Mono, iOS, Mac OS X, Java, Silverlight, Windows Phone, Windows Runtime และ. NET Compact พร้อมการสนับสนุนทางฝั่งเซิร์ฟเวอร์สำหรับ. NET / Mono และ PHP

รองรับการทำคลัสเตอร์โดยใช้ SQL Server หรือ Azure Caching นอกกรอบ แต่ผู้ให้บริการแบบกำหนดเองสามารถเขียนได้ทุกอย่าง (Redis, NCache)

ข้อจำกัดความรับผิดชอบ:ฉันทำงานให้กับ บริษัท ที่พัฒนาผลิตภัณฑ์นี้


17
ควรมีข้อจำกัดความรับผิดชอบที่นี่เนื่องจากเป็นผลิตภัณฑ์ของคุณ ...
Sam Saffron

9
แน่นอนว่าผลิตโดย บริษัท ที่ฉันทำงานให้ :) ไม่ได้พยายามซ่อนอะไรแน่นอน
Anton

1
@ แอนตัน - การไม่ซ่อนบางสิ่งไม่เหมือนกับการเปิดเผย
RedFilter

1
@Anton คุณสามารถอธิบายเพิ่มเติมเกี่ยวกับวิธีที่รองรับการเชื่อมต่อไคลเอนต์พร้อมกันสูงสุด 20k ต่อโหนดเซิร์ฟเวอร์ได้อย่างไร ตัวเลขเหล่านี้ดูแล้ว .. "ใหญ่เกินไป"
Pacerier

1
ฉันไม่คิดว่ามันจะเป็นการดีที่จะถามว่า websync ทำงานอย่างไรภายใต้ประทุนตามแนวคิด - จากมุมมอง 25,000 ฟุตแน่นอน
nocarrier

15

ฉันเพิ่งเขียนตัวอย่างง่ายๆของ Long Polling Chat Serverโดยใช้ MVC 3 Async Controllers ตามไฟล์บทความที่ยอดเยี่ยมของ Clay Lenhart

คุณสามารถใช้ตัวอย่างในการปรับใช้ AppHarbor ที่ฉันตั้งค่าตามแหล่งที่มาจากโครงการ BitBucket

นอกจากนี้ยังมีข้อมูลเพิ่มเติมจากฉันโพสต์บล็อกอธิบายโครงการ


ฉันชอบตัวอย่างในการปรับใช้
AppHarbor

'บล็อกโพสต์อธิบายโครงการ' -> web.archive.org/web/20130328042214/http://…
jaybro

ขอบคุณ! ดีใจที่คุณชอบบทความนี้
Clay Lenhart

4

จริงๆแล้วมีทางเลือกมากมายในการสร้างเว็บไซต์ที่รองรับ ajax ด้วย ASP.NET แต่จริงๆแล้วPokeInเป็นวิธีที่ง่ายที่สุดในการสร้างเว็บแอปพลิเคชันที่รองรับดาวหาง ajax ได้บันทึกหนึ่งในโครงการของ บริษัท ของฉัน


3

นอกจากนี้คุณยังสามารถดูKaazing Enterprise Gatewayซึ่งได้สร้างเกตเวย์ webSocket [HTML5] รุ่นที่ใช้งานจริงซึ่งแทนที่วิธีของดาวหางอย่างสมบูรณ์และเปิดใช้งานการเชื่อมต่อแบบฟูลดูเพล็กซ์ระหว่างเบราว์เซอร์และแอปพลิเคชันเซิร์ฟเวอร์

คุณอาจดูที่Light Streamer Demos


1

ฉันเคยใช้ไซต์แชทเมื่อนานมาแล้วซึ่งใช้เซิร์ฟเวอร์สตรีมมิ่ง http ที่สร้างขึ้นเอง จริงๆแล้วฉันได้สร้างซอฟต์แวร์นั้นขึ้นมาใหม่ ณ จุดหนึ่งด้วยความอยากรู้อยากเห็นอย่างแท้จริงและฉันคิดว่ามันง่ายพอที่จะทำ ฉันจะไม่พยายามใช้ "คำขอแบบไม่มีที่สิ้นสุด" ประเภทเดียวกันใน IIS โดยเฉพาะใน ASP.NET เนื่องจากคำขอผูกเธรดพูลเธรด (หรือเธรด IO หากใช้ตัวจัดการแบบอะซิงโครนัส) ไปเรื่อย ๆ ซึ่งหมายความว่าคุณทำได้เพียง จัดการได้มากต่อเซิร์ฟเวอร์ตามที่การกำหนดค่าเธรดพูลของคุณอนุญาต

หากฉันมีความต้องการที่ถูกต้องตามกฎหมายอย่างมากสำหรับฟังก์ชันดังกล่าวฉันจะเขียนเซิร์ฟเวอร์ http ที่กำหนดเองโดยสุจริต

ฉันรู้ว่านั่นไม่ได้ตอบคำถามของคุณ แต่ฉันคิดว่าข้อมูลที่ป้อนอาจเกี่ยวข้อง


1

กลุ่ม WS-I เผยแพร่สิ่งที่เรียกว่า"โปรไฟล์การรักษาความปลอดภัยที่เชื่อถือได้"ซึ่งมีการใช้งาน Glass Fish และ. NETซึ่งเห็นได้ชัดว่าทำงานร่วมกันได้ดี

ด้วยความโชคดีใด ๆ ก็มีการใช้งานJavascriptเช่นกัน

นอกจากนี้ยังมีการใช้งาน Silverlight ที่ใช้HTTP Duplex คุณสามารถเชื่อมต่อจาวาสคริปต์กับออบเจ็กต์Silverlightเพื่อรับการเรียกกลับเมื่อเกิดการพุช

นอกจากนี้ยังมีเวอร์ชันที่จ่ายในเชิงพาณิชย์อีกด้วย


4
การโพสต์คำตอบเดียวกันเป็นจำนวนมากในคำถามหลาย ๆ ข้อต่อเนื่องกันสั้น ๆ มีแนวโน้มที่จะเดินทางไปไม่กี่ธง ...
Marc Gravell

2
( psst )

0

ฉันคิดว่าวิธีการของดาวหางไม่สามารถปรับขนาดได้จริง ๆ เว้นแต่คุณจะเตรียมที่จะขยายเว็บฟาร์มในแนวนอน (โดยการเพิ่มเว็บเซิร์ฟเวอร์มากขึ้นในการผสมผสาน) วิธีการทำงานคือปล่อยให้การเชื่อมต่อ TCP เปิดต่อเซสชันของผู้ใช้เพียงเพื่อให้เซิร์ฟเวอร์สามารถพุชสิ่งต่างๆในการเชื่อมต่อนั้นเป็นครั้งคราวเพื่อแจ้งให้ผู้ใช้ทราบทันทีถึงการเปลี่ยนแปลงหรือกิจกรรม


6
ทุกอย่างสามารถปรับขนาดตามแนวตั้งไปยังจุดหนึ่งเท่านั้นหลังจากนั้นจะต้องมีการปรับขนาดแนวนอน
Anton
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.