Sitova aplikace - nazor + navrhy – .NET – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Sitova aplikace - nazor + navrhy – .NET – Fórum – Programujte.comSitova aplikace - nazor + navrhy – .NET – Fórum – Programujte.com

 

dannyk0
Věrný člen
6. 8. 2009   #1
-
0
-

Zdar lidi, makam na jedne sitove aplikaci a momentalne resim jeji serverovou cast. Hlavnim ucelem serveru je posilat data klientum a zaroven s nima komunikovat. A tady bych chtel vedet vase nazory popripade navrhy na zmeny.
Aplikace je delana v C# + .NET 3.5 pres tridu Socket. V nynejsim stavu to mam tak, ze mam kolekci socketu (klientu) na ktere posilam data (v jednom vlakne stridanim socketu) a smyčku, ve ktere bych mel asynchronne komunikovat s klienty (pro kazdeho je udelano vlakno).
Tento koncept se mi moc nelibi z duvodu zatizeni procesoru prilis vlakny pri vetsim poctu klientu a tady mi tedy nastava otazka, jak to sikovne vymyslet?
Posledni napad, ktery se mi zda celkem realny je tento:
Mit 2 kolekce socketu s klienty, kde by jedna posilala data na urcitem portu a druhou, ktera by provadela komunikaci s klientem na jinem. A cele by to mohlo bezet treba ve 2 vlaknech, akorat by se v kazde smycce stridaly sockety stejne jako predtim u posilani dat.

BTW: Pro posilani dat nepouzivam svuj protokol, ale pro komunikaci uz ano.

Tak co myslite? Je to realne reseni? Pouziva se to vubec? Nebo se to resi nejak jinak?

Nahlásit jako SPAM
IP: 85.135.97.–
Jedu v c++,c#,assembler,ASP.NET,PHP,databaze,bezpecnost softwaru[br] -----------------------------------------------------------[br] Muj blog o programovani,hudbe a vsem moznem,co najdu na netu :) [br] http://dannyk.aspone.cz[br] -----------------------------------------------------------[br] Na foru mam nejake prispevky pod nickem Master,tak jen pro upresneni :)
mephi0
Expert
6. 8. 2009   #2
-
0
-

ja by som sa konceptu 1vlakno = 1klient nebál. Je to najlepšie riešenie, v prípade že to server nebude zvládať, tak mu obmedz max. počet vlákien.

Nahlásit jako SPAM
IP: 85.237.232.–
Program nemusi fungovat rychle, staci ze funguje dostatecne rychle.
KIIV
~ Moderátor
+43
God of flame
6. 8. 2009   #3
-
0
-

jeste taky muzes po pripojeni klienta udelat fork procesu a predat mu ten socket.. akorat to neni zrovna vhodne pokud maji komunikovat i mezi sebou a je to daleko narocnejsi na pamet protoze se celej program zduplikuje :)

thready sou nej reseni .. pokud muze jeden klient nejakym narocnejsim pozadavkem zablokovat zbytek

Nahlásit jako SPAM
IP: 80.188.94.–
Program vždy dělá to co naprogramujete, ne to co chcete...
Petr
~ Anonymní uživatel
746 příspěvků
6. 8. 2009   #4
-
0
-

Tohle se obvykle řeší dvěma způsoby. Buď jako boahttp://en.wikipedia.org/wiki/Boa_(web_server), tedy že ve smyčce v 1 vláknu obsluhuješ postupně jednotlivé sockety, ale to je vhodné spíš pro pomalé počítače a malý počet klientů. Lepší řešení je použít thread pool http://en.wikipedia.org/wiki/Thread_pool(je to dokonce jeden z návrhových vzorů). Vytvoříš si omezený počet vláken a těm postupně přiřazuješ/odebíráš sockety. Je to rychlejší, díky tomu, že nemusíš neustále vytvářet a likvidovat vlákna. Navíc se ti nemůže stát, že se vytvoří moc vláken. .NET neznám, ale tipnul bych si, že thread pool bude součástí "standartní knihovny".

Nahlásit jako SPAM
IP: 86.61.140.–
dannyk0
Věrný člen
6. 8. 2009   #5
-
0
-

Ten ThreadPool na tu komunikaci s klienty neni spatny napad a dost se mi i zamlouva.

A jaky je podle vas nejlepsi system na streamovane posilani dat vetsimu poctu klientu? Vyhovuje ten system pomoci kolekci a prepinani socketu? (kdyz nepocitam priorizaci apod.)

Nahlásit jako SPAM
IP: 85.135.97.–
Jedu v c++,c#,assembler,ASP.NET,PHP,databaze,bezpecnost softwaru[br] -----------------------------------------------------------[br] Muj blog o programovani,hudbe a vsem moznem,co najdu na netu :) [br] http://dannyk.aspone.cz[br] -----------------------------------------------------------[br] Na foru mam nejake prispevky pod nickem Master,tak jen pro upresneni :)
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 66 hostů

Podobná vlákna

Sitova karta — založil Zelenáč

Síťová komunikace — založil wokena

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032024 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý