[ vujkev @ 19.05.2008. 14:07 ] @
Potrebno je da napravim web aplikaciju koja će biti stalno aktivna i u određenim vremenskim intervalima pozivati neke procedure. Uslovi su da aplikacija bude na javom web serveru kako poručilac ne bi trebalo da se brine oko backup-a, ups-a i sl. Da li ja, kao osoba koja je zakupila prostor kod provajdera, mogu da imam u pozadini stalno aktivnu aplikaciju?

Moja teorija je da frontend bude ASP.Net sajt koja bi preko webservisa komunicirala sa backend aplikacijom. Da li je ovo moguće i uopšte kako bi vi ovo napravili?
[ bunker @ 19.05.2008. 14:41 ] @
A bekend aplikacija bi trebalo da ti bude neki win servis, koji bi mogao da obavlja poslove na osnovu nekog zadatog vremena. Ne verujem da provajderi dozvoljavaju to, jer tebi bi trebalo i previse prava pristupa.

Web servis takodje nije nesto sto se non stop "vrti" na serveru, pa da mozes da racunas da ti to moze odraditi posao. Web servis se takodje izvrsava kao i web aplikacija, na zahtev korisnika.

Znaci morao bi da uradis web aplikaciju koja bi komunicirala sa wion servisom, na koji nacin - to je svejedno, ali mislim bi morao da nadjes odgovarajuci server. Hosting provajderi ipak nece to da dozvole
[ deerbeer @ 19.05.2008. 15:16 ] @
Citat:
@vujkev
Da li ja, kao osoba koja je zakupila prostor kod provajdera, mogu da imam u pozadini stalno aktivnu aplikaciju?

Moras da zakupis negde dedicated-server al kod stranih provajdera .. pa stavljaj na njega sta hoces ....

Citat:

Znaci morao bi da uradis web aplikaciju koja bi komunicirala sa wion servisom, na koji nacin - to je svejedno, ali mislim bi morao da nadjes odgovarajuci server. Hosting provajderi ipak nece to da dozvole


Mani se domacih provajdera jer ti to sigurno nece dozvoliti osim ako neki daju poseban hosting paket za tako nesto ...
Ja kod EUneta nisam mogao da dobijem error-log za PHP skripte
pa sam morao da ih zovem telefonom da bi mi svemocni admin procitao gresku u log fajlu

Citat:
@vujkev
Moja teorija je da frontend bude ASP.Net sajt koja bi preko webservisa komunicirala sa backend aplikacijom. Da li je ovo moguće i uopšte kako bi vi ovo napravili?


Da naravno da je moguce ...
Radio sam na jednom sajtu za OnLine sportske rezultate i baziran je na dobijanju live-rezultata od Win-Service-a koji ih osvezava na svakih 60 -ili 90 sekundi
Tako da ceo sajt ne pristupa bazi direktno ... vec preko Win-Service-a .
Mislim da ne moras da implementiras Web-Servis koji onda pristupa Win-servisu (jedna karika vise u lancu cini mi se ....)
kad mozes kroz .NET Remoting da ostvaris vezu ASP.NET sajt - WinService .




[Ovu poruku je menjao deerbeer dana 19.05.2008. u 16:29 GMT+1]
[ vujkev @ 19.05.2008. 15:27 ] @
Tako sam i mislio, samo se nisam lepo izrazio

WinServis koji sadrži webservise, a koje će pozivati frontend aplikacija.

Da li znate nekog provajdera koji to dozvoljava?
[ deerbeer @ 19.05.2008. 15:35 ] @
http://www.aplus.net/
Cene su stvarno popularne cak i za dedicated servere ....
[ mmix @ 19.05.2008. 17:41 ] @
Citat:
vujkev: WinServis koji sadrži webservise, a koje će pozivati frontend aplikacija.


Mislim da si i dalje u zbunu, WinService ne sadrzi webservise (mada tehnicki je moguce preko HTTP SOAP remotinga, ali se niko ne malteretira time kad vec ima podrsku za web servise direktno u asp.net-u/IISu).
Dalje, ako planiras da ti baza, web aplikacija i web servisi budu na istoj masini (cak i na istom LANu) ucini sebi uslugu i izbaci web servise iz igre, nista ne dobijas time samo gubis na performansama jer ubacujes jedan relativno spor data link u dizajn. Jednostavno ucitavaj direktno iz baze u asp.net aplikaciji.
Web servise kao izvor podataka za asp.net aplikaciju koristis kad podaci dolaze sa nekog drugog remote servera gde je HTTP pristup jedina moguca veza.
[ mmix @ 19.05.2008. 17:49 ] @
A sad da ti odgovorim na inicijalno pitanje. Realno tebe nista ne sprecava da napravis Timer objekat i smestis ga u Application["Timer"] u Application_Start eventu i da periodicno pozivas neki kod.
Problem je samo pouzdanost. Worker proces se reciklira i u zavisnosti od opterecenja servera moze postojati i par destina paralelno izvrsavajucih w3wp.exe procesa (oni zapravo izvrsavaju tvoje stranice). Tako da mozes imati vise paralelnih timera koji pozivaju isti kad pa mroas da pazis na konkurentnost koda koji timer poziva.

