Vydělávej až 160.000 Kč měsíčně! Akreditované rekvalifikační kurzy s garancí práce od 0 Kč. Více informací.
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.

Diskuze: Dobrý licence manager, obfuscator a server

V předchozím kvízu, Test znalostí C# .NET online, jsme si ověřili nabyté zkušenosti z kurzu.

Aktivity
Avatar
Dog
Člen
Avatar
Dog:9.10.2017 4:34

Ahoj, mám přesně tři otázky, u svého software mám LimeLM licence manager, je to dostačující ochrana?
Dále bych potřeboval poradit nějaký dobrý obfuscator, klidně i placený.

Dále potřebuji vyřešit nějaký server, kde bude uloženo zhruba 35GB dat, dle kterých se budou analyzovat přijatá data, a pár tříd, které se budou starat o přijatá data a data odeslaná zpět do mého SW, zkrátka a hodně obrazně řečeno:

foreach{

a = 1;
b = 2;
c = UdelejNecoNaSer­veruAVratVysle­dek(1,2);

}

Bohužel nemám ani s jednou z těchto věcí nějaké hlubší zkušenosti a každé šlápnutí vedle v této fázi mě může stát zhruba půl roku práce, licence manager jsem už dohromady určitým způsobem dal, ale nejsem si jistý, jestli je to všechno v pořádku, s kvalitním obfuscatorem nemám zkušenosti, a v tomto bodě si nemohu dovolit šlápnout vedle a což se týče toho serveru, tak bych potřeboval něco spíš v javě, abych nemusel platit licence za C# server, ale vůbec netuším jak to udělat, kolik to bude stát apod, prostě v tomto bodě mám absolutně nejmenší přehled...

Nejlepší by bylo kdyby mi s těmito věcmi někdo live poradil, samozřejmě za peníze s tím nemám problém...

Editováno 9.10.2017 4:35
 
Odpovědět
9.10.2017 4:34
Avatar
Daziko
Člen
Avatar
Odpovídá na Dog
Daziko:9.10.2017 8:53

Skus Azure functions. https://docs.microsoft.com/…isual-studio
Ak si to tvoje UdelejNecoNaSer­veruAVratVysle­dek(1,2); vystaci s 1,5 GB RAM a bude to bezat v rozumnych intervaloch tak ta to nevyjde draho.

 
Nahoru Odpovědět
9.10.2017 8:53
Avatar
Jan Vargovský
Tvůrce
Avatar
Odpovídá na Dog
Jan Vargovský:9.10.2017 10:19

C# Server?

Editováno 9.10.2017 10:20
 
Nahoru Odpovědět
9.10.2017 10:19
Avatar
Odpovídá na Dog
Marian Benčat:9.10.2017 10:34

A nemůžeš jít tou cestou, že se vykašleš na blbosti, které jsou absolutně k ničemu a namísto toho, budeš mít klíčovou funkcionalitu na serveru? ;-) pak bys nepotřeboval ani žádný hloupý licence manager.. prostě checkneš klíč na serveru v DB.

Nahoru Odpovědět
9.10.2017 10:34
Totalitní admini..
Avatar
Martin Dráb
Tvůrce
Avatar
Odpovídá na Dog
Martin Dráb:9.10.2017 11:19

obsfucator

Co třeba Code Virtualizer (nevidím tu nikde jazyk té klientksé aplikace, takže to možná nebude C/C++ :-))?
https://oreans.com/…tualizer.php

Nahoru Odpovědět
9.10.2017 11:19
2 + 2 = 5 for extremely large values of 2
Avatar
Odpovídá na Martin Dráb
Marian Benčat:9.10.2017 12:14

je v .net sekci.

Nahoru Odpovědět
9.10.2017 12:14
Totalitní admini..
Avatar
Dog
Člen
Avatar
Dog:9.10.2017 14:11

Ano, samozřejmě C#
Na serveru potřebuji nainstalovat aplikaci, která bude skrz console analyzovat data a odesílat zpět

Editováno 9.10.2017 14:12
 
Nahoru Odpovědět
9.10.2017 14:11
Avatar
Dog
Člen
Avatar
Dog:9.10.2017 15:24

