Diskuze: Windows Service

C# .NET .NET (C# a Visual Basic) Windows Service American English version English version

Avatar
vodslon
Člen
Avatar
vodslon:

Ahoj, potřeboval bych nasměrovat. Takže co bych potřeboval, obecně běží mi Windows služba, ta něco hlídá. Když to co hlídá se změní, potřeboval bych upozornit, nejlépe u hodin Tray. Co už jsem se dočetl služba běží v jiné Session než já, takže mi nemůže nic poslat na desktop. Že může "interactive with desktop" v 7 a 8.1 nepomůže. Umím projet session, porovnat která má stejné ID jako já a na tom desktopu zapnout EXE, jenže to je strašně blbé řešení. WCF se mi zatím nedaří nastavit. Prostě bych potřeboval, event ve službě změní tray, třeba soubor, který služba testuje je větší než 1giga, to je jedno...takže služba pomocí timeru kontroule soubor, if( File.Lenght > XXX) tak na ploše tray změní ikonu.

 
Odpovědět 11.2.2015 11:40
Avatar
Odpovídá na vodslon
sadlomaslox25:

stdin/out
messageQueue
pipe
sockety

 
Nahoru Odpovědět 12.2.2015 18:32
Avatar
vodslon
Člen
Avatar
Odpovídá na sadlomaslox25
vodslon:

Myslíš, že řešení Windows service která hostí WCF ve které je callback a ten přes HTTP binding ovládá aplikaci, která běží na "ploše" je dobře nebo špatně? :)Právě ty Pipe nedoporučovali, ale co diskuze to jinej názor. Z obecného hlediska je u c# vlastně super, že jedna věc jde řešit X způsoby, ale na druhou stranu začátečník má problém vůbec vybrat ten nejlepší způsob. A není nic lepšího než tejden pracovat na aplikaci a pak zjisti, že Ti třeba padá na věcech jako práva, firewall atd

Editováno 13.2.2015 8:31
 
Nahoru Odpovědět 13.2.2015 8:30
Avatar
Odpovídá na vodslon
sadlomaslox25:

z pohledu WCF vetsinou plati
http://assets.devx.com/…gs/16171.jpg
https://mohammedatef.files.wordpress.com/…fbinding.jpg

osobne jsme pouzivali netNamedPipeBinding pro sluzbu ktera monitorovala ctectu karet ktera pri vlozeni karty posilala parametry do programu a po vytazeni karty posilala zpravu o vytazeni. osobne bych sel do WCF ale psal si ze stim mas nejake problemy. co presne psali na jinem foru ze se nema pouzivat named pipe ? :)

 
Nahoru Odpovědět 13.2.2015 9:28
Avatar
vodslon
Člen
Avatar
Odpovídá na sadlomaslox25
vodslon:

Já jsem si ten základ toho udělal, služba běží pustím aplikaci, ta se přihlásí na odběr callbacku a když se stane něco se složkou, kterou hlídá ve WCF filewatcher, tak se mi v aplikaci napíše. Ted to budu muset hodně rozvinout. Spíše ta otázka byla, že jsem s WCF nový a není to na jednu řádku, tak abych se nevydal špatnou cestou a po tejdnu to nezjistil, že je to nepoužitelný, jinak v tom TCP a PIPE mě omezovalo, že musí být zaplé služby Net.Pipe a Net.TCP, což já mít nemůžu. V tom Pipe bylo ještě něco, ale nemůžu najít místo kde jsem to četl.

 
Nahoru Odpovědět 13.2.2015 9:42
Avatar
sadlomaslox25:

tim zaplym net.pipe asi myslis aktivaci protokolu net.pipe kdyz to hostujes v ramci iis ne ? nejsem si ted jisty ale zda se me ze pro sefhosting wcf nemusi byt zaple net.pipe

 
Nahoru Odpovědět 13.2.2015 11:02
Avatar
vodslon
Člen
Avatar
Odpovídá na sadlomaslox25
vodslon:

Podle návodu jednoho z mnoha návodů by právě mělo být zapnuté, proto jsem to zavrhnul. Jinak jsem fakt už z toho vypruzelej, tak strašně dlouho se dělám s takovým nesmyslem, který už musel bejt milionkrát řešenej. Mít Servisu, která něco skenuje a při změně dat upozorní aktualně přihlášeného uživatele. Ted mám problém vlastně pořád to samé ta služba běží pořád a ted nastane situace, přihlásí se uživatel a pustí aplikaci. Jenže ta aplikace zavolá callback, ale udělá uplně jinou instanci, takže ty data z té původní služby jsou zase mimo.
Klidně nad tím strávím celej víkend nebo až do léta, ale prostě todle v tom blbém WCF musí prostě jít.

 
Nahoru Odpovědět 13.2.2015 13:52
Avatar
vodslon
Člen
Avatar
Odpovídá na sadlomaslox25
vodslon:

Tak jsem to nakonec udělal NamedPipedServer a Client :)

 
Nahoru Odpovědět 19.2.2015 15:59
Avatar
Odpovídá na vodslon
sadlomaslox25:

a byl tam nejaky problem nebo to slo v poho ?

 
Nahoru Odpovědět 19.2.2015 17:23
Avatar
vodslon
Člen
Avatar
vodslon:

No vlastně je to jednoduchej kod, mě stačí synchroní řešení, ale ještě dořešuji situaci, server posílá data klientovi, vypnu klienta a server to ale neví..pustím klienta on zjistí, že nastala chyba a restartuje se, ale jednu zprávu kterou by měl pustit při té chybě nepošle, ale to je strašně obecné, nejlepší by bylo někde hlídat, jestli client běží no

 
Nahoru Odpovědět 20.2.2015 9:14
Avatar
zpavlu
Redaktor
Avatar
Odpovídá na vodslon
zpavlu:

Maličko jsem k tomu napsal, dopisuji podrobně na mém webu.
Sekce pro pokročilé.

Nahoru Odpovědět 21.2.2015 0:38
PZ
Avatar
Gramli
Redaktor
Avatar
Gramli:

Už je asi pozdě odpovídat na WCF, ale aby jsi měl jen jednu instanci pro všechny klienty, stačilo nastavit:

[ServiceBehavior(InstanceContextMode = InstanceContextMode.Single)]

možná je ještě potom dobré nastavit i ConcurencyMode :

ServiceBehavior(InstanceContextMode = InstanceContextMode.Single,ConcurrencyMode = ConcurrencyMode.Multiple)

, který ti zajistí zpracovaní v jiných vláknech.

Editováno 21.2.2015 9:45
Nahoru Odpovědět 21.2.2015 9:41
Kdo to říká ten to je...
Avatar
vodslon
Člen
Avatar
Odpovídá na Gramli
vodslon:

Ahoj ano s WCF jsem hrál taky, ale tam bohužel asi i dost mojí neznalostí byl jenom problém za problémem., Reset naslouchání namedpipeserveru jsem pořešil, ve windows servie lze přepsat metoda OnSessionChanged a tam při odhlašování vlastně připravím ten server na přijímání nových požadavků, protože mi pořád trochu zlobila situace, kdy se odpojil client, jenže server pořád čekal co bude :) . Jinak kdyby to někdo řešil v budoucnu, tak důležitý u NamedPipedServer je nastavit dobře práva uvnitř té služby, mít tam třeba Users, Authenticat User nebo co Vám příjde vhod a plus hlavně je tam v nastavení že může CreateInstance, bez toho mi to dělalo psí kusy.

 
Nahoru Odpovědět 23.2.2015 8:56
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 13 zpráv z 13.