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.
Fórum › .NET
Komunikace mezi aplikacemi?
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í.
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í?
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:)
Přidej příspěvek
Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku
×Vložení zdrojáku
×Vložení obrázku
×Vložení videa
Uživatelé prohlížející si toto vlákno
Podobná vlákna
Předávání hodnot mezi aplikacemi — založil Sebix
Komunikace mezi pc — založil delete
Komunikace mezi třídami — založil rich
Komunikace mezi okny c# — založil pejtrik
Qt - komunikace mezi třídami — založil jaspys
Moderátoři diskuze