Current checking
This commit is contained in:
parent
dd92b9c1ac
commit
a1829bfcfc
9 changed files with 150 additions and 86 deletions
|
@ -3,75 +3,46 @@
|
|||
%*******************************************************
|
||||
% If problems with the headers: get headings in appendix etc. right
|
||||
%\markboth{\spacedlowsmallcaps{Appendix}}{\spacedlowsmallcaps{Appendix}}
|
||||
\chapter{Umfrage}
|
||||
\chapter{Umfrage zur Optimierung}
|
||||
\label{ch:Umfrage}
|
||||
%Lorem ipsum at nusquam appellantur his, ut eos erant homero
|
||||
%concludaturque. Albucius appellantur deterruisset id eam, vivendum
|
||||
%partiendo dissentiet ei ius. Vis melius facilisis ea, sea id convenire
|
||||
%referrentur, takimata adolescens ex duo. Ei harum argumentum per. Eam
|
||||
%vidit exerci appetere ad, ut vel zzril intellegam interpretaris.
|
||||
%\graffito{More dummy text.}
|
||||
|
||||
\section{Umfrage zur Optimierung der}
|
||||
|
||||
Herzlich Willkommen
|
||||
|
||||
Dies Umfrage ist Teil der Bachelorarbeit "..." von Marco Galster, die Rahmen des Projektes "Edition der Korrespondenz
|
||||
Frank Wedekinds als Online-Volltextdatenbank (http://)" an der Fernuni Hagen durchgeführt wird. In der Bachelorarbeit
|
||||
soll der aktuelle Prototyp auf Performance-Probleme untersucht und diese im Anschluss optimiert werden, um die
|
||||
Benutzerfreundlichkeit und die Akzeptanz der Anwendung zu verbessern. Wodurch die Forschung der literarhistorische und
|
||||
kulturgeschichtliche Wissen über die Kultur erweitert wird.
|
||||
\hfill
|
||||
|
||||
Der aktuelle Prototyp der Anwendung wird unter \href{https://briefedition.wedekind.h-da.de} bereitgestellt. Im Rahmen
|
||||
ihrer normalen Tätigkeit an dem Projekt, sind die Fragen zu beantworten. Bitte geben Sie so viele Information mit an
|
||||
die ihnen zur Problem auffallen.
|
||||
Diese Umfrage ist Teil der Bachelorarbeit >>Analyse und Optimierung der Webseite des Wedekind Projektes<< von Marco
|
||||
Galster, die Rahmen des Projektes >>Edition der Korrespondenz Frank Wedekinds als Online"=Volltextdatenbank<< an der
|
||||
Fernuni Hagen durchgeführt wird. In der Bachelorarbeit soll der aktuelle Prototyp auf Performance"=Probleme untersucht
|
||||
und im Anschluss optimiert werden, um die Benutzerfreundlichkeit und die Akzeptanz der Anwendung zu verbessern.
|
||||
Dies soll dazu führen, dass die digitalen Briefeditionen verstärkt bei der Forschung zur literarhistorischen und
|
||||
kulturgeschichtlichen Wissenssteigerung eingesetzt werden.
|
||||
|
||||
Wir bedanken uns im Voraus für ihre Zeit und die Teilnahme an der Umfrage. Für die Umfrage benötigen Sie ca. 20 Minuten.
|
||||
\mytodos{der letzte Satz nochmal überarbeiten!}
|
||||
|
||||
\subsection{Allgemeine Angaben}
|
||||
% helfen das die FOrschung mithilfe solcher datenbank vorrangetrieben wird und somit die foschung an briefedition das Wissen über die Kultur erweitert
|
||||
\hfill
|
||||
|
||||
Der aktuelle Prototyp der Anwendung wird unter \href{https://briefedition.wedekind.h-da.de} bereitgestellt. Die Fragen
|
||||
sind bitte im Rahmen ihrer normalen Tätigkeit an dem Projekt zu beantworten. Bitte geben Sie so viele Informationen
|
||||
mit an, die ihnen zu den Problemen mit auffallen.
|
||||
|
||||
%\section{Appendix Section Test}
|
||||
%Test: \autoref{tab:moreexample} (This reference should have a
|
||||
%lowercase, small caps \spacedlowsmallcaps{A} if the option
|
||||
%\texttt{floatperchapter} is activated, just as in the table itself
|
||||
% $\rightarrow$ however, this does not work at the moment.)
|
||||
\hfill
|
||||
|
||||
%\begin{table}[h]
|
||||
% \myfloatalign
|
||||
% \begin{tabularx}{\textwidth}{Xll} \toprule
|
||||
% \tableheadline{labitur bonorum pri no} & \tableheadline{que vista}
|
||||
% & \tableheadline{human} \\ \midrule
|
||||
% fastidii ea ius & germano & demonstratea \\
|
||||
% suscipit instructior & titulo & personas \\
|
||||
% %postulant quo & westeuropee & sanctificatec \\
|
||||
% \midrule
|
||||
% quaestio philosophia & facto & demonstrated \\
|
||||
% %autem vulputate ex & parola & romanic \\
|
||||
% %usu mucius iisque & studio & sanctificatef \\
|
||||
% \bottomrule
|
||||
% \end{tabularx}
|
||||
% \caption[Autem usu id]{Autem usu id.}
|
||||
% \label{tab:moreexample}
|
||||
%\end{table}
|
||||
Wir bedanken uns im Voraus für ihre Zeit und die Teilnahme an der Umfrage. Für die Umfrage benötigen Sie ca. 10 Minuten.
|
||||
|
||||
%Nulla fastidii ea ius, exerci suscipit instructior te nam, in ullum
|
||||
%postulant quo. Congue quaestio philosophia his at, sea odio autem
|
||||
%vulputate ex. Cu usu mucius iisque voluptua. Sit maiorum propriae at,
|
||||
%ea cum primis intellegat. Hinc cotidieque reprehendunt eu nec. Autem
|
||||
%timeam deleniti usu id, in nec nibh altera.
|
||||
\hfill
|
||||
|
||||
%\section{Another Appendix Section Test}
|
||||
\begin{enumerate}
|
||||
\item Welche Tätigkeit führen Sie aus? (Bearbeiter/Verwender)
|
||||
|
||||
%\begin{lstlisting}[float=b,language=Pascal,frame=tb,caption={A floating example (\texttt{listings} manual)},label=lst:useless]
|
||||
%for i:=maxint downto 0 do
|
||||
%begin
|
||||
%{ do nothing }
|
||||
%end;
|
||||
%\end{lstlisting}
|
||||
\item Bitte geben Sie nun die Tätigkeiten an, bei denen immer wieder Verzögerung auftreten. Geben Sie bitte zu
|
||||
jeder Tätigkeit noch folgende Informationen mit an:
|
||||
|
||||
%Ei solet nemore consectetuer nam. Ad eam porro impetus, te choro omnes
|
||||
%evertitur mel. Molestie conclusionemque vel at, no qui omittam
|
||||
%expetenda efficiendi. Eu quo nobis offendit, verterem scriptorem ne
|
||||
%vix.
|
||||
\begin{itemize}
|
||||
\item Wie häufig tritt die Verzögerung auf? (in Abhängigkeit zum Aufruf)
|
||||
\item Gibt es einen zeitlichen Bezug? (z.B. tritt die Verzögerung nur Vormittags auf)
|
||||
\item Tritt es immer einer bestimmten Abfolge auf, und wenn ja in welcher? (z.B. wenn man zuerst die
|
||||
Benutzerliste anwählt und dann in den Bearbeiten-Modus wechselt)
|
||||
\end{itemize}
|
||||
|
||||
\end{enumerate}
|
||||
|
|
|
@ -11,7 +11,7 @@ um eine längere Bearbeitung anzuzeigen.
|
|||
\section{Motivation}
|
||||
\label{sec:intro:motivation}
|
||||
|
||||
Die Frank-Wedekind-Bibliothek soll als Grundlage weiterer Forschungen dienen. Durch die weitere Forschung soll die
|
||||
Die Frank"=Wedekind"=Bibliothek soll als Grundlage weiterer Forschungen dienen. Durch die weitere Forschung soll die
|
||||
literarhistorische und kulturgeschichtliche Wissen über die Kultur zwischen 1880 und 1918 erweitern. Um dieses
|
||||
Vorhaben umsetzen zu können muss die Anwendung dem Benutzer gerecht werden, damit diese verwendet wird und somit
|
||||
den Wissenstand entsprechend erweitert werden kann.
|
||||
|
@ -48,7 +48,7 @@ Nachfolgenden wird im Kapitel \ref{ch:concept} die Konzepte vorgestellt mit welc
|
|||
Hierbei ist zusätzlich ein Blick auf andere Frameworks sinnvoll, um dort aus den bekannten Anomalien zu lernen und
|
||||
deren Lösungsansatz zu überprüfen ob diese angewandt werden kann.
|
||||
|
||||
Bei den Performance-Untersuchung in Kapitel \ref{ch:performance-checking} werden nun die Konzepte angewandt, um
|
||||
Bei den Performance"=Untersuchung in Kapitel \ref{ch:performance-checking} werden nun die Konzepte angewandt, um
|
||||
die Problemstellen zu identifizieren. Diese werden dann bewertet, unter den Gesichtspunkten ob eine Optimierung an
|
||||
dieser Stelle sinnvoll ist, oder ob der Arbeitsaufwand dafür zu enorm ist.
|
||||
|
||||
|
|
|
@ -3,16 +3,16 @@
|
|||
\label{ch:basics}
|
||||
|
||||
Da die Anwendung als Webseite umgesetzt ist, ist der zugehörige Client für den Benutzer ein Webbrowser. Dies bedeutet,
|
||||
das jeder Wechsel einer Seite oder eine Suchanfrage als Web-Request an den Server geschickt wird. Solch ein Web-Request
|
||||
geht durch mehrere Schichten des Server-System bis die Antwort an den Client zurückgesendet wird, wie in
|
||||
das jeder Wechsel einer Seite oder eine Suchanfrage als Web"=Request an den Server geschickt wird. Solch ein Web"=Request
|
||||
geht durch mehrere Schichten des Server"=System bis die Antwort an den Client zurückgesendet wird, wie in
|
||||
\ref{fig:webrequest} dargestellt.
|
||||
|
||||
Angefangen bei der Anfrage die über den Webbrowser an den Server gestellt wird und vom \textit{Glassfish}-Server
|
||||
Angefangen bei der Anfrage die über den Webbrowser an den Server gestellt wird und vom \textit{Glassfish}"=Server
|
||||
empfangen wird. In diesem wird anhand des definierten Routing entschieden, an welche \textit{Java Server Page} die
|
||||
Anfrage weitergeleitet und verarbeitet wird. In dieser wird die Darstellung der Webseite geladen und die Anfragen für
|
||||
den darzustellenden Datenbestand abgeschickt.
|
||||
|
||||
Die Datenanfragen werden über die \textit{Enterprise Java Beans} an die \textit{Java Persistance API} weitergeleitet.
|
||||
Die Datenanfragen werden über die \textit{\ac{EJB}} an die \textit{\ac{JPA}} weitergeleitet.
|
||||
Hier wird nun geprüft, ob die Daten aus dem \textit{OpenJPA Cache} direkt ermittelt werden können, oder ob die Abfrage
|
||||
an das unterlagerte Datenbankmanagementsystem \textit{PostgreSQL} weitergeleitet werden muss. Die ermittelten Daten vom
|
||||
DBMS werden bei Bedarf im \textit{OpenJPA Cache} aktualisiert.
|
||||
|
@ -64,20 +64,20 @@ zu verringern. Um Anfragen die den Zugriff auf die Festplatte benötigen effizie
|
|||
\section{Glassfish - Enterprise Java Beans}
|
||||
\label{sec:basics:ejb}
|
||||
|
||||
In den Java-EE-An\-wen\-dung\-en wird der \textit{Persistenzkontext} für die Anfragen vom \textit{Application-Server}
|
||||
bereitgestellt. Hierfür werden \textit{Application-Server} wie \textit{GlassFish} genutzt, um die Verwendung eines Pools
|
||||
In den Java"=EE"=Anwendungen wird der \textit{Persistenzkontext} für die Anfragen vom \textit{Application"=Server}
|
||||
bereitgestellt. Hierfür werden \textit{Application"=Server} wie \textit{GlassFish} genutzt, um die Verwendung eines Pools
|
||||
von Datenbankverbindungen zu definieren \citep[68]{MüllerWehr2012}. Dadurch kann die Anzahl der Verbindung geringer
|
||||
gehalten werden als die Anzahl der Benutzer die an der Anwendung arbeiten. Zusätzlich werden die Transaktionen über
|
||||
\textit{Stateful Session-Bean (SFSB)} gehandhabt, welche automatisch vor dem Aufruf erzeugt und danach wieder gelöscht
|
||||
\textit{\ac{SFSB}} gehandhabt, welche automatisch vor dem Aufruf erzeugt und danach wieder gelöscht
|
||||
werden. Dies birgt allerdings den Nachteil, dass der \textit{Persistenzkontext} sehr groß werden kann, wenn viele
|
||||
Entities in den \textit{Persistenzkontext} geladen werden. Da dies häufig zu Speicher- und damit Performanz-Problemen
|
||||
Entities in den \textit{Persistenzkontext} geladen werden. Da dies häufig zu Speicher"~ und damit Performanz"=Problemen
|
||||
\citep[79]{MüllerWehr2012} führen kann, muss hier darauf geachtet werden, nicht mehr benötigte Entities aus dem
|
||||
\textit{Persistenzkontext} zu lösen.
|
||||
|
||||
\section{Glassfish - Java Persistance API}
|
||||
\label{sec:basics:jpa}
|
||||
|
||||
Die \textit{Java Persistence API (JPA)} wird als First-Level-Cache in Java-EE-An\-wen\-dung verwendet, hier nehmen die
|
||||
Die \textit{\ac{JPA}} wird als First"=Level"=Cache in Java"=EE"=Anwendung verwendet, hier nehmen die
|
||||
Objekte einen von vier Zuständen ein \citep[57]{MüllerWehr2012}. Im Zustand \textit{Transient} sind die Objekt erzeugt,
|
||||
aber noch nicht in den Cache überführt worden. Wenn diese in den Cache überführt worden sind, nehmen sie den Zustand
|
||||
\textit{Verwaltet} ein. Ist das Objekt aus dem Cache und der Datenbank entfernt worden, nimmt es den Zustand
|
||||
|
@ -94,16 +94,16 @@ Eine Menge von Objekten wird als \textit{Persistenzkontext} bezeichnet. Solange
|
|||
|
||||
Zusätzlich kann im \textit{JPA} ebenfalls noch der \textit{Second Level Cache} (L2-Cache) aktiviert werden. Dieser steht
|
||||
jedem \textit{Persistenzkontext} zur Verfügung und kann dadurch die Anzahl der Datenbankzugriffe deutlich reduzieren,
|
||||
was bei langsamen Datenbank-Anbindungen zu hohen Performance-Gewinnen führen kann \citep[171]{MüllerWehr2012}.
|
||||
was bei langsamen Datenbank"=Anbindungen zu hohen Performance"=Gewinnen führen kann \citep[171]{MüllerWehr2012}.
|
||||
Gegen die Verwendung spricht, dass die Daten im \textit{Second Level Cache} explizit über Änderungen informiert werden
|
||||
müssen, welche sonst beim nächsten Aufruf veraltete Werte liefern. Ebenfalls benötigt so ein Cache einen höheren Bedarf
|
||||
an Arbeitsspeicher, in dem die Daten parallel zur Datenbank bereitgestellt werden, daher ist die Benutzung nur
|
||||
problemlos bei Entities möglich, auf die meist lesend zugegriffen wird.
|
||||
|
||||
In der OpenJPA-Erweiterung für den L2-Cache, wird in \textit{Objekt-Cache} (in OpenJPA als \textit{DataCache}
|
||||
In der OpenJPA"=Erweiterung für den L2-Cache, wird in \textit{Objekt-Cache} (in OpenJPA als \textit{DataCache}
|
||||
bezeichnet) und Query-Cache unterschieden. Über die Funktionen \texttt{find()} und \texttt{refresh()} oder einer Query
|
||||
werden die geladenen Entities in den Cache gebracht. Davon ausgenommen sind \textit{Large Result Sets} (Abfragen die
|
||||
nicht alle Daten auf einmal laden), \texttt{Extent}-Technologien und Queries, die einzelne Attribute von Entities
|
||||
nicht alle Daten auf einmal laden), \texttt{Extent}"=Technologien und Queries, die einzelne Attribute von Entities
|
||||
zurückliefern, aber nicht das Entity selbst. Hierbei kann genau gesteuert werden, welche Entity in den Cache abgelegt
|
||||
wird und welche nicht. Ebenfalls kann auf Klassenbasis der zugehörige Cache definiert werden, um eine bessere
|
||||
Last-Verteilung beim Zugriff zu ermöglichen \citep[314]{MüllerWehr2012}.
|
||||
|
@ -114,14 +114,14 @@ Entities gespeichert. Bei einen erneuten Aufruf dieser Abfrage werden die refere
|
|||
genutzt und die betroffenen Abfragen werden unverzüglich aus dem \textit{Query-Cache} entfernt
|
||||
\citep[316]{MüllerWehr2012}.
|
||||
|
||||
Um zu prüfen, ob die Einstellungen sinnvoll gesetzt sind, kann in OpenJPA eine Cache-Statistik abgefragt werden. Mit
|
||||
dieser kann die Anzahl der Lese- und Schreibzugriffe im Cache überprüft werden, entsprechend dieser Auswertung sollten
|
||||
Um zu prüfen, ob die Einstellungen sinnvoll gesetzt sind, kann in OpenJPA eine Cache"=Statistik abgefragt werden. Mit
|
||||
dieser kann die Anzahl der Lese"~ und Schreibzugriffe im Cache überprüft werden, entsprechend dieser Auswertung sollten
|
||||
die Einstellungen an den Entities angepasst werden \citep{IbmOpenJPACaching2023}.
|
||||
|
||||
\section{PostgreSQL - Memory Buffers}
|
||||
\label{sec:basics:memorybuffers}
|
||||
|
||||
Die Speicherverwaltung des PostgreSQL-Servers muss für Produktivsysteme angepasst werden \citep[34-38]{Eisentraut2013}.
|
||||
Die Speicherverwaltung des PostgreSQL"=Servers muss für Produktivsysteme angepasst werden \citep[34-38]{Eisentraut2013}.
|
||||
Hierunter fallen die \textit{shared\_buffers} die bei ca. 10 bis 25 Prozent des verfügbaren Arbeitsspeichers liegen
|
||||
sollten. Mit dieser Einstellung wird das häufige Schreiben des Buffers durch Änderungen von Daten und Indexen auf die
|
||||
Festplatte reduziert.
|
||||
|
@ -144,12 +144,12 @@ somit die Performance hebt, beachtet die Obergrenze ebenfalls.
|
|||
|
||||
Die Wartung des Datenbanksystems ist eine der wichtigsten Aufgaben und sollte regelmäßig
|
||||
durchgeführt werden, damit die Performance des Systems durch die Änderungen des Datenbestands nicht einbricht
|
||||
\citep[75]{Eisentraut2013}. Hierfür gibt es den \texttt{VACUUM}-Befehl, welcher entweder per Hand oder automatisch durch
|
||||
\citep[75]{Eisentraut2013}. Hierfür gibt es den \texttt{VACUUM}"=Befehl, welcher entweder per Hand oder automatisch durch
|
||||
das Datenbanksystem ausgeführt werden soll. Für die automatische Ausführung kann der maximal verwendete Speicher über
|
||||
die Einstellung \textit{autovacuum\_work\_mem} gesondert definiert werden \citep{PostgresPro:Chap20.4:2023}.
|
||||
Neben dem Aufräumen durch \texttt{VACUUM}, sollten auch die Planerstatistiken mit \texttt{ANALYZE}
|
||||
\citep[83]{Eisentraut2013} aktuell gehalten werden, damit die Anfragen durch den Planer richtig optimiert werden können.
|
||||
Für beide Wartungsaufgaben gibt es den Autovacuum-Dienst, dieser sollte aktiv und richtig konfiguriert sein.
|
||||
Für beide Wartungsaufgaben gibt es den Autovacuum"=Dienst, dieser sollte aktiv und richtig konfiguriert sein.
|
||||
|
||||
Mit dem Tool \textit{pgFouine} \citep[155]{Eisentraut2013} können die Logs des PostgreSQL Server analysiert und auf
|
||||
Probleme hin untersucht werden. Hiermit können sehr einfach die häufigsten bzw. langsamsten Anfragen ermittelt werden.
|
||||
|
|
|
@ -5,10 +5,6 @@
|
|||
\section{Aufbau der Umfrage}
|
||||
\label{sec:concept:poll}
|
||||
|
||||
% erste Frage sollte unterscheiden ob Bearbeiter oder Benutzer ist
|
||||
% an welchen Aktion kommt es zu längeren Wartezeiten
|
||||
% wie häufig sind die langen Wartezeiten
|
||||
% treten sie sporadisch oder immer mit gleichen Muster (z.B. immer Nachmittags, immer bei der gleichen Abfolge an Aktionen) auf
|
||||
|
||||
Die Umfrage wird über Email an die XX Personen verschickt. Als Basis für die Umfrage wird der aktuelle Prototyp
|
||||
unter \href{https://briefedition.wedekind.h-da.de} verwendet. Hierbei wird die gleiche Umfrage für Bearbeiter
|
||||
|
@ -31,7 +27,7 @@ Die Anfrage wird im Anhang \ref{ch:Umfrage} dargestellt.
|
|||
Für die Untersuchung des Systems wird der direkte Zugang zum Server benötigt. Hierbei werden zuerst die im Kapitel
|
||||
\ref{sec:basics:services} beschriebenen Einstellungen überprüft.
|
||||
|
||||
Zuerst wird am PostgreSQL-Server die Konfiguration der Speicher mit der Vorgabe für Produktivsystem abgeglichen.
|
||||
Zuerst wird am PostgreSQL"=Server die Konfiguration der Speicher mit der Vorgabe für Produktivsystem abgeglichen.
|
||||
Hierunter fallen die Einstellungen für die \textit{shared\_buffers}, der bei einem Arbeitsspeicher von mehr als 1 GB
|
||||
ca. 25\% des Arbeitsspeicher definiert sein soll \cite{PostgresC20.4:2024}.
|
||||
|
||||
|
@ -55,12 +51,12 @@ Hierbei kann es mehrere Faktoren geben. Zum einem führt das Paging des Arbeitss
|
|||
klein gewählter Cache oder gar zu wenig Arbeitsspeicher erhöhen die Zugriffe auf die Festplatte, da weniger
|
||||
zwischengespeichert werden kann und daher diese Daten immer wieder direkt von der Festplatte geladen werden müssen.
|
||||
|
||||
\mytodos{Bespreibung der untersuchung von Glassfisch? ode lieber später}
|
||||
\mytodos{Bespreibung der untersuchung von Glassfisch? oder lieber später}
|
||||
|
||||
\section{Das Vorgehen der Optimierung}
|
||||
\label{sec:concept:optimizing}
|
||||
|
||||
\mytodos{Bespreibung der untersuchung von Glassfisch? ode lieber später}
|
||||
\mytodos{Beschreibung der Untersuchung von Glassfisch? oder lieber später, oder doch eher umbennen in Ermittlung der Performance-Probleme}
|
||||
|
||||
% Anhand der Umfragen werden die verschiedenen Seiten ermittelt und mit den Tools überprüft
|
||||
% Während dessen kann über ein Script die Seite automatisiert abgefragt und das Trace aktiv sind
|
||||
|
@ -76,3 +72,91 @@ zwischengespeichert werden kann und daher diese Daten immer wieder direkt von de
|
|||
\label{sec:concept:technologiecompare}
|
||||
|
||||
% Vergleich mit AspNetCore und vielleicht VueJS oder Konsorten, wobei hier der Serverteil fehlt
|
||||
|
||||
Damit eine Umsetzung mit einer anderen Technologie umgesetzt werden kann, muss dies den kompletten Aufbau unterstützen,
|
||||
wie dies die \ac{JSP} unterstützen. Daher fallen reine FrontEnd"=Bibliotheken wie VueJS oder React aus der Betrachtung
|
||||
heraus.
|
||||
|
||||
\subsection{ASP.NET Core}
|
||||
\label{sec:concept:technologiecompare:aspnetcore}
|
||||
|
||||
\mytodos{Anpassen auf "Kernpunkte"?}
|
||||
|
||||
\noindent
|
||||
Vorteile:
|
||||
|
||||
\begin{itemize}
|
||||
\item Gute Entwicklungsumgebung
|
||||
\item EntityFramework als \ac{ORM}
|
||||
\item Große Auswahl an Erweiterungen durch NuGet-Pakete
|
||||
\item Betriebssystem unabhängig
|
||||
\end{itemize}
|
||||
|
||||
\noindent
|
||||
Nachteile:
|
||||
|
||||
\begin{itemize}
|
||||
\item
|
||||
\end{itemize}
|
||||
|
||||
Beim Vergleich zu \ac{JSP} steht ASP.NET Core nicht hinten an. Im großen und ganzen ist der Funktionsumfang der gleiche
|
||||
und mit EntityFramework gibt es ebenfalls einen sehr mächtigen \ac{ORM}. Hier sehe ich nur ebenfalls ein ähnliches
|
||||
Problem beim Caching wie bei OpenJPA, dass diese zu Problemen führen kann, wenn der Speicher voll wird.
|
||||
% Ersatz für EF?
|
||||
|
||||
C\# wird ebenfalls wie Java in einen Zwischencode übersetzt und erst bei der Ausführung auf die Zielplattform übersetzt.
|
||||
Hierbei haben die meistens Test gezeigt, dass das .NET Framework hier um einiges Effizienter und schneller arbeitet als
|
||||
die Java Runtime. Zusätzlich wird bei ASP.NET Core nicht noch ein zusätzlicher Server benötigt um die Anwendung aktiv
|
||||
zu halten.
|
||||
|
||||
\subsection{Golang}
|
||||
\label{sec:concept:technologiecompare:go}
|
||||
|
||||
\noindent
|
||||
Vorteile:
|
||||
|
||||
\begin{itemize}
|
||||
\item schnelle und einfache Entwicklung
|
||||
\item Native Übersetzung der Anwendung (hohe Performance)
|
||||
\item Betriebssystem unabhängig
|
||||
\item Gut geeignet für Microservices
|
||||
\end{itemize}
|
||||
|
||||
\noindent
|
||||
Nachteile:
|
||||
|
||||
\begin{itemize}
|
||||
\item Neue Programmiersprache, noch wenige Programmierer
|
||||
\end{itemize}
|
||||
|
||||
Schnelle und einfache Entwicklung durch das grundsätzliche Konzept der neuen Sprache
|
||||
Ist wiederrum aber der nachteil dass es noch nicht viele können.
|
||||
Ist aber wiederrum sehr schnell und effizient und für Microservices gedacht.
|
||||
Reiner \ac{ORM} vorhanden, ohne weitere Caching und halten von Daten.
|
||||
|
||||
\subsection{PHP}
|
||||
\label{sec:concept:technologiecmopare:php}
|
||||
|
||||
\noindent
|
||||
Vorteile:
|
||||
|
||||
\begin{itemize}
|
||||
\item Text-Editor reicht
|
||||
\end{itemize}
|
||||
|
||||
\noindent
|
||||
Nachteile:
|
||||
|
||||
\begin{itemize}
|
||||
\item Script-Sprache
|
||||
\end{itemize}
|
||||
|
||||
\subsection{Fazit}
|
||||
\label{sec:concept:technologiecompare:summary}
|
||||
|
||||
\mytodos{Noch entscheiden, ob der Compare direkt bei der Technologie gemacht \\ wird, oder allgemein am ende}
|
||||
|
||||
PHP fällt aufgrund der Script-Sprache raus, da dies nicht verteilbar ist und an den Uni keine Entwickler zu finden sind.
|
||||
Bei Go sind es ebenfalls hauptsächlich die nicht vorhandenen Entwickler an der Uni
|
||||
ASP.NET Core ist im Vergleich zu JSP identisch, aber auch hier werden aktuell die Entwickler fehlen, da Java in den
|
||||
Vorlesungen dran genommen wird.
|
Loading…
Add table
Add a link
Reference in a new issue