Autor Téma: Program jako služba  (Přečteno 8023 krát)

Borisek

  • Host
Program jako služba
« kdy: 05-07-2012, 07:47:55 »
Zdravím.
Moh by mi prosim někdo zkušeny vysvětlit jaky je rozdil mezi klasickym programem a programem, ktery běži jako služba.
Třeba FTP servr.
Jsou klasicke FTP servry a FTP servry, ktere běži jako služba.

Offline Morrison

  • Hrdina
  • ****
  • Příspěvků: 417
  • Karma: 12
    • Verze Delphi: D5, XE2, 10.4.2, D11
Re:Program jako služba
« Odpověď #1 kdy: 05-07-2012, 08:08:16 »
Aplikace běží (většinou) na desktopu, kdežto služba běží na pozadí (i bez přihlášeného uživatele). To je asi hlavní rozdíl. Jinak viz zde
nil

Offline Jan Fiala

  • Hrdina
  • ****
  • Příspěvků: 448
  • Karma: 6
    • Verze Delphi: 10.4.1
    • PSPad editor
Re:Program jako služba
« Odpověď #2 kdy: 05-07-2012, 10:10:36 »
Navic, na novějších Windows služba nemůže komunikovat s uživatelem. Tzn. žádné dialogy, zobrazované zprávy apod. Pokud je to nutné, pak se používá další aplikace, která běží už pod uživatelským účtem a komunikuje se službou, umožňuje změnit její nastavení apod. Typickým příkladem jsou třeba antivirové programy.

Služba může běžet pod libovolným účtem, může běžet i pod účtem systém, takže má právo zapisovat i tam , kam uživatel normálně nemůže - adresáře Windows, program files. Takže se používá třeba i na aktualizaci programů.

Offline pepak

  • Padawan
  • ******
  • Příspěvků: 1574
  • Karma: 37
    • Pepak.net
Re:Program jako služba
« Odpověď #3 kdy: 05-07-2012, 10:55:58 »
Navíc se systém o služby dost stará - jde třeba zařídit, aby ji po pádu zrestartoval.

Nebo je služba velmi vhodná pro případy, kdy se má umět zaktualizovat - je podstatně jednodušší a bezpečnější postup "řekni operačnímu systému, ať zastaví službu, přepiš exe, řekni operačnímu systému, ať spustí službu" než hledat procesy s danými charakteristikami, ukončovat je a pak je zase spouštět (všechno by šlo, ale to spouštění má docela hnusné mezní situace).

Zase na druhou stranu se služby pěkně blbě ladí.

Obecně bych doporučoval všechno, co nemá požadavek na přímou interakci s uživatelem, dělat jako službu. Pokud to má mít nějaká vyšší práva, než se dají očekávat u uživatele, tak i v případě, že je interakce potřeba (řeší se samostatným klientským prográmkem, který se službou nějak komunikuje, její stavy a hlášení vypisuje uživateli a odpovědi zase posílá zpátky).

Borisek

  • Host
Re:Program jako služba
« Odpověď #4 kdy: 05-07-2012, 12:07:07 »
No a když mam napsan program, ktery ma běžet na pozadi a nepotřebuje komunikovat s uživatelem.
Jak ho spustim jako službu.

yamaco

  • Host
Re:Program jako služba
« Odpověď #5 kdy: 05-07-2012, 12:39:43 »
Zdravím, také jsem řešil podobný problém a protože s programováním systémových služeb nemám zkušenosti a dle dostupných zdrojů to není zcela triviální, používám pro své aplikace (zejména Zálohování databází FireBird) utilitu Application as a Service. Pravda, jde o placené řešení, což mi ale vzhledem k tomu, že vyvíjím komerční aplikace, nijak nevadí (a vyjednal jsem i zajímavou cenu plus doživotní aktualizace zdarma). Na druhou stranu se dá běh aplikace jako služby nastavit úplně detailně, např. zotavení po pádu apod. Nenašel jsem na tom prozatím chybu a u klientů funguje k plné spokojenosti.

Offline Jan Fiala

  • Hrdina
  • ****
  • Příspěvků: 448
  • Karma: 6
    • Verze Delphi: 10.4.1
    • PSPad editor
Re:Program jako služba
« Odpověď #6 kdy: 05-07-2012, 12:44:42 »
Pro spusteni programu pouzij reseni zdarma: RunAsService
http://sourceforge.net/projects/runasservice/