Třídy apod... už jsou všechny hotový, na mém PC vše funguje, ale nemohu obtěžovat uživatele se stahováním 40GB aplikace.

 
Nahoru Odpovědět
9.10.2017 15:24
Avatar
Dog
Člen
Avatar
Dog:9.10.2017 23:28

Martin: klíčová funkcionalita bude na serveru, ty nejdůležitější výpočty a bude to kontrolovat licenci

Dejme tomu, že licenci mám hotovou a obfuscating taky....

Nějáké tipy na to, jak to udělat?

Šlo by pravděpodobně o C# server (takže dražší varianta), pokud by ta třída nešla odeslat nějak jinak třeba jako binary a potom složit do javy, nebo něco v tomto smyslu, nebo přes nějaký convertor projet.

Potřebuji tedy, jak jsem již psal:

foreach
{
a = 1;
b = 2;
c = UdelejNecoNaSer­veruAVratVysle­dek(1,2);
}

NA SERVERU
otevřít konzoli aplikaceu mě zajištuje třída ConsoleCommuni­cationLiveInter­face a udělat nějáké analýzy, výsledky vrátit do mého softu

//Naplni hand spravnymi hodnotami a odesle je do kolekce
                foreach (HA hand in handsList)
{

hand.A = GetA();
hand.B = GetB();
//atd...

                        //Tento blok potřebuji přesunout na server i s aplikací, ze které čte a analyzuje data ccli
                        //mimo foreach blok, tady by museli byt samozřejmě cesty k souboru na serveru:
                        //ConsoleCommunicationLiveInterface ccli = new ConsoleCommunicationLiveInterface(
                        //@"C:\Program Files (x86)\Aplikace\app.exe",
                        //@"C:\Program Files (x86)\Aplikace\", true, "xxx",
                        //"ERROR: Command xxx not recognized");
                        //ccli.OpenConnection();

                        //ConsoleCommunicationLiveInterface ccli2 = new ConsoleCommunicationLiveInterface(
                        //@"C:\Program Files (x86)\Aplikace\app2.exe",
                        //@"C:\Program Files (x86)\Aplikace\", true, "xxx",
                        //"ERROR: Command xxx not recognized");
                        //ccli2.OpenConnection();

                        //Here we have to  send right ccli
                        ConsoleCommunicationLiveInterface ccliTemp = CheckSolution.IsForPrePi(
                            hand.PreAct, hand.PreBb)
                            ? ccli2
                            : ccli;

                        //Calculate the flop strategies based on 35GB data,
                        PiAnFl piAnFl = new PiAnFl(hand, ccliTemp);
                        hand.Fha = piAnFl.GetFlStrategies();

//List<HA> list
list.add(hand)
}

Ten blok by měl být na serveru s tím, že by vracel hand.Fha, těch 35GB dat nechci nechávat v PC uživatelů z důvodu, že jsou to celkem cenná data a nemůžu je nutit stahovat 35GB.

Jestli má někdo nějakej nápad, jak to udělat, tak bych byl vděčnej, já s tímto nemám žádnou zkušnost a klidně bych za řešení i zaplatil, chápu, že to nebude jednoduché...

Editováno 9.10.2017 23:30
 
Nahoru Odpovědět
9.10.2017 23:28
Avatar
Martin Dráb
Tvůrce
Avatar
Odpovídá na Dog
Martin Dráb:10.10.2017 1:27

Mně právě není moc jasné, kde máš přesně problém. Jestli je to v komunikaci klientské části se serverem, tam máš několik možností:

  1. server bude poslouchat na nějakém TCP/UDP portu, klient se na něj připojí, následně si budou podle definovaného protokolu vyměňovat data. Pokud chceš posílat celé třídy, tak to asi nepůjde udělat snadno tak, že bys jednu třídu odeslal z C# a přijal v Javě.
  2. vzdálené volání procedur. Tohle ti dovoluje volat metody objektů na serveru téměř jako by byly na klientovi. Opět je tu ale podmínka použití stejného jazyka pro klientskou i serverovou aplikaci. Pro C# se příslušná technologie jmenuje (IIRC) .NET Remoting, pro Javu Remote Method Invocation (RMI). Případně pro C++ tu máme třeba Corbu (ale to OPRAVDU NECHCEŠ).
  3. Použít nějaký jiný middleware pro komunikaci (např. ActiveMQ).