Takodje kad nema korisnika neko vreme bice 0 worker procesa. Nekome to medjutim ne predstavlja problem, ako te tvoje procedure treba da obrade neke periodicne podatke da bi ih krajnji korisnici lakse konzumirali, onda to mozda i nije vazno ako tvoj kod moze da obradi zaostali log promena u bilo kom trenutku. Worker proces i njegov timer ce se pokrenuti prvi put kad korisnik pridje nekoj strani, dok se on uloguje ti ces obraditi prvi ciklus timera i svi srecni i zadovoljni
[ vujkev @ 19.05.2008. 22:31 ] @
Znam da WinService ne podržava webservice by default, ali sam takođe čitao da može da se nabudži. Kako do sad nikad nisam povezivao ASP.NET aplikaciju sa nekim servisom nisam baš upućen koji je najbolji način da se to odradi, ali zato ste vi tu.

Što se tiče predloga da ASP.NET stranica direktno čita iz baze podatke to može da prođe, ali postoji problem kako snimati podatke u bazu. Korisnik ima mogućnost da aktivira neku proceduru u određeno vreme (preko tajmera), ali isto tako može da otkaže neko aktiviranje. Ukoliko ASP aplikacija direno čita i piše iz/u bazu onda bi servis svake sekunde (ili neko određeno vreme) morao da proverava šta se nalazi u bazi što verovatno i nije neko rešenje. Sad pošto će snimanje ići preko backend aplikacije onda bi kompletan rad sa bazom ubacio u tu aplikaciju, pa kasnije ASP aplikacija može da se zameni nekom Winforms aplikacijom.

Sve u svemu Webservices definitivno otpada, ali šta kosititi umesto toga? Remoting? Pretpostavka je da će backend apliokacija, ASP aplikacija i baza biti na istom serveru ili barem u LAN-u

Hvala svima
[ mmix @ 20.05.2008. 08:39 ] @
Pa remoting ti je trenutno najbrzi mehanizam koji .NET ima za IPC, ako koristis vs2008 i framework 3.0+ onda imas dodatnu pogodnost kroz novi remoting kanal zvani IPCChannel. On funkcionise samo izmedju dva procesa na istoj masini i koristi named pipes za prenos podataka ali je ujedno i najbrzi moguci mehanizam za prenos. Ja sad trenutno radim aplikaciju koja koristi taj mehanizam i moram priznati da je dosta brzi od standardnog TCPChannel-a.

Mislim da bi u ovom trenutku trebao da das malo vise informacija o tom tvom sistemu, sta on u stvari treba da radi, jer vidim da sad pominjes mogucnost winforms aplikacija koje bi se oslanjale na data layer iz winservisa, sto nas moguce vraca na pricu o webservisima. Generalno ti mozes da napravis i dual layer, znaci imas binary remoting izlaz iz winservisa koji koristi tvoja asp.net aplikacija i da pored toga napravis webservices proxy, web servis koji ima iste metode kao binary remoting i koji ce samo prebacivati pozive iz webservices layera direktno u winservis. TIme bi omogucio pozivanje iz winforms aplikacija na udaljenim racunarima bez da usporis asp.net aplikaciju
[ deerbeer @ 20.05.2008. 10:49 ] @
Citat:

Pa remoting ti je trenutno najbrzi mehanizam koji .NET ima za IPC, ako koristis vs2008 i framework 3.0+ onda imas dodatnu pogodnost kroz novi remoting kanal zvani IPCChannel. On funkcionise samo izmedju dva procesa na istoj masini i koristi named pipes za prenos podataka ali je ujedno i najbrzi moguci mehanizam za prenos. Ja sad trenutno radim aplikaciju koja koristi taj mehanizam i moram priznati da je dosta brzi od standardnog TCPChannel-a

Eh da ... u vreme kad sam radio na tom projektu ASP.NET (.NET 1.1 i 2.0) sajt i Win-Service bili su na istoj masini
i koriscenje TCPChannel-a je uvodilo dodatni "overhead" pa sam morao dodatno da optimizujem Win-Service
i stored procedure koje je on pozivao jer se masina i dalje gusila kad je odjedanput napadne 1500 korisnika
koji prate i osvezavaju rezultate na svakih 60-90 sekundi