yamaco

  • Host
Re:Program jako služba
« Odpověď #7 kdy: 05-07-2012, 12:49:12 »
Řešení zdarma může být samozřejmě užitečné, nicméně pro komerční aplikace bych tuto cestu patrně nepoužil - letmým náhledem na web se mi ježí vlasy z nedostatku informací a způsobu nastavení, a je pak otázka, jak se zachová autor, pokud budu potřebovat něco změnit, poradit apod. Ale jak jsem uvedl - záleží na typu aplikace.

Offline Mi.Chal.

  • Guru
  • *****
  • Příspěvků: 577
  • Karma: 25
Re:Program jako služba
« Odpověď #8 kdy: 05-07-2012, 14:37:10 »
Excellent
Rated 1 time
Řešení zdarma může být samozřejmě užitečné, nicméně pro komerční aplikace bych tuto cestu patrně nepoužil - letmým náhledem na web se mi ježí vlasy z nedostatku informací a způsobu nastavení, a je pak otázka, jak se zachová autor, pokud budu potřebovat něco změnit, poradit apod. Ale jak jsem uvedl - záleží na typu aplikace.

mě se zase ježí vlasy z toho, za co jsou lidi schopni platit :-). Na vytvoření služby byl snad template i v Delphi, nastavení restartování služby po jejím pádu je standardní nastavení windows.

Offline < z >

  • Administrátoři
  • Guru
  • *****
  • Příspěvků: 1205
  • Karma: 44
    • Verze Delphi: 7, 2010
Re:Program jako služba
« Odpověď #9 kdy: 05-07-2012, 15:26:25 »
Excellent
Rated 1 time
OT:
ty bys nedal 100$ za neco, co je primo ve Windows? to by potom autori takovych kravin nemohli prezit ;)

ne "byl", ale je tam primo Service Application,
par veci do prikazoveho radku se da rychle naucit (/install /start)
« Poslední změna: 05-07-2012, 15:29:58 od <z> »

Borisek

  • Host
Re:Program jako služba
« Odpověď #10 kdy: 06-07-2012, 08:09:27 »
OT:
ty bys nedal 100$ za neco, co je primo ve Windows? to by potom autori takovych kravin nemohli prezit ;)

ne "byl", ale je tam primo Service Application,
par veci do prikazoveho radku se da rychle naucit (/install /start)
Takže to mam chapat tak, že ten muj program přidam jako službu přes přikazovy řadek, jo.

Offline < z >

  • Administrátoři
  • Guru
  • *****
  • Příspěvků: 1205
  • Karma: 44
    • Verze Delphi: 7, 2010
Re:Program jako služba
« Odpověď #11 kdy: 06-07-2012, 10:40:46 »
jaj, ty si nikdy nic o sluzbach necetl :-p

ok, tady mas neco
http://leteckaposta.cz/684605336
heslo: awsedxtrcfvgzuhij

delal jsem to pred 7 lety, pouziva to ClientSocket (na komunikaci pres browser se sluzbou), ktere uz bezne v Delphi nejsou,
takze to zkompilovat zrejme nepujde ... ale pro predstavu ti to staci

je tam mala aplikace "instal", ktera zvlada instalaci a odinstalaci, spusteni i zastaveni
(myslim, ze se to tolik do dnes nezmenilo)

Offline Mi.Chal.

  • Guru
  • *****
  • Příspěvků: 577
  • Karma: 25
Re:Program jako služba
« Odpověď #12 kdy: 06-07-2012, 11:20:41 »
delal jsem to pred 7 lety, pouziva to ClientSocket (na komunikaci pres browser se sluzbou), ktere uz bezne v Delphi nejsou,
takze to zkompilovat zrejme nepujde ... ale pro predstavu ti to staci

Naposledy jsem viděl nějakou tu free edici Delphi (asi se to jmenovalo Turbo Delphi), co se v nich daly dělat komerční aplikace, bylo to kolem roku 2009. Tam sice TClientSocket a TServerSocket nebyly v toolbaru, ale knihovny tam byly, takže v kódu se s tím pracovat dalo stejně jako předtím.

Offline < z >

  • Administrátoři
  • Guru
  • *****
  • Příspěvků: 1205
  • Karma: 44
    • Verze Delphi: 7, 2010
Re:Program jako služba
« Odpověď #13 kdy: 06-07-2012, 13:30:48 »
je to mozne, na samtonou sluzbu to nema vliv ;)