Pokud chceš nějak vyřešit licence, jednoduché řešení by mohlo být asi takovéto:

  1. Pro každého uživatele aplikace budeš mít privátní klíč, který může znát jen klientská aplikace.
  2. Na serveru budou veřejné klíče všech uživatelů,
  3. Pro ověření, že určitý klient patří určitému uživateli server zašle klientovi náhodný řetězec, klient jej podepíše a vrátí serveru. Ten ověří podpis a podle toho, se kterým veřejným klíčem mu to klapne, tomu uživateli daný klient patří. Jistě, když se bude uživatel dost snažit, k privátnímu klíči se dostane, ale rozhodně mu nebude stačit např. odposlouchávání síťového provozu. Případně se dají vymyslet nějaké další variace na toto téma.
Nahoru Odpovědět
10.10.2017 1:27
2 + 2 = 5 for extremely large values of 2
Avatar
Jirka Jr
Člen
Avatar
Odpovídá na Dog
Jirka Jr:11.10.2017 17:30

jakozto webař bych doporučil na straně serveru wcf rest api service a nebo novejsi asp.net web api

priklad ke konzumaci asp.net web api v .net klientovi
https://docs.microsoft.com/…a-net-client

priklad ke konzumaci wcf res api service ve wpf aplikaci
http://www.c-sharpcorner.com/…application/

budes tak mit automaticky postarano o serializaci i deserializaci posilanych/pri­jimanych dat na klientu i serveru

nekdo tu uz aj radil misto .NET klienta mit jen ASP.NET server a klienta v podobe stranek

ale pochopil jsem, ze uz mas klientskou aplikaci hotovou, takze webovou aplikaci radit nebudu

Akceptované řešení
+20 Zkušeností
+2,50 Kč
Řešení problému
 
Nahoru Odpovědět
11.10.2017 17:30
Avatar
Dog
Člen
Avatar
Dog:20.10.2017 0:59

Díky moc za vaše komenty, ale situace se změnila trošku a já vím specifičtěji o co jde :-)

135GB budou soubory, které musí ležet někde na serveru + rozhrani, ktere bude komunikovat s aplikací na desktopu :-) Cele C#... Nebude to muset spouštět nic nainstalovanýho, jen se to připojí a vyhledá soubor, zakoduje a odesle zpět do aplikace.

Nějáký tip na něco levnějšího kde by mohl být hosting? a nějak tak nástin, jak si s tím poradit? Pravděpodobně asi ten remoting bude nejlepší ne? :-)

 
Nahoru Odpovědět
20.10.2017 0:59
Avatar
Martin Dráb
Tvůrce
Avatar
Odpovídá na Dog
Martin Dráb:20.10.2017 10:33

Pokud oboje bude v C#, tak by .NET remoting mohl být ta správá volba (ušetříš tím něco psaní komunikačního rozhraní mezi serverem a aplikací).

O hostingu (natož levném) na tyhle věci nevím. Pokud by se ten server dal rozjet v Monu (nevím, zda .NET Core umí RPC, popř. jak složité je ho rozjet na Linuxu), tak v podstatě jen hledáš server s dostatečně velkým diskem. V tomto ohledu by skoro stačil VPSFree (300,- / měsíc, 8xCPU, 4 GB RAM, 120 GB HDD), určitě by se s nimi dalo dohodnout na vyšší kapacitě disku (popř. krom 120 GB HDD dovolují využít snad až 250 GB na NAS úložišti).

ALe je dost možné, že bude existovat nějaká lepší varianta.

Nahoru Odpovědět
20.10.2017 10:33
2 + 2 = 5 for extremely large values of 2
Avatar
Dog
Člen
Avatar
Dog:23.10.2017 2:16

díky moc za všechny tipy :-)

Naučil jsem se WCF a ASP WEB API, je to nejnovější platformy a ostatní věci, jako .NET Remoting jsou celkem oldschool a z toho co jsem se dočetl se je nema ani smysl ucit, tak jsem si přečetl o remotingu jen nějáké základy ...

 
Nahoru Odpovědět
23.10.2017 2:16
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 14 zpráv z 14.