Aszinkron socket vagy más?
2009-11-29T09:29:31+01:00
2009-12-03T21:42:02+01:00
2022-08-01T08:00:29+02:00
Aquarius
Sziasztok!

Van egy web szerver amin érkeznek a webes kérelmek és egy nagy objektumhalmazt érnek el.

Ez az objektum olyan nagy, hogy nem lehet minden egyes webes kérelemnél felépíteni és lebontani, ráadásul a webes eseményeken kívüli más események is módosítják azt.

Arra gondoltam, hogy egy web szerveren kívüli, folyamatosan futó program fogja kezelni ezt a nagy objektumhalmazt, a webszerver meg majd kommunikál "valahogy" ezzel az objektumkezelő programmal.

Egyelőre nincs jobb ötletem annál, hogy a webes kérelem megszólítaná ezt a programot egy aszinkron socketen. Van esetleg jobb ötlet/megoldás erre?


Környezet: win2008 szerver, IIS7, prg C#-ban.
Mutasd a teljes hozzászólást!
akkor kell neked egy köztes réteg a webalkalmazásodban, mondjuk singletonnal, ami elkülönül az oldalaidtól (ergó egy külön projekt a solution-ön belül). Itt tudsz objekumokat cache-elni és gyors is lesz, mert nem 1 másik alkalmazással kell beszélgetni hanem in-process.

Vagy csinálsz service-réteget WCF alapokon és a web-es lekérdezéseket a WCF-es válaszok alapján állitod össze.Ez nagyobb meló és performance overhead is van, de ha nem csak web-es kliensek vannak hanem várható hogy winforms-os kliens is lesz akkor megéri.

(A socket-eket mindenképp felejtsd el.Az már a múlt.)
Mutasd a teljes hozzászólást!

  • Minthogy jelen esetben létezik alkalmazás szint is, nem csak kérés szint, az alkalmazás szintjén tárolt adatok megmaradnak a kérések között is, így felesleges külső programmal nehezítened az életed.
    ASP.NET Application Life Cycle Overview for IIS 7.0
    Mutasd a teljes hozzászólást!
  • akkor kell neked egy köztes réteg a webalkalmazásodban, mondjuk singletonnal, ami elkülönül az oldalaidtól (ergó egy külön projekt a solution-ön belül). Itt tudsz objekumokat cache-elni és gyors is lesz, mert nem 1 másik alkalmazással kell beszélgetni hanem in-process.

    Vagy csinálsz service-réteget WCF alapokon és a web-es lekérdezéseket a WCF-es válaszok alapján állitod össze.Ez nagyobb meló és performance overhead is van, de ha nem csak web-es kliensek vannak hanem várható hogy winforms-os kliens is lesz akkor megéri.

    (A socket-eket mindenképp felejtsd el.Az már a múlt.)
    Mutasd a teljes hozzászólást!

  • (A socket-eket mindenképp felejtsd el.Az már a múlt.)


    Ezt ugye nem gondoltad teljesen komolyan?
    Mutasd a teljes hozzászólást!

  • igen, komolyan gondolom.
    üzelti alkalmazásokban mindenképp felejtős, mint pl. ez a szoftver amit a Aquarius fejleszt.
    Nagyan kevés speciális helyzet van amihez kellhet még socket-szintű fejlesztés. Minden más esetre van jobb megoldás, pl. WCF.
    De ne flame-eljük tele ezt a thread-et.
    Mutasd a teljes hozzászólást!
  • Köszönöm a hozzászólásokat!

    Közben levelet váltottam az MS-től is egy szakértővel és Jsystem-hez nagyon hasonló választ adott ő is, ezért fogadtam el az ő válaszát megoldásként.

    Bemásolom ide egy részét, hátha más is olvassa később.

    "Általában nem tartom jó ötletnek egy webalkalmazás mögött memória adatbázis használatát, mert komoly architekturális gátat szab az oldalra és a felfele skálázásnak, másrészt az üzemeltetők életét igencsak megnehezíti, harmadrészt pedig nem egyszerű úgy megírni, hogy elég rugalmas legyen és egy adatbáziskezelőnél jobb teljesítménnyel fusson. Ha mégis e mellett döntötök, és kell, hogy folyamatosan éljen a memória adatbázis és ráadásul több kliensből is el akarjátok érni, akkor én az egészet átköltöztetném egy Windows szolgáltatásba (service), amihez csinálnék WCF-es végpontokat és a webalkalmazás és a vastag kliens ezeken a WCF-es végpontokon keresztül szólítaná meg a szolgáltatást. Így akár még az is megoldható, hogy a WinForms kliens távol fusson és ne kelljen a szerverre RDP-zni. A webalkalmazásba nem tenném a memória adatbázist, mert annak tipikusan nagy az inicializációs ideje, ami a http kérés-válasz működésébe általában nem fér bele, az első néhány kérés timeoutolni fog. Socketek helyett mindenképpen WCF-t használnék."

    Köszi!

    Mutasd a teljes hozzászólást!
abcd