Mam proces „potokowy”, który zasadniczo łączy ze sobą kilka istniejących narzędzi do automatyzacji przepływu pracy. Dla jednego z kroków istnieje narzędzie wiersza polecenia, które już robi wszystko, co ten krok musi zrobić.
Zewnętrzne narzędzie CLI jest oparte na Javie, podobnie jak mój potok, więc byłoby możliwe zintegrowanie narzędzia bezpośrednio z etapem potoku, ale narzędzie jest bardzo złożone i jest obecnie ściśle powiązane z wprowadzaniem danych z wiersza poleceń (coś w rodzaju 37 opcji flagi konfiguracji).
Pytanie brzmi: czy lepiej jest po prostu wywołać i wywołać zewnętrzny proces, czy lepiej byłoby zintegrować zewnętrzny kod z moją aplikacją?
Jakie są zalety / wady integracji a wywołanie procesu zewnętrznego?
java
architecture
cdeszaq
źródło
źródło
Odpowiedzi:
Jest dużo lepiej zintegrować te rzeczy.
Interfejs wiersza poleceń jest tylko interfejsem, a szczególnie okropnym. Jest to niezbędne, ale jest też pełne dziwactw i ograniczeń, które nie są rozsądne.
Każde z „istniejących narzędzi do automatyzacji przepływu pracy” powinno mieć uporządkowaną klasę, która wykonuje prawdziwą pracę po przeanalizowaniu opcji wiersza polecenia.
Idealnie,
public static void main
funkcja wykonuje dwie rzeczy w każdym z tych „istniejących narzędzi”.Wywołuje niektóre opcje wiersza poleceń / analizator składni argumentów.
Przywołuje schludną klasę, która wykonuje prawdziwą pracę. Pomyśl o zadaniu Mrówka lub Mavenie, które wykonuje prawdziwą pracę po tym, jak Mrówka lub Maven wykonają wszystkie analizy i podejmowanie decyzji.
Kiedy idziesz do integracji tych rzeczy, chcesz uporządkowane klasy, które wykonują prawdziwą pracę.
Jeśli nie istnieją, będziesz musiał przepisać wszystkie te narzędzia, aby utworzyć uporządkowaną klasę, która wykona prawdziwą pracę, niezależnie od analizy składni wiersza poleceń.
Aby uzyskać wskazówki, jak te uporządkowane klasy powinny działać, przeczytaj Ant (lub Maven), aby zobaczyć, jak definiują różne zadania pracownicze. To dobry model mentalny do tego, jak wiele różnych elementów jest zintegrowanych bez powrotu do wiersza poleceń.
źródło
main
metodę, metody analizy CLI itp. Jest to raczej paskudne :(Powiedziałbym, zostaw to w spokoju, jeśli to działa.
Jako programista wnosisz wartość do swojej organizacji, rozwiązując problemy z oprogramowaniem. Rozwiązanie większej ilości problemów zarówno pod względem jakości, jak i ilości w określonym czasie jest bezpośrednio związane z twoją wartością w organizacji. Spędzanie tego czasu na tworzeniu kodu zmniejsza twoją wartość, ponieważ odciąga cię od rozwiązania ważniejszego problemu.
Jednak kilkoma czynnikami, które mogłyby złagodzić spędzanie czasu, byłyby skalowalność i gdyby były jakiekolwiek obawy dotyczące stabilności programów zewnętrznych.
źródło
To nie jest „lepsze” ani „gorsze”. Istnieją po prostu różne koszty i korzyści.
Często droższe jest pisanie i utrzymywanie oprogramowania, im większa liczba punktów integracji powoduje dodatkową złożoność.
Uwaga: są to koszty integracji, które należy porównać z całkowitymi kosztami, które obejmują między innymi koszt pisania i utrzymania oprogramowania.
Może być tak, że jesteś bardzo niedoświadczonym programistą, ale od dawna zaawansowanym użytkownikiem.
Najlepszy sposób, aby dowiedzieć się:
Czy obliczyć koszty dla siebie. Koszt będzie różny dla różnych środowisk, sytuacji i ludzi. W większości przypadków koszt połączenia z linią poleceń jest wyższy, ale nie zawsze i jest to jedyny sposób, aby mieć pewność, że przeprowadzi analizę.
źródło
Najlepiej byłoby to zintegrować. Zwłaszcza jeśli jest to aplikacja, która jest dystrybuowana - zmniejszenie liczby zależności i konfiguracji ułatwi to. Ale jest to oczywiście kwestia kosztów / korzyści dla konkretnego przypadku.
To powiedziawszy, jedną rzeczą do rozważenia jest stabilność. Kilka lat temu spotkałem coś podobnego i utrzymałem program cli na swoim miejscu. Był zbyt niestabilny i nie chciałem, aby jego awaria spowodowała usunięcie aplikacji nadrzędnej, która musiała działać 24/7. Teraz nie była to aplikacja Java, ale mimo to, jeśli może to dotyczyć problemu, warto wziąć to pod uwagę.
źródło