Výhody a nevýhody pomocí existující sestavení .NET versus příkazového řádku nástroj pro stejný účel

hlasů
11

Jsem hledal na internetu a nemohu najít něco vztahující se k tomuto tématu. Řekl bych, že by tam byla nějaká diskuse o tom. Já prostě nemůžu ho najít.

V podstatě to, co jsem hledal, je dobré důvody použít existující sestavení .NET udělat totéž An (starší) příkazového řádku spustitelný udělá. Proto, když jsem použil shromáždění bych zahrnout ji a začít používat ve svém kódu C #. Pro nás ten starý nástroj příkazového řádku, tak bych udělat Process.Start(...), a tak dále.

Dosavadní stav techniky v této oblasti je:

Mám povinnost provádět šifrování a dešifrování PGP na souborech přenesených do az našeho systému. Mé současné možnosti jsou k použití příkazového řádku GPG nástroj (http://www.gnupg.org/) nebo sestavu skákací hrad .NET.

Byl jsem požádán, proč nemám jen „automatizaci“ starý GPG nástroj příkazového řádku v mém kódu. Chtěl bych odpovědět s nějakou inteligencí. Právě teď mohu myslet jen na to ze dvou důvodů:

  1. Zpracování chyb: Měl bych být schopen nejen získat lepší informace o chybě pomocí sestavení .NET, ale s nimi zacházet lépe přes try / úlovku s výjimkami, atd. Dokonce bych mohl vrátit své vlastní výjimky podle potřeby, atd.

  2. Kód přenosnost: Něco jsem stavět s sestavení .NET je více či méně samostatně. Nepotřebuji najít a zkopírovat GPG spustitelný na každé místo, kde jsem kopírovat aplikace (y) píšu používat.

  3. Výkon: Možná. Nemám žádné zkušenosti nebo data týkající se tohoto.

Ocenila bych žádný vstup na toto téma.

Položena 24/01/2012 v 16:08
zdroj uživatelem
V jiných jazycích...                            


4 odpovědí

hlasů
6

Upřímně řečeno, já bych jít s sestavení .NET, jak se zdá být jednodušší řešení a těsněji obsahoval řešení, než zahájit nový proces. Některé z důvodů, proč jsem pocit, že způsob, jakým jsou tyto:

  1. S nástrojem příkazového řádku, že jste na trh nový proces. Takže je to zcela samostatný proces ID běh a bude probíhat mimo rozsah a aplikační domény vaší stávající aplikace. Veškerá komunikace mezi aplikací a procesu bude přes hranice procesu a bude muset být provedeno buď s telefonem, jakési sdílené paměti, nebo nějaký jiný přístup, který by mohl být těžkopádný (zejména při řešení otázek).
  2. Se zahájením nového procesu, jste v podstatě ztratí kontrolu nad tímto procesem z vaší aplikace. Pokud vaše aplikace zemře nebo se vypne, budete muset tento proces výslovně zabít - jinak budete muset úchyty zůstat otevřené soubory uzamčeny, atd.
  3. Včetně sestavení .NET v aplikaci umožňuje vše spustit ve stejném kontextu (obecně), který umožňuje lepší komunikaci mezi složkami, snadnější ladění a odstraňování poruch (obecně), a jediný způsob je řízena.
  4. Máte trochu větší kontrolu nad kódu. Zahájení procesu je v podstatě black-box - nemáte ponětí, co se děje uvnitř ní. Je pravda, že se sestavení .NET máte podobný black-box scénář, ale vzhledem k tomu, že je ve stejném procesu, může mít nějaké další vhled do toho, jak jsou hovory byly provedeny, kde jsou výjimky být hozen, atd. V podstatě mít trochu větší vhled do složky s sestavení .NET spíše než zahájit nový proces.

To jsou jen některé myšlenky z vrcholu mé hlavy. Doufám, že to pomůže. Máte-li dotazy, dejte mi vědět a já vám zpracovat mé odpovědi. Hodně štěstí!!

Odpovězeno 24/01/2012 v 16:16
zdroj uživatelem

hlasů
3

Osobně bych použít na sestavení .NET namísto nástroje příkazového řádku, pokud je to možné.

Klady:

  • snazší nasazení (nemusíte zkopírovat spustitelný soubor)
  • lepší přenositelnost (v závislosti na commande-line možnosti kompilace nástroj, mohlo by to být pro některé platformy, na druhé straně, čistý Net podařilo sestav sestavené cílit AnyCPU bude pracovat na x 86 / x 64 stroje)
  • snadnější manipulace knihovny třetí strany (parametry funkce vs zpracování příkazového řádku / formátování)
  • zvolit, zda budete volat metody synchronně nebo ne; na druhou stranu, samostatný proces musí být asynchronní. Synchronizace vláken / procesů není triviální úkol.
  • nebudete muset vypořádat s IPC , jak je vše v jediném procesu
  • mnohem snadnější ladění (krok po kroku ladění ... atd.)
  • Vedení výjimka také snadnější (dostanete plnou trasování zásobníku, ne jen figurína Kód ukončení procesu)
  • Použití Net koncepcí (objektově orientovaného programování, Exceptions, events... atd.)
Odpovězeno 24/01/2012 v 16:22
zdroj uživatelem

hlasů
2

Je to jednodušší dělat. Dva ze svých tří kusů vše k tomu vrátím.

Třetí je možná pravda, protože tam je méně procesy, které mají jít a nepotřebují komunikovat mezi sebou, nebo false, protože spustitelného stane dát mnohem lepší výkon než sestavy a out-váží tento efekt.

Ale jednoduchost si koupí sakra hodně, a udržuje na to, aby (možná budete muset podporovat tuto aplikaci po určitou dobu). Pravděpodobně existuje dobrý několik dalších „profesionálové“, které si lze představit, že sestoupí na to do konce roku.

Opravdu, když je něco jednodušší (a skutečně jednodušší, než sirény-volání přes-jednoduchá, že skončí být složitější v dlouhodobém horizontu), budete potřebovat nějaké opravdu přesvědčivé protiargumenty na out-vážit, že.

Odpovězeno 24/01/2012 v 16:26
zdroj uživatelem

hlasů
2

1, 2 a 3. Spuštění nového procesu pro každý šifrování Souhlasím / dešifrování je rozhodně dražší než předvádění ho procesu. To se ještě více rozhodující, pokud je třeba provést více šifrování / dešifrování souběžně, který četl vaši otázku jsem očekával vy.

Kromě toho je tu 64 bit verze nástroje příkazového řádku? To může být argumentem proti.

Odpovězeno 24/01/2012 v 16:16
zdroj uživatelem

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more