Komunikace mezi aplikacemi? – .NET – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Komunikace mezi aplikacemi? – .NET – Fórum – Programujte.comKomunikace mezi aplikacemi? – .NET – Fórum – Programujte.com

 

hamir0
Duch
12. 2. 2009   #1
-
0
-

Zdravím,

mám před sebou následujicí úkol a přesně nevím, jak si s ním poradit. Chtěl bych Vás tímto požádat o radu, která by mě někam rozumně nasměrovala.

Úkol:
Programuji jeden PŘEKLADAČ pro jazyk Famulus sloužící k provádění výpočtů vpodstatě ve formě zadávání vzorečků. Vedle toho programuji grafické rozhraní pro vykreslování vypočtených dat, označme ho GUI. PŘEKLADAČ míním udělat jako jakýsi konvertor mezi Famulem a jazykem CIL (MSIL) a pak na něj použiji překladač v .NET framework (ILASM). Ještě zasadní informace. Ve Famulu se volají grafické funkce, které vykreslují různé obrazce v GUI.

Problém:
Věc, s kterou si nevím stále rady, je, jakým způsobem volat ony grafické funkce z překladaného kódu Famnulus. V mém návrhu vpodstatě řeším, jak nejefektivněji vyřešit komunikaci mezi dvěma aplikacemi a to přeloženým kódem Famula a přeloženou aplikací GUI.

Dočetl jsem se o jakýchci PIPES apod., ale zdá se mi to zbytečně složité. Neexistuje nejaké jednoduché řešení, které mi uniká? Třeba jen jednoduché volání funkcí přes DLL knihovnu, ale tady si s tím nevím vůbec rady a nemám zatím vůbec přestavu.

Prosím poraďte mi, jak by se to dalo řešit. Budu velmi rád, když mě odkážete na nějaký vhodný zdroj informací.

Předem Vám mnohokráte děkuji.

Míra

PS: Celé to řeším v C# a .NET framework.

Nahlásit jako SPAM
IP: 88.100.2.–
forstec0
Návštěvník
12. 2. 2009   #2
-
0
-

No jestli jsem to pochopil správně (což bych neřekl) a jedná se komunikaci dvou programů, tak bych data z Překladače do GUI posílal přes socket (System.Net.Sockets) na localhostu. Ale jak (ne)efektivní a vůbec hodící se k řešení toho problému to je, si netroufám odhadnout. Nedávno jsem psal něco, co takhle komunikovalo a fungovalo to, ale říkám, je celkem pravděpodobné, že existuje hezčí řešení.

Nahlásit jako SPAM
IP: 78.108.103.–
forstec
forstec0
Návštěvník
12. 2. 2009   #3
-
0
-

Tak mě napadlo, jestli by nešlo prostě napsat Překladač, hodit ho do dll a pak prostě z GUI volat jednotlivé funkce, které by vracely grafická data?

Nahlásit jako SPAM
IP: 78.108.103.–
forstec
hamir0
Duch
12. 2. 2009   #4
-
0
-

To forstec :

Děkuji za informaci. Tomuhle řešení se spíš chci vyhnout, ale použitelné by mělo být. Zvážím ho.

Spíš mám představu, že použitelnější by měla být komunikace přes knihovny. Tady, bohužel, nevím jak na to.

Nahlásit jako SPAM
IP: 88.100.2.–
hamir0
Duch
12. 2. 2009   #5
-
0
-

forstec napsal:
Tak mě napadlo, jestli by nešlo prostě napsat Překladač, hodit ho do dll a pak prostě z GUI volat jednotlivé funkce, které by vracely grafická data?



Takhle to podle mě nejde. PŘEKLADAČ překládá zdrojový kód, ve kterém se nachází volání grafických funkcí a ty se postarají o vykreslení grafiky v GUI. GUI a PŘEKLADAČ jsou dvě nezávislé aplikace (procesy). PŘEKLADAČ dostane na vstup zdrojový kód ve Famulu, přeloží jej a spustí přeložený program. Ten provádí výpočet a běhěm výpočtu posílá (předává) data GUI. Jakým způsobem je předat, to je můj problém. Řešením jsou možná knihovny, ale tady nevím, jak na to. Protože normálně, když se volá funkce z knihovny, tak se akce provádí v rámci toho programu, který funkci volal. Můj případ je, že jiná aplikace volání funkce provede akci v jiném programu (procesu). Je to vůbec přes knihovny možné? A jak se to případně provádí?

Nahlásit jako SPAM
IP: 88.100.2.–
KIIV
~ Moderátor
+43
God of flame
12. 2. 2009   #6
-
0
-

no existuje taky sdilena pamet a signaly...
pak sockety,
pipes sou taky v pohode... ale casteji sem videl jen jednosmerny...

Nahlásit jako SPAM
IP: 80.188.94.–
Program vždy dělá to co naprogramujete, ne to co chcete...
forstec0
Návštěvník
12. 2. 2009   #7
-
0
-

A je vůbec nutné, aby běžely obě aplikace? Nestačilo by udělat jako proces pouze GUI a Překladač vytvořit jako knihovnu, kde by jednotlivé funkce byly volány z GUI? To by znamenalo, že se data z překladače předají až po vykonaní fce. Neskutečně zjednodušený příklad:



//knihovna
class Prekladac
{
public Bitmap Graf(int promenna1, int promenna2)
{
//kod, ktery spocita a vykresli do bitmapy
}
}

//GUI
class form
{
//vstup od uzivatele, ktery pouziji k zavolani fce
Prekladac prekladac=new Prekladac();
//nejake rozhodnuti, jakou fci chtel uzivatel volat
Bitmap vyslednyGraf=prekladac.Graf(vstup1,vstup2);
//vykresleni bitmapy na form...
}


Tohle by přece fungovat mělo. Když ne, vzdávám se:)

Nahlásit jako SPAM
IP: 78.108.103.–
forstec
hamir0
Duch
12. 2. 2009   #8
-
0
-

To forstec :

Tahle to podle mě nejde. PŘEKLADAČ produkuje jiný program, který pak běží nezávisle na něm, teda, pokud to nebudu chtít dělat jako interpreter. Takže toto řešení není použitejné, tedy z hlediska knihoven.

Každopadně děkuji.

Nahlásit jako SPAM
IP: 88.100.2.–
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, 44 hostů

Podobná vlákna

Komunikace mezi pc — založil delete

Komunikace mezi třídami — založil rich

Komunikace mezi okny c# — založil pejtrik

 

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