ForEach(IEnumerable source, Action body); Parallel.For(int frominclusive, int toexclusive, Action body)

Größe: px
Ab Seite anzeigen:

Download "ForEach(IEnumerable source, Action body); Parallel.For(int frominclusive, int toexclusive, Action body)"

Transkript

1 Parallele Programmierung und Datenfluss mit.net Gleichzeitig zum Erfolg Zur Implementierung von asynchroner und paralleler Verarbeitung bietet.net unterschiedlichste Modelle an. Wer sie kennt, kann seine Anwendungen produktiver gestalten und für andere verständlicher machen. Auf einen Blick Dipl.-Inf. (FH) Peter Meinl (www.petermeinl.de) ist IT- Berater, Trainer und passionierter Querdenker. Er entwirft und realisiert seit über 25 Jahren datenbankorientierte und verteilte Anwendungen. Sein fachlicher Schwerpunkt ist der Entwurf kundenspezifischer Lösungen für die Fertigungsindustrie. Er programmiert regelmäßig, weil Berater und Architekten Code schreiben müssen, um zu verstehen, worüber sie reden und was sie Programmierern zumuten. Inhalt Parallele Programmierung mit Task, Parallel.For*() und Datenfluss. Ein Web Crawler als Beispiel für die Anwendung von Datenfluss. Datenstrukturen für parallele Programmierung. Verwandte Frameworks. dnpcode A1306AsyncParallel A synchronität und Parallelität sind im.net-mainstream angekommen und jeder Berater, Architekt und Programmierer sollte ein Grundverständnis davon haben. Bisher ging es in dieser Serie um Grundlagen und die unterschiedlichen asynchronen Programmiermodelle [1]. Nun folgt ein Überblick zur parallelen Programmierung inklusive Datenfluss mit.net und zu weiteren interessanten Frameworks in diesem Zusammenhang. Ein Praxisbeispiel mit einem Dateiprozessor, der Dateien mit Tasks, Datenfluss [2], Parallel. For() und dem Managed Extensibility Framework verarbeitet, war in Ausgabe 4/2013 der dotnetpro zu finden [3]. Spezielle Komplikationen bei der Fehlerbehandlung unter paralleler Programmierung behandelte ein anderer Beitrag in der dotnetpro [4]. Zur parallelen Programmierung bietet das.net Framework: Parallelität über Daten Parallelität von Aufgaben asynchrone Datenflüsse paralleles LINQ (PLINQ) Datenstrukturen für parallele Programmierung Parallelität über Daten Mit parallelen Schleifen ist es möglich, dieselben Operationen parallel jeweils auf die Datenelemente einer Liste anzuwenden. Sie realisieren das Entwurfsmuster Fork/Join. In ihrer einfachsten Form sehen die Schleifen Parallel.ForEach() und.for() wie folgt aus: ForEach<TSource>(IEnumerable<TSource> source, Action<TSource> body); Parallel.For(int frominclusive, int toexclusive, Action<int> body) Die Parallel.For*()-Methoden verwenden eine dynamische Anzahl von Tasks. Sie beginnen mit einer Task und erzeugen ein Replikat von sich, sobald diese Task ausgeführt wird. Wenn das Replikat ausgeführt wird, erzeugt es wieder ein Replikat von sich und immer so weiter. Damit verwendet Parallel so viele Tasks wie der zugrunde liegende Scheduler bereitstellt. Parallel.For*() bietet folgende Features, also Merkmale: Abbruch bei Ausnahmen und Auslösen einer AggregateException manueller Abbruch via ParallelLoopState. Break() und.stop() kooperativer Abbruch ParallelLoopState MaxDegreeOfParallelism adaptive Partitionierung und Lastverteilung eigene Partitionierung eigene Scheduler Parallele Schleifen müssen unbedingt so codiert werden, dass ihre Durchläufe unabhängig voneinander sind. Im folgenden Beispiel wird der Zähler primecount mittels Interlocked. Partitionierung der Daten Mit Partitionierung bezeichnet man im Rahmen der Datenparallelität das Aufteilen einer Liste von Datenelementen zur parallelen Verarbeitung durch mehrere Rechnerkerne. Ohne Partitionierung würden alle Elemente seriell auf einem Kern verarbeitet. Bei der Bereichspartitionierung wird die Liste einmalig in feste gleich große Abschnitte aufgeteilt. Bei der Blockpartitionierung wird jeweils eine Anzahl von Datenelementen als Partition geliefert. Dabei wird deren Zahl (chunk size) zunehmend größer (1, 2, 4, 8 ). Die Bereichspartitionierung hat den geringeren Overhead beim Partitionieren, weil sich die verarbeitenden Threads dazu nicht abstimmen müssen. Sie bietet aber keine Lastverteilung für den Fall, dass die einzelnen Verarbeitungen verschieden aufwendig sind. Die Blockpartitionierung bietet zwar Lastverteilung, aber der Overhead für das Partitionieren ist hierbei höher, weil sich die Threads für die jeweils nächste Partition abstimmen müssen. Die Möglichkeiten der Partitionierung hängen vom Typ der Datenliste ab. Bei IList und Array ist im Unterschied zu IEnumerable die Anzahl der Elemente bekannt und sie lassen sich indizieren. Falls die Reihenfolge der Daten eine Rolle spielt, können Order able Partitioner verwendet werden. Wenn zum Beispiel PLINQ oder Parallel.ForEach() ein IEnumerable zum Parallelisieren übergeben wird, dann verwenden diese normalerweise einen Blockpartitionierer, der jedes Mal, wenn ein Thread neue Daten braucht, ein oder mehrere Datenelemente zurückgibt. Dieses Verhalten können Sie überschreiben, indem Sie zum Beispiel Parallel.ForEach() einen statischen Bereichspartitionierer übergeben oder für PLINQ einen Load- Balancing-Partitionierer konfigurieren [20, 21]

2 Increment() über Parallel.ForEach() synchronisiert: Dim primecount As Integer Parallel.ForEach( Enumerable.Range(0, ).ToArray(), Sub(n) If IsPrime(n) Then Interlocked.Increment(primeCount) End Sub) Mithilfe von Überladungen mit Loop State sowie der Actions localinit und localfinally lässt sich das Leistungsverhalten solcher Konstrukte optimieren, aber mit deutlich höherer Komplexität. Häufig ist es in solchen Fällen einfacher, PLINQ zu verwenden: Dim primecount = ParallelEnumerable. Range(0, ). Sum(Function(i) IIf(IsPrime(i), 1, 0)) Die ParallelOptions-Eigenschaft Max DegreeOfParallelism kann begrenzen, wie viele ThreadPool-Threads der Scheduler maximal injizieren darf. Dieses Merkmal ist für Ausnahmefälle gedacht, zum Beispiel wenn die Scheduler-Heuristik beim Ermitteln der angemessenen Anzahl Threads versagt oder wenn mehrere Algorithmen gleichzeitig parallelisiert werden sollen. Der Threadpool-Scheduler kann zum Beispiel nicht unterscheiden zwischen Threads, die lange Schleifendurchläufe berechnen, und solchen Threads, die durch synchrone Ein- und Ausgabeoperationen blockiert sind. Aus diesem Grund erzeugt er bei langen Schleifendurchläufen zu viele Threads, um einen vermeintlichen Mangel an Threads zu vermeiden. In solchen Fällen können Sie die Schleifendurchläufe verkürzen oder MaxDegreeOf Parallelism einsetzen. Die häufig zitierte Annahme, ein Thread pro Kern sei optimal, passt für viele Szenarien nicht; zum Beispiel würden damit Kerne leer laufen, während Threads auf Datei-I/O, Netzwerk-I/O, Speicherzuteilungen oder Locks warten. Beim Begrenzen der Thread-Anzahl sollte die Skalierbarkeit nicht aus dem Blickfeld geraten und wenigstens mit Environment.ProcessorCount die Anzahl der Kerne (nicht der CPUs!) auf dem aktuellen Rechner als Basis dienen. Ein unbedachtes Begrenzen der Anzahl von Threads kann zusammen mit synchronen Ein-/Ausgabeoperationen oder Locks leicht zu Thread-Mangel führen. Die Partitionierung der Daten ist wesentlich für die Performanz von parallelen Schleifen, siehe Kasten Partitionierung der Daten. Im folgenden Beispiel ist die Verarbeitung in der Schleife sehr kurz und deshalb wird ein Bereichspartitionierer verwendet, der Abschnitte von jeweils Werten bildet. Damit führt die optimierte Schleife nur noch 20 parallele Iterationen aus: Dim mydata As Double() = New Double( ) {} Parallel.ForEach(data, Sub(item, state, i) result(i) = item * item End Sub) Parallel.ForEach(Partitioner.Create(0, , 50000), Sub(range) For i As Double = range.item1 To range.item2-1 mydata(i) = i * i Next End Sub) Parallelität von Aufgaben Mit Parallel.Invoke() ist es möglich, eine willkürliche Anzahl unterschiedlicher Aufgaben parallel auszuführen, indem ein Array von Actions übergeben wird. Am einfachsten geht das mittels Lambda- Ausdrücken: Parallel.Invoke(Sub() GetProductInfoFromDB, Sub() ComputeDiscount) Parallel.Invoke() realisiert genauso wie Parallel.For*() das Entwurfsmuster Fork/ Join, wartet also auf das Ende der Verarbeitungen. Für mehr Kontrolle über das Scheduling lassen sich Tasks explizit starten: Dim t1 = Task.Factory.StartNew() (Sub()ComputeDiscount, TaskScheduler. FromCurrentSynchronizationContext) Dim t2 =... Task.WaitAll(t1, t2) Parallel LINQ Parallel LINQ, kurz PLINQ, bietet Parallelität über Daten im deklarativen LINQ- Stil. AsParallel() leitet die parallele Verarbeitung in LINQ ein: Dim myobjects As Double() = New Double( ) {} Dim q = myobjects.asparallel. Where(Function(d) ExpensiveFilter(d)) Mit.ForAll() lassen sich PLINQ-Ergebnisse parallel verarbeiten. Damit sind Verarbeitungen wie in einer Parallel.For*()- Schleife realisierbar, aber mit der Eleganz von LINQ und mit dessen Merkmalen wie Filterung. PLINQ verwendet immer eine fixe Anzahl von Tasks, der voreingestellte Wert ist Environment.ProcessorCount. Die Methode WithDegreeOfParallelism() kann dafür einen anderen Wert setzen. From site In New String() { "www.petermeinl.de", "..."}. AsParallel.WithDegreeOfParallelism(4) Let p = New Ping().Send(site) Select p.roundtriptime Mit einem expliziten Partitioner lässt sich Lastenverteilung (siehe Kasten) erzwingen: Dim files = Directory.GetFiles("c:\") Dim partitioner = Concurrent.Partitioner. Create(files, True) Dim ufiles = partitioner.asparallel. Select(Function(f) ParseFile(f)) Mit ParallelExecutionMode.ForceParallelism lässt sich PLINQ zum Parallelisieren zwingen und für Unterabfragen mit AsSequential() zur seriellen Verarbeitung bewegen. Viele Probleme lassen sich sowohl mit Parallel.For*() als auch mit PLINQ lösen. Pamela Vagata beschreibt in dem Artikel When Should I Use Parallel.ForEach? When Should I Use PLINQ? einige Vor- und Nachteile beider Lösungen [5]. Die Website zum Buch C# in a Nutshell [6] zeigt viele kleine Codebeispiele mit Parallel und PLINQ, die als Anregungen für mögliche Lösungen hilfreich sind. Speicherbereinigung Beim Parallelisieren sollte auch die Speicherbereinigung nicht zum Engpass werden. Vermeiden Sie, viele kleine Objekte zu allokieren, und prüfen Sie String-Verkettungen, Boxing und andere Speicherallokationen kritisch. Die.NET- Speicherbereinigung läuft normalerweise im Hintergrund in einem Einzel-Thread, sie skaliert also nicht über mehrere Kerne. Deshalb ist für parallelisierte Anwendungen die Speicherbereinigung für Server erwägenswert; diese nutzt einen Thread pro logischen Prozessor. Die Speicherbereinigung für Server lässt sich im Konfigurationsschema mit der Einstellung <gcserver enabled="true"> erzwingen. Asynchrone Datenflüsse (Data flow) TPL Dataflow (TDF) [7] ist für asynchrone Producer-Consumer-Szenarien mit Nachrichtenübergabe innerhalb eines Prozesses gedacht. Für prozessübergreifenden

3 Parallele Programmierung und Datenfluss mit.net Listing 1 Ein mit Task Dataflow realisierter Dateiprozessor. Sub Main() 'Reading files sequentially and asynchronously Dim reader As New TransformBlock(Of String, String)( Async Function(path) Using sr As New StreamReader(path) Dim filestring = Await sr.readtoendasync().configureawait(false) Return filestring End Using End Function) 'Processing file content concurrently Dim totalwordcount As Integer Dim processor As New ActionBlock(Of String)( Sub(content) Dim allwordsregex As New Regex("\S+") Dim wordcount = allwordsregex.matches(content).count Debug.Print("Processing result={0}", wordcount) Interlocked.Add(totalWordCount, wordcount) End Sub, New ExecutionDataflowBlockOptions With {.MaxDegreeOfParallelism = Environment.ProcessorCount}) processor.completion.continuewith( Sub() Console.WriteLine("totalWordCount={0}", totalwordcount) End Sub) reader.linkto(processor, New DataflowLinkOptions With {.PropagateCompletion = True}) For Each path In Directory.EnumerateFiles("x:\temp1\testfiles\in", "*.txt") reader.post(path) Next reader.complete() PromptUser("Working... Press <Enter> to exit:", ConsoleColor.White) End Sub [Abb. 1] Architektur eines mit Datenfluss realisierten Web Crawlers. Nachrichtenaustausch gibt es andere Lösungen, dazu mehr weiter unten im Abschnitt Verwandte Frameworks. Das Datenfluss-Programmiermodell ist am schnellsten anhand eines kleinen Beispiels zu verstehen. Listing 1 zeigt einen mit Datenfluss realisierten Dateiprozessor. Der TransformBlock reader liest Dateien sequentiell und asynchron. Der ActionBlock processor verarbeitet diese parallel, indem er mittels RegEx die Anzahl Worte in der Datei ermittelt. Dabei wird die Parallelität auf die Anzahl der Kerne des Rechners begrenzt. processor ist mit reader verlinkt. Die Verarbeitung wird mittels reader.post() ausgelöst. Mit reader.complete() wird reader mitgeteilt, dass es für den TransformBlock nichts mehr zu verarbeiten gibt. Mit Setzen der Eigenschaft PropagateCompletion auf True reagiert auch processor auf das Ende der Verarbeitung. Das Ergebnis der Verarbeitung wird in einer Fortsetzungs-Task von processor ausgegeben. Um die Dateien in einem Verzeichnis zu ermitteln, wird übrigens die neue Methode Directory.Enumerate Files() verwendet, die im Unterschied zu Directory.GetFiles() mittels eines IEnumerable sofort damit beginnt, Dateinamen zu liefern und nicht erst, nachdem sie alle ermittelt hat. Task.Run() setzt bereits ein einfaches Producer-Consumer-Muster um, denn Tasks werden ja asynchron auf dem Thread pool in eine Queue gestellt und konsumiert. Mit den Auflistungen aus dem Namensraum System.Collections. Concurrent lassen sich komplexere Producer-Consumer-Lösungen realisieren; dabei sind die Consumer aber synchron, weil sie beim Warten auf Nachrichten blockiert sind. Zum Thema eigene Producer-Consumer-Queues hat in der dotnetpro Michael Scheffler einen Artikel ver öffentlicht [8]. Der Datenfluss der Task Parallel Library führt Aktor-basierte Programmierung ein, bei der unabhängige Einheiten, sogenannte Aktoren oder Agenten, mittels Nachrichten synchron oder asynchron miteinander kommunizieren und diese asynchron verarbeiten. Die interne Verarbeitung in den Aktoren selbst kann dabei seriell oder parallel erfolgen. Es ist oft leichter, solche auf einzelnen Aktoren basierende Lösungen zu entwerfen und zu verstehen, als das ganze Problem auf einmal betrachten oder parallelisieren zu müssen. Auch skalieren sie meist besser und liefern höheren Durchsatz. Das folgende Beispiel zeigt einen Aktor vom Typ ActionBlock. Bei seiner Definition wird der Typ der Nachrichten in seiner Eingangs-Queue als Integer festgelegt und für die Verarbeitung wird die Funktion

4 DoProcessMessage() definiert. Die Methode Post() übergibt die Nachrichten an ihn. Mit SendAsync() lassen sich Nachrichten asynchron verschicken. Dim ab = New ActionBlock(Of Integer) _ (Function(i) DoProcessMessage(i)) ab.post(data1) ab.post(data2) ab.post(data3) Der Datenfluss der TPL bietet viele vordefinierte Datenflussblöcke. Ihre Namen geben zu erkennen, welche Merkmale sie bieten, Näheres siehe [7] und [2]. Buffering-Blöcke: BufferBlock BroadcastBlock WriteOnceBlock Ausführungsblöcke: ActionBlock TransformBlock TransformManyBlock Gruppierungsblöcke: BatchBlock JoinBlock BatchedJoinBlock Zur Verknüpfung der Blöcke gibt es die Methode LinkTo(), die auch programmierbare Filter unterstützt. Die Queues der Blöcke werden in FIFO-Reihenfolge abgearbeitet. Voreingestellt ist MaxDegreeOfParallelism mit dem Wert 1, Nachrichten werden also seriell abgearbeitet. Der maximale Grad der Parallelität lässt sich explizit festlegen; mit Dataflow BlockOptions.Unbounded kann er dem Task Scheduler überlassen werden. Weil es recht wenige konkrete Beispiele zum Datenfluss gibt, zeigen Abbildung 1 und Listing 2 einen Web Crawler. Er demonstriert insbesondere das Zusammenspiel der Blöcke. Der TransformBlock downloader liest den Inhalt einer Webseite asynchron und liefert je Seite einen String. Dabei verwendet er maximal vier Threads, lädt also maximal vier Seiten gleichzeitig aus dem Netz. Die TransformManyBlock-Objekte linkparser und imageparser lesen den Inhalt einer Seite mittels Html Agility Pack [9] und liefern je Seite mehrere URLs zu weiteren Seiten oder Bildern. Die beiden Parser sind über den BroadastBlock contentbrodcaster mit downloader verlinkt. Wären die beiden Consumer direkt mit downloader verlinkt, käme es zum Verhungern eines Listing 2 Mit Task Dataflow realisierter Web Crawler. Sub Main() 'Define Blocks Dim downloader As New TransformBlock(Of String, String)(Async Function(url) WriteLineInColor(url, ConsoleColor.White) Return Await New HttpClient().GetStringAsync(url).ConfigureAwait(False) End Function, New ExecutionDataflowBlockOptions With {.MaxDegreeOfParallelism = 4}) Dim contentbroadcaster As New BroadcastBlock(Of String)(Function(html) html) Dim linkparser As New TransformManyBlock(Of String, String)( Function(html) Dim doc As New HtmlDocument() doc.loadhtml(html) Return From n In doc.documentnode.descendants("a") Where n.attributes.contains("href") Let url = n.getattributevalue("href", "") Where url.startswith("http://") Select url End Function) Dim imageparser As New TransformManyBlock(Of String, String)( Function(html) Dim doc As New HtmlDocument() doc.loadhtml(html) Return From n In doc.documentnode.descendants("img") Where n.attributes.contains("src") Let url = n.getattributevalue("src", "") Where url.startswith("http://") Select url End Function) Dim linkbroadcaster As New BroadcastBlock(Of String)(Nothing) Dim imageprocessor As New ActionBlock(Of String)( Async Function(url) Dim uri As New Uri(url) Dim fileurl = If(String.IsNullOrWhiteSpace(uri.Query), uri.absoluteuri, uri. AbsoluteUri.Replace(uri.Query, "")) WriteLineInColor(fileUrl, ConsoleColor.Yellow) Dim webstream = Await (New HttpClient().GetStreamAsync(url)).ConfigureAwait(False) Dim filepath = New DirectoryInfo(Path.Combine(My.Application.Info.DirectoryPath, "..\..\..\Images", IO.Path.GetFileName(fileUrl)) ).FullName Using filestream = IO.File.OpenWrite(filePath) Await webstream.copytoasync(filestream).configureawait(false) End Using End Function) 'Handle unexpected errors downloader.completion.continuewith(sub(ant) WriteLineInColor(ant.Exception. GetBaseException.ToString, ConsoleColor.Red),, TaskContinuationOptions.OnlyOnFaulted))... imageprocessor.completion.continuewith(sub(ant) WriteLineInColor(ant.Exception. GetBaseException.ToString, ConsoleColor.Red),,TaskContinuationOptions.OnlyOnFaulted)) 'Link Blocks downloader.linkto(contentbroadcaster) contentbroadcaster.linkto(linkparser) contentbroadcaster.linkto(imageparser) linkparser.linkto(linkbroadcaster) linkbroadcaster.linkto(downloader) '.jpg just to demonstrate a link filter linkbroadcaster.linkto(imageprocessor, Function(url) url.endswith(".jpg")) imageparser.linkto(imageprocessor) 'Let's start downloader.post("http://www.bbc.co.uk/news/") PromptUser("Crawling... Press <Enter> to abort:", ConsoleColor.White)

5 Parallele Programmierung und Datenfluss mit.net der beiden, weil die meisten TDF-Blöcke im Unterschied zu den Reactive Extensions [10] Nachrichten nur an das erste verlinkte Ziel weitergeben, das diese akzeptiert. Ein BroadastBlock hat die Aufgabe, Nachrichten an viele Ziele gleichzeitig zu verteilen. Dabei werden diese im Allgemeinen geklont, um zu verhindern, dass alle Consumer mit derselben Nachrichteninstanz arbeiten. Somit ist Thread- Sicherheit ohne Aufwand für die Synchronisation gewährleistet. contentbroadcaster im Beispiel leitet die Nachricht einfach weiter, ohne sie zu klonen, weil sie vom Typ String ist und damit unveränderlich. Der ActionBlock imageprocessor kopiert Bilder aus dem Web auf den lokalen PC. Dabei nutzt er mit Stream.CopyToAsync() eine der neuen asynchronen I/O-Methoden, die nach dem Task-basierten asynchronen Entwurfsmuster [1] realisiert sind. Das Abbrechen des Crawlers ist mittels eines CancellationToken realisiert, das an alle Blöcke übergeben wird. Nun soll es dem Leser überlassen bleiben, darüber zu grübeln, warum es auch noch einen BroadcastBlock linkbroadcaster gibt und wie sich der Web Crawler, nachdem er alle Seiten durchforstet hat, mittels IDataflowBlock.Complete() und DataflowLinkOptions.Propagate Completion selbst beenden könnte. Der dotnetpro- Beitrag Unter Beobachtung erklärt und liefert einen kompletten Dateiprozessor als Windows-Dienst, der unter anderem BufferBlocks verwendet [3]. TPL Dataflow wird nicht automatisch mit dem.net Framework 4.5 installiert, sondern muss in Visual Studio mit NuGet nachinstalliert werden. Wie beim Managed Extensibility Framework (MEF) verspricht Microsoft, durch die Abkoppelung vom Versionszyklus von Visual Studio und.net, schneller neue Funktionen bereitstellen zu können. Datenstrukturen für parallele Verarbeitung Seit.NET 4 gibt es einige Klassen, die bei der parallelen Programmierung hilfreich sind. Sie befinden sich im Namensraum System.Collection.Concurrent und bieten Thread-sichere Operationen, um Elemente hinzuzufügen und zu entfernen; dabei vermeiden sie Locks wo irgend möglich oder nutzen feingranulare Locks. Neben garantierter Robustheit ermöglichen sie eine deutlich bessere Performanz als eigene Locks um Standardauflistungen wie List. Diese Klassen sind: [Abb. 2] Windows Task-Manager und Ressourcenmonitor. BlockingCollection ConcurrentBag ConcurrentDictionary ConcurrentQueue ConcurrentStack Die mit.net 4.x neu eingeführten Synchronisierungs-Primitiven [11] helfen bei der Koordination feingranularer paralleler Verarbeitung und verbessern deren Performanz gegenüber den älteren Vertretern wie ManualResetEvent. Barrier CountdownEvent ManualResetEventSlim SemaphoreSlim SpinLock SpinWait Mit sogenannter Lazy-Initialisierung wird der Speicher für ein Objekt erst dann bereitgestellt, wenn er benötigt wird. Mit den auf diese Weise initialisierenden Klassen lassen sich Startzeiten verkürzen und die Performanz verbessern, weil die Allokierung über die Zeit verteilt wird. Diese Klassen sind: Lazy (Of T) ThreadLocal (Of T) LazyInitializer Diagnosewerkzeuge Mit der Registerkarte Leistung des Windows Task-Managers und dem von dort aus erreichbaren Ressourcenmonitor können Sie den Ressourcenverbrauch von Prozessen beobachten, wie in Abbildung 2 zu sehen ist. Zusätzlich lässt sich die Spalte Threads einblenden. Mit Windows 8 zeigt sich der Task-Manager deutlich übersichtlicher gestaltet. Auch der bewährte Process Explorer von Mark Russinovich ist hilfreich. Visual Studio 2012 bietet einige Merkmale, die bei der Analyse paralleler Lösungen hilfreich sind: das Fenster Parallel Stacks das Fenster Parallel Tasks den Concurrency Visualizer Die Windows-Parallel-Stacks und -Tasks lassen sich in Visual Studio über Debug Windows anzeigen, siehe Abbildung 3. Den Concurrency Visualizer starten Sie in der IDE über Analyze Concurrency (Abbildung 4). Mit der Klasse StopWatch sind Zeitmessungen möglich. Beim Debuggen paralleler Programme kann das Werkzeug CHESS von Microsoft Research helfen. CHESS dient zum Auffinden und Reproduzieren sogenannter Heisen-Bugs [4]. Wann und wie parallelisieren? Die Erfahrung zeigt, dass Annahmen zur Performanz häufig falsch sind. Die Parallelisierung seriellen Codes sollten Sie nur angehen, wenn wesentliche parallelisierbare Engpässe identifiziert sind. Alle Entwurfs- und Implementierungsalterna

6 tiven sollten durch frühzeitige und begleitende Tests und Messungen immer wieder abgesichert werden. Bei allem Hype um parallele Programmierung sollten die Einfachheit und andere Vorteile serieller Verarbeitung nicht aus dem Blick geraten. Manche Probleme [Abb. 3] Die Visual-Studio-Fenster Parallel Task und Stack. [Abb. 4] Der Concurrency Visualizer der IDE. lassen sind nur seriell lösen oder es gibt einfach keine sinnvoll parallelisierbaren Teile. Manche parallelen Lösungen erfordern mehr Koordinationsaufwand zwischen den parallelen Teilen, als durch ihre Parallelisierung zu gewinnen ist. Fehler in parallelem Code sind häufig obskur und lassen sich schwer finden und beheben. Ist die Entscheidung für die Parallelisierung gefallen, empfiehlt es sich, immer den einfachsten Ansatz zu wählen. Dazu wählen Sie den höchsten verfügbaren Abstraktionsgrad, also zum Beispiel Datenflussblöcke statt eigener, auf den Klassen aus Systems.Collections.Concurrent basierender Konstrukte. Threads und Locks sind dabei die letzte Wahl. Oft hilft es, die generelle Architektur einer Anwendung zu überdenken, statt gleich Engpässe in der Performanz zu optimieren. Konkurrierender Zugriff auf Daten aus parallelen Tasks sollte immer minimiert werden. Der größte Gewinn ergibt sich im Allgemeinen durch Parallelisierung auf der obersten Ebene von Algorithmen. Um ein Gefühl für Zeitspannen zu bekommen, in denen sich eigener Code bewegt, stellt Abbildung 5 typische Zeitspannen in einer Übersicht einander gegenüber. Die Angaben beruhen auf naiven Messungen ohne Berücksichtigung von Datenvolumina, gleichzeitiger Last oder Netzwerkbandbreite et cetera (siehe Code zum Artikel). In realen Anwendungen gehen Unterschiede in der Performanz zwischen verschiedenen Ansätzen oft im Aufwand für die eigentliche Verarbeitung unter. Vergleiche hierzu sollten immer unter möglichst realen Bedingungen erfolgen, zum Beispiel mit der entsprechenden Anzahl von Clients, Transaktionsvolumina, Anzahl der Datensätze pro Tabelle, Latenzzeit des Netzwerks, virtuelle oder physische Rechner, Zahl und Leistung der Kerne, Ausstattung mit RAM und so weiter. Zum Experimentieren mit I/O-lastiger und CPU-lastiger Verarbeitung lassen sich I/O-Lasten mit Task.Delay() und CPU- Lasten mit Thread.SpinWait() simulieren. Bibliotheken mit paralleler Verarbeitung sollten auch serielle Versionen ihrer Methoden bereitstellen oder einen optionalen Parameter degreeofparallelism bieten. Intern sollten sie bei degreeofparallelism=1 serielle Verarbeitung verwenden, um den generellen Overhead von Parallel. For*() oder PLINQ zu vermeiden. Verwandte Frameworks Neben den Standardmerkmalen des.net Frameworks gibt es weitere interessante Frameworks und Bibliotheken, die sich Parallelität und Asynchronität widmen: PollTimer ereignisorientierte Ansätze Concurrency and Coordination Runtime (CCR)

7 Parallele Programmierung und Datenfluss mit.net [Abb. 5] Typische Zeitspannen üblicher Operationen. Auch Message Queuing und SQL-Datenbanken bieten ereignisorientierte Verarbeitung. Das Microsoft Message Queuing (MSMQ) oder Oracle Advanced Queuing ermöglichen es, auf Messages zu lauschen. Mit SqlDependency im ADO.NET-Provider für den MS SQL Server oder OracleDependency des entsprechenden Oracle-Providers ist es möglich, auf Änderungen von Daten in der Datenbank zu lauschen. Der Windows Azure AppFabric Service Bus bietet unter anderem eine Verteilung von Ereignissen in der Cloud. SignalR ist ein interessantes ereignisorientiertes asynchrones Signalisierungs- Framework, entwickelt für Webanwendungen wie Aktienticker. Es ermöglicht permanente Verbindungen zwischen Client und Server in ASP.NET, kann aber auch für Rich-Client-Anwendungen genutzt werden. Das Tool bietet Client-Bibliotheken für JavaScript,.NET und auch speziell für Windows Phone. Es lässt sich anstelle von Long-Polling, also dem hängenden Anpollen von Diensten, verwenden. Mit SignalR lassen sich außerdem Methoden im Client mit Ereignissen in SignalR-Webdiensten verbinden, sodass ein Dienst diese auslösen kann. Um das Prinzip zu verstehen, ist das Video zu SignalR auf Channel 9 sehr hilfreichen [13]. Seit 2006 gibt es mit dem Microsoft Robotics Developer Studio die Concurrency and Coordination Runtime (CCR) Library [14]. CCR kann auch außerhalb der Programmierung von Robotern in normalen.net-anwendungen verwendet werden. Vieles aus der CCR findet sich auch im Task-Datenfluss, siehe oben. Microsoft StreamInsight (früher SQL Server Notification Services) ist eine SQL- Server-Komponente, die Datenströme fast in Echtzeit analysieren kann [15]. Mit StreamInsight lassen sich Datenströme überwachen, analysieren und Aktionen auf ihnen auslösen. Es verkraftet Tausende Ereignisse pro Sekunde bei Antwortzeiten von unter einer Sekunde. Es gibt einige.net-bibliotheken für die parallele Programmierung mit der immensen Rechenleistung von Mehrkern- Prozessoren auf Grafikkarten (GPU), sogenanntes General-Purpose Computing on Graphics Processing Units (GPGPU), zum Beispiel: Microsoft Accelerator [16] Brahma [17] CUDA.NET [18] SQL Server StreamInsight Bibliotheken zum Rechnen auf Grafikkarten (GPGPU) C++ Concurrency Runtime Windows Workflow Foundation (WF) Der erste Artikel zum Thema [4] hat unter den asynchronen Programmiermodellen auch Timer aufgeführt, denn ihre Callbacks werden ja asynchron in Threadpool-Threads ausgeführt. Eine spezielle Form von Timern sind Poll-Timer. Auf der Homepage LeanWork [12] findet sich ein Poll-Timer, der seinen ersten Tick nicht erst nach dem ersten Verstreichen seines Intervalls auslöst, sondern sofort und dessen Ticks nicht in die laufende Verarbeitung hineinfeuern, falls die Verarbeitung länger dauert als sein Intervall. Eine Alternative zum Pollen mit Timern ist die Verwendung von Ereignissen. Ein Beispiel ist das Lauschen auf neue Dateien in einem Verzeichnis oder einem Verzeichnisbaum mittels FilesystemWatcher- Ereignissen. CUDA.NET ermöglicht die Verwendung des proprietären Frameworks CUDA von Nvidia in.net; Microsoft Accelerator unterstützt mittels DirectX alle modernen GPUs, aber auch mehrkernige CPUs; Brahma ist eine Open-Source-Bibliothek für das parallele Verarbeiten von Streams auf GPUs mittels LINQ. Die C++ Concurrency Runtime bietet für C++ alles, was die Task Parallel Library für das.net Framework bietet: Tasks, Loops und Actors. Mit der Windows Workflow Foundation (WF) lassen sich Arbeitsabläufe beschreiben und ausführen. Mittels Code oder Diagrammen werden die Abläufe definiert und dann von der WF-Laufzeitumgebung ausgeführt. Die Workflow Foundation bietet zudem einen für Endanwender geeigneten grafischen Designer, der sich auch in eigene Anwendungen einbinden lässt. Die Betrachtungen in dieser Artikelserie beschränkten sich auf parallele Verarbeitung mit einem Mehrkernrechner. Der Artikel Horizontal Scalability for Parallel Execution of Tasks [19] beschreibt einen

8 Ansatz, parallele Verarbeitung über mehrere Rechner zu verteilen. Fazit Der erste Teil dieser Artikelserie [1] hat gezeigt, wie einfach feingranulare Asynchronität und Parallelität mit Task und Await zu realisieren sind. Zur Vorsicht sei auf die besonderen Komplikationen bei der Fehlerbehandlung hingewiesen [4]. Mit Parallel.For*() und.invoke() bietet.net mächtige Funktionen zur parallelen Programmierung; PLINQ bringt Eleganz ins Spiel; die Datenflussmerkmale helfen, komplexe asynchrone Datenflüsse übersichtlich und effizient zu gestalten. Mit diesen mächtigen Merkmalen von.net ist es deutlich einfacher geworden, typische Qualitätsanforderungen an Reaktivität, Durchsatz, Leistungsverhalten, Skalierbarkeit, Wartbarkeit, Robustheit und Korrektheit zu erfüllen. Es ist eine Freude, damit zu entwerfen und zu programmieren. Versuchen Sie es doch mal! [jp] [1] Peter Meinl, Thread is Dead! Überblick über asynchrone und parallele Verarbeitung mit.net, dotnetpro 5/2013, Seite 132 ff., [2] MSDN, Datenfluss (Task Parallel Library), [3] Peter Meinl, Unter Beobachtung, Dateien per Multithreading und MEF verarbeiten, dotnetpro 4/2013, Seite 128 ff., [4] Peter Meinl, Lass da mal was sein, Saubere und robuste Fehlerbehandlung in.net-anwendungen, 3/2013, Seite 132 ff., [5] Pamela Vagata, When Should I Use Parallel. ForEach? When Should I Use PLINQ?, [6] Joseph Albahari, Code Listings zu C# in a Nutshell, SL1306AsyncParallel3 [7] Stephen Toub, Introduction to TPL Dataflow, [8] Michael Scheffler, Schneller durch die Warteschlange, Große Datenmengen richtig parallel verarbeiten, dotnetpro 9/2012, Seite 54 ff., [9] Html Agility Pack, [10] Reactive Extensions, [11] MSDN, Übersicht über Synchronisierungsprimitiven, SL1306AsyncParallel6 [12] LeanWork, FileWatcher, FilePoller Components, SL1306AsyncParallel7 [13] Channel 9, SignalR, [14] MSDN, CCR Introduction, [15] SQL Server StreamInsight, [16] Microsoft Accelerator, [17] Brahma, [18] Nvidia CUDA, [19] Jesus Aguilar, Horizontal Scalability for Parallel Execution of Tasks, MSDN Magazine 10/2012, [20] Custom Partitioners for PLINQ and TPL, [21] Adam Freeman, Pro.NET 4 Parallel Programming in C#, ISBN 10: codekicker.de Die deutschsprachige Q&A-Plattform für Software-Entwickler codekicker.de Antworten für Entwickler

Inhaltsverzeichnis. Vorwort... 9

Inhaltsverzeichnis. Vorwort... 9 Inhaltsverzeichnis Vorwort... 9 Einleitung... 11 Für wen ist dieses Buch gedacht... 12 Für wen ist dieses Buch nicht gedacht... 12 Vorkenntnisse... 12 Aufbau dieses Buchs... 13 Der ideale Einstiegspunkt

Mehr

Oracle 10g und SQL Server 2005 ein Vergleich. Thomas Wächtler 39221

Oracle 10g und SQL Server 2005 ein Vergleich. Thomas Wächtler 39221 Oracle 10g und SQL Server 2005 ein Vergleich Thomas Wächtler 39221 Inhalt 1. Einführung 2. Architektur SQL Server 2005 1. SQLOS 2. Relational Engine 3. Protocol Layer 3. Services 1. Replication 2. Reporting

Mehr

Klaus Rohe Developer Platform & Strategy Group Microsoft Deutschland GmbH klrohe@microsoft.com. Programmierung für Multicore CPUs

Klaus Rohe Developer Platform & Strategy Group Microsoft Deutschland GmbH klrohe@microsoft.com. Programmierung für Multicore CPUs Klaus Rohe Developer Platform & Strategy Group Microsoft Deutschland GmbH klrohe@microsoft.com Programmierung für Multicore CPUs Agenda Einleitung Free Lunch is over Multicore- und Multiprozessor-Architekturen

Mehr

ALM mit Visual Studio Online. Philip Gossweiler Noser Engineering AG

ALM mit Visual Studio Online. Philip Gossweiler Noser Engineering AG ALM mit Visual Studio Online Philip Gossweiler Noser Engineering AG Was ist Visual Studio Online? Visual Studio Online hiess bis November 2013 Team Foundation Service Kernstück von Visual Studio Online

Mehr

Persönlichkeiten bei bluehands

Persönlichkeiten bei bluehands Persönlichkeiten bei Technologien bei Skalierbare Anwendungen mit Windows Azure GmbH & co.mmunication KG am@.de; posts..de/am 1 2 3 4 5 6 7 8 9 Immer mehr Mehr Performance Mehr Menge Mehr Verfügbarkeit

Mehr

Rapid I/O Toolkit. http://projects.spamt.net/riot. Alexander Bernauer alex@copton.net 08.12.08

Rapid I/O Toolkit. http://projects.spamt.net/riot. Alexander Bernauer alex@copton.net 08.12.08 Rapid I/O Toolkit http://projects.spamt.net/riot Alexander Bernauer alex@copton.net 08.12.08 Inhalt Motivation Architektur Beispiel I/O Features Ausblick Motivation Problemstellung Vorgaben Datenverarbeitung

Mehr

Leistungs- und Geschwindigkeitssteigerung. Dipl.-Ing. Sebastian F. Kleinau Applikationsingenieur

Leistungs- und Geschwindigkeitssteigerung. Dipl.-Ing. Sebastian F. Kleinau Applikationsingenieur Leistungs- und Geschwindigkeitssteigerung von LabVIEW-Projekten Dipl.-Ing. Sebastian F. Kleinau Applikationsingenieur Agenda 1. Einführung 2. Hilfreiche Werkzeuge zur Codeanalyse 3. Benchmarks für LabVIEW-VIs

Mehr

Grundlagen der Parallelisierung

Grundlagen der Parallelisierung Grundlagen der Parallelisierung Philipp Kegel, Sergei Gorlatch AG Parallele und Verteilte Systeme Institut für Informatik Westfälische Wilhelms-Universität Münster 3. Juli 2009 Inhaltsverzeichnis 1 Einführung

Mehr

Cloud-Task-Parallelisierung in.net: Jenseits der lokalen Prozessor-Power

Cloud-Task-Parallelisierung in.net: Jenseits der lokalen Prozessor-Power Cloud-Task-Parallelisierung in.net: Jenseits der lokalen Prozessor-Power Prof. Dr. Luc Bläser Hochschule für Technik Rapperswil Parallel 2013, Karlsruhe 15. Mai 2013 Stufen der Parallelisierung Multi-core

Mehr

Deutschland 8,50 Österreich 9,80 Schweiz 16,80 sfr. www.dotnet-magazin.de 7.2011. Outlook-Kalender in WPF

Deutschland 8,50 Österreich 9,80 Schweiz 16,80 sfr. www.dotnet-magazin.de 7.2011. Outlook-Kalender in WPF z.net MAGAZIN dot Alle Beispiele und Quellcodes zu den Artikeln dieser Ausgabe Bonus-Video von der BASTA! Spring 2011 Architektur für die Cloud Testversionen TeamPulse Ranorex Automation Framework dotpeek

Mehr

Vorwort... 11 Azure Cloud Computing mit Microsoft... 12 Danksagungen... 13 Kontakt zum Autor... 13

Vorwort... 11 Azure Cloud Computing mit Microsoft... 12 Danksagungen... 13 Kontakt zum Autor... 13 Inhaltsverzeichnis Vorwort... 11 Azure Cloud Computing mit Microsoft... 12 Danksagungen... 13 Kontakt zum Autor... 13 Einleitung... 15 Zielgruppe... 16 Aufbau... 16 Inhalt der einzelnen Kapitel... 17 Systemanforderungen...

Mehr

Inhaltsverzeichnis. Teil 1 Node.js... 1

Inhaltsverzeichnis. Teil 1 Node.js... 1 xiii Teil 1 Node.js... 1 1 Was ist Node.js? 3 1.1 Die Zeitalter des Webs................................... 3 1.1.1 1990 bis 2000: Das Web 1.0....................... 3 1.1.2 2000 bis 2010: Das Web 2.0.......................

Mehr

LabVIEW Power Programming. Amadeo Vergés www.zuehlke.com

LabVIEW Power Programming. Amadeo Vergés www.zuehlke.com LabVIEW Power Programming Aus der Praxis für die Praxis Amadeo Vergés www.zuehlke.com LabVIEW Power Programming Aus der Praxis für die Praxis the same procedure as every year? Running gags in der LabVIEW

Mehr

whitepaper CLOUD-ENTWICKLUNG: BESTE METHODEN UND SUPPORT-ANWENDUNGEN

whitepaper CLOUD-ENTWICKLUNG: BESTE METHODEN UND SUPPORT-ANWENDUNGEN whitepaper CLOUD-ENTWICKLUNG: BESTE METHODEN UND SUPPORT-ANWENDUNGEN CLOUD-ENTWICKLUNG: BESTE METHODEN 1 Cloud-basierte Lösungen sind auf dem IT-Markt immer weiter verbreitet und werden von immer mehr

Mehr

Java Batch Der Standard für's Stapeln

Java Batch Der Standard für's Stapeln Java Batch Der Standard für's Stapeln Berlin Expert Days 18.09.2015 Dirk Weil, GEDOPLAN GmbH Dirk Weil GEDOPLAN GmbH, Bielefeld GEDOPLAN IT Consulting Konzeption und Realisierung von IT-Lösungen GEDOPLAN

Mehr

Webdeployment 2.0 Webanwendungen komfortabel bereitstellen, aus Hoster und Kundensicht.

Webdeployment 2.0 Webanwendungen komfortabel bereitstellen, aus Hoster und Kundensicht. Webdeployment 2.0 Webanwendungen komfortabel bereitstellen, aus Hoster und Kundensicht. Bernhard Frank Web Platform Architect Evangelist bfrank@microsoft.com Was braucht es zu einem Webserver? Webserver

Mehr

TELEMETRIE EINER ANWENDUNG

TELEMETRIE EINER ANWENDUNG TELEMETRIE EINER ANWENDUNG VISUAL STUDIO APPLICATION INSIGHTS BORIS WEHRLE TELEMETRIE 2 TELEMETRIE WELCHE ZIELE WERDEN VERFOLGT? Erkennen von Zusammenhängen Vorausschauendes Erkennen von Problemen um rechtzeitig

Mehr

Whitepaper. Produkt: combit List & Label 16. List & Label Windows Azure. combit GmbH Untere Laube 30 78462 Konstanz

Whitepaper. Produkt: combit List & Label 16. List & Label Windows Azure. combit GmbH Untere Laube 30 78462 Konstanz combit GmbH Untere Laube 30 78462 Konstanz Whitepaper Produkt: combit List & Label 16 List & Label Windows Azure List & Label Windows Azure - 2 - Inhalt Softwarevoraussetzungen 3 Schritt 1: Neues Projekt

Mehr

Anleitung für zwei C++ - Openmp - Beispiele auf der NWZSuperdome

Anleitung für zwei C++ - Openmp - Beispiele auf der NWZSuperdome Anleitung für zwei C++ - Openmp - Beispiele auf der NWZSuperdome (Timo Heinrich, t_hein03@uni-muenster.de) Inhaltsverzeichnis: 0.Einleitung 1.Teil: Helloworldprogramm 1.1 Quellcode: Helloworld.cpp 1.2

Mehr

NET.Compact Framework

NET.Compact Framework FRANZIS PROFESSIONAL SERIES Robert Panther Programmieren mit dem NET.Compact Framework Pocket PC - Smartphone - Handheld Mit 178 Abbildungen FRANZIS Vorwort 9 Einleitung 11 1.1 Warum dieses Buch? 11 1.2

Mehr

Kurs für Microsoft Online Kurs Microsoft Analysten Programmierer

Kurs für Microsoft Online Kurs Microsoft Analysten Programmierer Kurs für Microsoft Online Kurs Microsoft Analysten Programmierer Akademie Domani info@akademiedomani.de Allgemeines Programm des Kurses für Microsoft Modul 1 Basis Programm Erste Lerneinheit Einführung

Mehr

eytron VMS Webanwendung Fehlersuche und -Behebung

eytron VMS Webanwendung Fehlersuche und -Behebung eytron VMS Webanwendung Fehlersuche und -Behebung 2009 ABUS Security-Center GmbH & Co. KG, Alle Rechte vorbehalten Diese Anleitung soll Ihnen Unterstützung für den Fall geben, dass die Webanwendung nach

Mehr

Multicore Herausforderungen an das Software-Engineering. Prof. Dr.-Ing. Michael Uelschen Hochschule Osnabrück 15.09.2010

Multicore Herausforderungen an das Software-Engineering. Prof. Dr.-Ing. Michael Uelschen Hochschule Osnabrück 15.09.2010 Multicore Herausforderungen an das Software-Engineering Prof. Dr.-Ing. Michael Uelschen Hochschule Osnabrück 15.09.2010 Inhalt _ Motivation _ Herausforderung 1: Hardware _ Herausforderung 2: Software-Partitionierung

Mehr

Exception Handling, Tracing und Logging

Exception Handling, Tracing und Logging Exception Handling, Tracing und Logging Proseminar Objektorientiertes Programmieren mit.net und C# Tomas Ladek Institut für Informatik Software & Systems Engineering Agenda Exceptions Allgemeines Implementierung

Mehr

Dokumentation zur Anlage eines JDBC Senders

Dokumentation zur Anlage eines JDBC Senders Dokumentation zur Anlage eines JDBC Senders Mithilfe des JDBC Senders ist es möglich auf eine Datenbank zuzugreifen und mit reiner Query Datensätze auszulesen. Diese können anschließend beispielsweise

Mehr

Dipl. Inf. Eric Winter. PostgreSQLals HugeData Storage Ein Erfahrungsbericht

Dipl. Inf. Eric Winter. PostgreSQLals HugeData Storage Ein Erfahrungsbericht Dipl. Inf. Eric Winter Entwicklungsleiter PTC GPS-Services GmbH PostgreSQLals HugeData Storage Ein Erfahrungsbericht Inhalt 1. Problembeschreibung 2. Partielle Indexierung 3. Partitionierung 1. Vererbung

Mehr

SemTalk Services. SemTalk UserMeeting 29.10.2010

SemTalk Services. SemTalk UserMeeting 29.10.2010 SemTalk Services SemTalk UserMeeting 29.10.2010 Problemstellung Immer mehr Anwender nutzen SemTalk in Verbindung mit SharePoint Mehr Visio Dokumente Viele Dokumente mit jeweils wenigen Seiten, aber starker

Mehr

Die Windows Workflow Foundation in Microsoft.NET 3.0

Die Windows Workflow Foundation in Microsoft.NET 3.0 Die Windows Workflow Foundation in Microsoft.NET 3.0 Klaus Rohe (klrohe@microsoft.com) Developer Platform & Strategy Group Microsoft Deutschland GmbH Agenda Was ist Windows Workflow Foundation? Microsoft

Mehr

Softwareentwicklung in der industriellen Praxis

Softwareentwicklung in der industriellen Praxis Softwareentwicklung in der industriellen Praxis Cloud-Systeme: Besonderheiten bei Programmierung und Betrieb Steffen Gemkow / Paul Fritsche - ObjectFab GmbH 26.11.2012 Simple is beautiful Don t repeat

Mehr

Warum Anwendungen nicht skalieren Wie man Performance- und Skalierbarkeitsprobleme findet und eliminiert

Warum Anwendungen nicht skalieren Wie man Performance- und Skalierbarkeitsprobleme findet und eliminiert Warum Anwendungen nicht skalieren Wie man Performance- und Skalierbarkeitsprobleme findet und eliminiert Alois Reitbauer, dynatrace Software Mirko Novakovic, codecentric GmbH Agenda Skalierbarkeit Das

Mehr

Skalieren von SaaS Anwendungen. Patric Boscolo, Developer Evangelist, patbosc@microsoft.com, Microsoft Deutschland GmbH

Skalieren von SaaS Anwendungen. Patric Boscolo, Developer Evangelist, patbosc@microsoft.com, Microsoft Deutschland GmbH Skalieren von SaaS Anwendungen Patric Boscolo, Developer Evangelist, patbosc@microsoft.com, Microsoft Deutschland GmbH Windows Azure Cloud Services Developer Resources Windows Azure Windows Azure Services

Mehr

Mehr Dynamik in Apex mit Javascript und JQuery. Alexander Scholz its-people

Mehr Dynamik in Apex mit Javascript und JQuery. Alexander Scholz its-people Vortrag zur DOAG Konferenz 2011 Mehr Dynamik in Apex mit und Alexander Scholz its-people 1 Ablauf Thema des Vortragsthemas Motivation Besonderheit des Referenten Alexander Scholz its-people Wie kann in

Mehr

Extending tl_member. Andreas Fieger (@fiedschmuc) 2015-10-08

Extending tl_member. Andreas Fieger (@fiedschmuc) 2015-10-08 Extending tl_member Andreas Fieger (@fiedschmuc) 2015-10-08 Übersicht Was wollen wir? Wie könnten wir es erreichen? Aufwand/Folgekosten? Was wollen wir? Felder in der Mitgliederverwaltung hinzufügen (z.b.

Mehr

SOLISYON GMBH CHRISTIAN WOLF, BENJAMIN WEISSMAN. Optimierung von Abfragen in MS SQL Server DWH-Umgebungen

SOLISYON GMBH CHRISTIAN WOLF, BENJAMIN WEISSMAN. Optimierung von Abfragen in MS SQL Server DWH-Umgebungen WEITER BLICKEN. MEHR ERKENNEN. BESSER ENTSCHEIDEN. Optimierung von Abfragen in MS SQL Server DWH-Umgebungen SOLISYON GMBH CHRISTIAN WOLF, BENJAMIN WEISSMAN VERSION 1.0 OPTIMIERUNG VON ABFRAGEN IN MS SQL

Mehr

Message Oriented Middleware am Beispiel von XMLBlaster

Message Oriented Middleware am Beispiel von XMLBlaster Message Oriented Middleware am Beispiel von XMLBlaster Vortrag im Seminar XML und intelligente Systeme an der Universität Bielefeld WS 2005/2006 Vortragender: Frederic Siepmann fsiepman@techfak.uni bielefeld.de

Mehr

12. ArcView-Anwendertreffen 2010. Workshop Programmierung in ArcGIS. Daniel Fuchs. Wo kann eigene Programmierung in ArcGIS verwendet werden?

12. ArcView-Anwendertreffen 2010. Workshop Programmierung in ArcGIS. Daniel Fuchs. Wo kann eigene Programmierung in ArcGIS verwendet werden? Wo kann eigene Programmierung in ArcGIS verwendet werden? 12. ArcView-Anwendertreffen 2010 Workshop Programmierung in ArcGIS Daniel Fuchs 1) Makros für die Automatisierung einzelner Arbeitsschritte im

Mehr

Die nächste Revolution in der modelgetriebenen Entwicklung?

Die nächste Revolution in der modelgetriebenen Entwicklung? Die nächste Revolution in der modelgetriebenen Entwicklung? Me Johannes Kleiber Software Engineer bei FMC Johannes.Kleiber@fmc-ag.com Themen Überblick Window Workflow Foundation Workflows modellieren WF

Mehr

MySQL Queries on "Nmap Results"

MySQL Queries on Nmap Results MySQL Queries on "Nmap Results" SQL Abfragen auf Nmap Ergebnisse Ivan Bütler 31. August 2009 Wer den Portscanner "NMAP" häufig benutzt weiss, dass die Auswertung von grossen Scans mit vielen C- oder sogar

Mehr

Excel beschleunigen mit dem mit Windows HPC Server 2008 R2

Excel beschleunigen mit dem mit Windows HPC Server 2008 R2 Excel beschleunigen mit dem mit Windows HPC Server 2008 R2 Steffen Krause Technical Evangelist Microsoft Deutschland GmbH http://blogs.technet.com/steffenk Haftungsausschluss Microsoft kann für die Richtigkeit

Mehr

White Paper. Embedded Treiberframework. Einführung

White Paper. Embedded Treiberframework. Einführung Embedded Treiberframework Einführung White Paper Dieses White Paper beschreibt die Architektur einer Laufzeitumgebung für Gerätetreiber im embedded Umfeld. Dieses Treiberframework ist dabei auf jede embedded

Mehr

Systemvoraussetzungen Across v6 (Stand 03.11.2014)

Systemvoraussetzungen Across v6 (Stand 03.11.2014) (Stand 03.11.2014) Copyright 2014 Across Systems GmbH Der Inhalt dieses Dokuments darf ohne die schriftlich erteilte Genehmigung der Across Systems GmbH weder kopiert noch in sonstiger Art und Weise an

Mehr

WHERE Klausel Generierung mit.net und Oracle. Aus unserer Projekterfahrung und Architektur-Kurs

WHERE Klausel Generierung mit.net und Oracle. Aus unserer Projekterfahrung und Architektur-Kurs Betrifft Art der Info Quelle WHERE Klausel Generierung mit.net und Oracle Technical Info Aus unserer Projekterfahrung und Architektur-Kurs Where ist the WHERE? Der Artikel untersucht die Möglichkeiten,

Mehr

Integration Services - Dienstarchitektur

Integration Services - Dienstarchitektur Integration Services - Dienstarchitektur Integration Services - Dienstarchitektur Dieser Artikel solle dabei unterstützen, Integration Services in Microsoft SQL Server be sser zu verstehen und damit die

Mehr

Microsoft SQL Server 2005 - Konfigurierung, Administration, Programmierung

Microsoft SQL Server 2005 - Konfigurierung, Administration, Programmierung Ruprecht Droge, Markus Raatz Microsoft SQL Server 2005 - Konfigurierung, Administration, Programmierung Microsoft Press Vorwort XI 1 Einführung in SQL Server 2005 1 Geschichte des SQL Servers 1 Wichtige

Mehr

UI-Testing mit Microsoft Test Manager (MTM) Philip Gossweiler / 2013-04-18

UI-Testing mit Microsoft Test Manager (MTM) Philip Gossweiler / 2013-04-18 UI-Testing mit Microsoft Test Manager (MTM) Philip Gossweiler / 2013-04-18 Software Testing Automatisiert Manuell 100% 70% 1 Überwiegender Teil der Testing Tools fokusiert auf automatisiertes Testen Microsoft

Mehr

Taktgeber aus der Cloud

Taktgeber aus der Cloud azure. Microsoft Azure Scheduler Teil 4: Microsoft Azure Scheduler gezielt einsetzen Quellcode als Download auf Taktgeber aus der Cloud In dieser fünfteiligen Artikelserie beschäftigen wir uns mit der

Mehr

Staff. Tim Conrad. Zeitplan. Blockseminar: Verteiltes Rechnen und Parallelprogrammierung. Sommer Semester 2013. Tim Conrad

Staff. Tim Conrad. Zeitplan. Blockseminar: Verteiltes Rechnen und Parallelprogrammierung. Sommer Semester 2013. Tim Conrad Blockseminar: Verteiltes Rechnen und Parallelprogrammierung Sommer Semester 2013 Tim Conrad Staff Tim Conrad AG Computational Proteomics email: conrad@math.fu-berlin.de Telefon: 838-51445 Büro: Raum 138,

Mehr

Thorben Meier 25.01.2012

Thorben Meier 25.01.2012 F# Thorben Meier 25.01.2012 1 Einleitung F# ist eine Multi-Paradigmen-Programmiersprache, die neben funktionalen auch imperative und objektorientierte Sprachelemente enthält. Ihre größten Einflüsse kommen

Mehr

Informationsbroschüre

Informationsbroschüre Informationsbroschüre Überwachung, Lastverteilung, automatische Aufgaben für Microsoft Dynamics NAV Mit IT IS control 2011 können Sie viele Mandanten und NAV-Datenbanken praktisch gleichzeitig mit wenigen

Mehr

Performanceanalyse der Artikeldarstellung

Performanceanalyse der Artikeldarstellung PhPepperShop - Performanceanalyse José Fontanil und Reto Glanzmann Performanceanalyse der Artikeldarstellung José Fontanil / Reto Glanzmann Januar 2003 Performanceanalyse Artikel anzeigen im PhPepperShop.sxw

Mehr

Zeiterfassung-Konnektor Handbuch

Zeiterfassung-Konnektor Handbuch Zeiterfassung-Konnektor Handbuch Inhalt In diesem Handbuch werden Sie den Konnektor kennen sowie verstehen lernen. Es wird beschrieben wie Sie den Konnektor einstellen und wie das System funktioniert,

Mehr

Einführung in das Microsoft.NET-Framework. Programmiersprache C# MEF Das Managed Extensibility Framework. André Kunz

Einführung in das Microsoft.NET-Framework. Programmiersprache C# MEF Das Managed Extensibility Framework. André Kunz Einführung in das Microsoft.NET-Framework Programmiersprache C# MEF Das Managed Extensibility Framework André Kunz 21.09.2010 1 In dieser Einführung bekommen Sie einen kurzen Einstieg in das.net-framework

Mehr

Microsoft SQL Server 2005 für Administratoren

Microsoft SQL Server 2005 für Administratoren Microsoft SQL Server 2005 für Administratoren Irene Bauder ISBN 3-446-22800-4 Leseprobe Weitere Informationen oder Bestellungen unter http://www.hanser.de/3-446-22800-4 sowie im Buchhandel Sichern von

Mehr

Mobile Backend in der

Mobile Backend in der Mobile Backend in der Cloud Azure Mobile Services / Websites / Active Directory / Kontext Auth Back-Office Mobile Users Push Data Website DevOps Social Networks Logic Others TFS online Windows Azure Mobile

Mehr

Integration in die Office-Plattform. machen eigene Erweiterungen Sinn?

Integration in die Office-Plattform. machen eigene Erweiterungen Sinn? Integration in die Office-Plattform machen eigene Erweiterungen Sinn? Agenda Apps Warum eigentlich? Apps für Office Apps für SharePoint Entwicklungsumgebungen Bereitstellung Apps Warum eigentlich? Bisher

Mehr

RAC auf Sun Cluster 3.0

RAC auf Sun Cluster 3.0 RAC auf Sun Cluster 3.0 Schlüsselworte RAC, OPS, Sun Cluster, Performance, Availability Zusammenfassung Oracle hat mit dem Real Application Cluster (RAC) aus einer Hochverfügbarkeitslösung eine Höchstverfügbarkeitslösung

Mehr

Microsoft Azure: Ein Überblick für Entwickler. Malte Lantin Technical Evangelist, Developer Experience & Evangelism (DX) Microsoft Deutschland GmbH

Microsoft Azure: Ein Überblick für Entwickler. Malte Lantin Technical Evangelist, Developer Experience & Evangelism (DX) Microsoft Deutschland GmbH Microsoft Azure: Ein Überblick für Entwickler Malte Lantin Technical Evangelist, Developer Experience & Evangelism (DX) Microsoft Deutschland GmbH Moderne Softwareentwicklung Microsoft Azure unterstützt

Mehr

0. Inhaltsverzeichnis

0. Inhaltsverzeichnis 0. Inhaltsverzeichnis 0. Inhaltsverzeichnis...1 1. Kurze Einführung WebService Architektur...2 1.1 Synchrones Modell:...2 1.2 Asynchrones Modell:...2 1.3 Vorteile:...3 1.4 Voraussetzungen...3 2. Testseite

Mehr

Besser PHP programmieren

Besser PHP programmieren Carsten Möhrke Besser PHP programmieren Handbuch professioneller PHP-Techniken Galileo Press Vorwort zur dritten Auflage ц JjlJlli!fJÜIj SI!IS* 1.1 Lernen Sie Ihr Arbeitsgerät kennen 13 1.2 Der Editor,

Mehr

Hadoop. Simon Prewo. Simon Prewo

Hadoop. Simon Prewo. Simon Prewo Hadoop Simon Prewo Simon Prewo 1 Warum Hadoop? SQL: DB2, Oracle Hadoop? Innerhalb der letzten zwei Jahre hat sich die Datenmenge ca. verzehnfacht Die Klassiker wie DB2, Oracle usw. sind anders konzeptioniert

Mehr

Skalierbarkeit von Serversystemen Was tun, damit das technische Korsett mein Business nicht einschnürt?

Skalierbarkeit von Serversystemen Was tun, damit das technische Korsett mein Business nicht einschnürt? Skalierbarkeit von Serversystemen Was tun, damit das technische Korsett mein Business nicht einschnürt? Dipl.-Inform. Thomas Witzenrath 21.01.2014 Tralios IT GmbH www.tralios.de Über mich Dipl.-Inform.

Mehr

Objektorientiertes Programmieren für Ingenieure

Objektorientiertes Programmieren für Ingenieure Uwe Probst Objektorientiertes Programmieren für Ingenieure Anwendungen und Beispiele in C++ 18 2 Von C zu C++ 2.2.2 Referenzen und Funktionen Referenzen als Funktionsparameter Liefert eine Funktion einen

Mehr

Monaden in anderen Programmiersprachen

Monaden in anderen Programmiersprachen Monaden in anderen Programmiersprachen Themen Informatik-Seminar SS 2013: Programmiersprachen und Sprachsysteme Bei: Prof. Dr. Schmidt, FH Wedel inf9500 Sebastian Philipp Überblick Motivation Monaden in

Mehr

Seminar Cloud Data Management WS09/10. Tabelle1 Tabelle2

Seminar Cloud Data Management WS09/10. Tabelle1 Tabelle2 Seminar Cloud Data Management WS09/10 Tabelle1 Tabelle2 1 Einführung DBMS in der Cloud Vergleich verschiedener DBMS Beispiele Microsoft Azure Amazon RDS Amazon EC2 Relational Databases AMIs Was gibt es

Mehr

Task A Zündung. Task B Einspritzung. Task C Erfassung Pedalwert. J. Schäuffele, Th. Zurawka: Automotive Software Engineering, Vieweg, 2003

Task A Zündung. Task B Einspritzung. Task C Erfassung Pedalwert. J. Schäuffele, Th. Zurawka: Automotive Software Engineering, Vieweg, 2003 Task! evt. parallel zu bearbeitende Ausführungseinheit! Beispiel: Task A Zündung Task B Einspritzung Task C Erfassung Pedalwert Zeit t J. Schäuffele, Th. Zurawka:, Vieweg, 2003 Echtzeitbetriebssysteme

Mehr

Java Performance Tuning

Java Performance Tuning Seminarunterlage Version: 5.04 Version 5.04 vom 16. Januar 2015 Dieses Dokument wird durch die veröffentlicht.. Alle Rechte vorbehalten. Alle Produkt- und Dienstleistungs-Bezeichnungen sind Warenzeichen

Mehr

Windows Server Update Services (WSUS)

Windows Server Update Services (WSUS) Windows Server Update Services (WSUS) Netzwerkfortbildung, Autor, Datum 1 WSUS in der Windows Was ist WSUS? Patch- und Updatesoftware von Microsoft, bestehend aus einer Server- und einer Clientkomponente

Mehr

BICsuite!focus Parallelisierung von Prozessen mit der BICsuite Dynamic Submit Funktion

BICsuite!focus Parallelisierung von Prozessen mit der BICsuite Dynamic Submit Funktion independit Integrative Technologies GmbH Bergstraße 6 D 86529 Schrobenhausen BICsuite!focus Parallelisierung von Prozessen mit der BICsuite Dynamic Submit Funktion Dieter Stubler Ronald Jeninga July 30,

Mehr

Installation und Benutzung AD.NAV.ZipTools

Installation und Benutzung AD.NAV.ZipTools Installation und Benutzung AD.NAV.ZipTools Version 1.0.0.0 ALTENBRAND Datentechnik GmbH Am Gelicht 5 35279 Neustadt (Hessen) Tel: 06692/202 290 Fax: 06692/204 741 email: support@altenbrand.de Die Komponente

Mehr

Programmieren I. Die Programmiersprache Java. www.kit.edu. Institut für Angewandte Informatik

Programmieren I. Die Programmiersprache Java. www.kit.edu. Institut für Angewandte Informatik Programmieren I Die Programmiersprache Java KIT Universität des Landes Baden-Württemberg und nationales Großforschungszentrum in der Helmholtz-Gemeinschaft www.kit.edu Eigenschaften von Java Java ist eine

Mehr

PostgreSQL in großen Installationen

PostgreSQL in großen Installationen PostgreSQL in großen Installationen Cybertec Schönig & Schönig GmbH Hans-Jürgen Schönig Wieso PostgreSQL? - Die fortschrittlichste Open Source Database - Lizenzpolitik: wirkliche Freiheit - Stabilität,

Mehr

Einführung in VisualBasic for Applications. Stefan Mahlitz

Einführung in VisualBasic for Applications. Stefan Mahlitz Einführung in VisualBasic for Applications Stefan Mahlitz Stefan Mahlitz Einführung in VBA 27.08.00 Inhaltsverzeichnis 1. Grundlagen der VisualBasic for Applications (VBA) Programmierung...2 1.1 Variablen,

Mehr

Office und.net - zwei Welten wachsen zusammen mit VSTO 3.0. Lars Keller netcreate OHG

Office und.net - zwei Welten wachsen zusammen mit VSTO 3.0. Lars Keller netcreate OHG Office und.net - zwei Welten wachsen zusammen mit VSTO 3.0 Ihr Referent Lars Keller Was lernen Sie hier nicht? Was werden Sie hier erfahren? Agenda I VSTO Grundlagen II Ribbon Customizing III Smart Tag

Mehr

Grundlagen der Programmierung 2. Parallele Verarbeitung

Grundlagen der Programmierung 2. Parallele Verarbeitung Grundlagen der Programmierung 2 Parallele Verarbeitung Prof. Dr. Manfred Schmidt-Schauÿ Künstliche Intelligenz und Softwaretechnologie 27. Mai 2009 Parallele Algorithmen und Ressourcenbedarf Themen: Nebenläufigkeit,

Mehr

Fortgeschrittene Servlet- Techniken. Ralf Gitzel ralf_gitzel@hotmail.de

Fortgeschrittene Servlet- Techniken. Ralf Gitzel ralf_gitzel@hotmail.de Fortgeschrittene Servlet- Techniken Ralf Gitzel ralf_gitzel@hotmail.de 1 Themenübersicht Ralf Gitzel ralf_gitzel@hotmail.de 2 Übersicht Servlet Initialisierung Attribute und Gültigkeitsbereiche Sessions

Mehr

Was ist Windows Azure? (Stand Juni 2012)

Was ist Windows Azure? (Stand Juni 2012) Was ist Windows Azure? (Stand Juni 2012) Windows Azure Microsofts Cloud Plattform zu Erstellung, Betrieb und Skalierung eigener Cloud-basierter Anwendungen Cloud Services Laufzeitumgebung, Speicher, Datenbank,

Mehr

Workflow Systeme mit der Windows Workflow Foundation

Workflow Systeme mit der Windows Workflow Foundation Studiengang Electronic Business (EB) Diplomarbeit (280000) Workflow Systeme mit der Windows Workflow Foundation externe Betreuung durch Christoph Müller vorgelegt bei Prof. Dr. Michael Gröschel von Hans-Martin

Mehr

Complex Event Processing für intelligente mobile M2M- Kommunikation

Complex Event Processing für intelligente mobile M2M- Kommunikation Complex Event Processing für intelligente mobile 2- Kommunikation Hochschule Hannover arcel etzdorf, Prof. Dr. Ralf Bruns, Prof. Dr. Jürgen Dunkel, Henrik asbruch Inside 2 Ilja Hellwich, Sven Kasten 2

Mehr

DBUS Interprozess-Kommunikation für Embedded-Plattformen

DBUS Interprozess-Kommunikation für Embedded-Plattformen DBUS Interprozess-Kommunikation für Embedded-Plattformen Andreas Schwarz Neratec Solutions AG Firmenprofil Neratec Solutions AG Produkt-Entwicklungen für kundenspezifische elektronische Produkte Produkte

Mehr

Windows SharePoint Services als gemeinsamen Dateispeicher einrichten

Windows SharePoint Services als gemeinsamen Dateispeicher einrichten Windows SharePoint Services als gemeinsamen Dateispeicher einrichten (Engl. Originaltitel: Setting up Windows SharePoint Services as a Collaborative File Store) Dustin Friesenhahn Veröffentlicht: August

Mehr

2 7 Erweiterungen. 7.1 Prozess-Kommunikation mit Datenbanken

2 7 Erweiterungen. 7.1 Prozess-Kommunikation mit Datenbanken 2 7 Erweiterungen 7 Erweiterungen 7.1 Prozess-Kommunikation mit Datenbanken Im Buch Einstieg in das Programmieren mit MATLAB wird im Abschnitt 4.8 das Thema Prozess-Kommunikation am Beispiel von MS-Excel

Mehr

Zugriff auf Firebird-Datenbanken mit PHP. Daniel de West DB-Campus-Treffen 15. Januar 2004

Zugriff auf Firebird-Datenbanken mit PHP. Daniel de West DB-Campus-Treffen 15. Januar 2004 Zugriff auf Firebird-Datenbanken mit PHP Daniel de West DB-Campus-Treffen 15. Januar 2004 Inhalt PHP und Firebird Die wichtigsten Befehle Verbindungsaufbau Übermitteln von Abfragen Beenden von Verbindungen

Mehr

5.4 Die Benachrichtigung (Notification)

5.4 Die Benachrichtigung (Notification) 160 Bekannte Probleme Windows Phone Im Emulator wird immer die Connection.UNKNOWN zurückgegeben. ios und Bada Es wird leider nur unterschieden, ob es eine mobile oder WiFi-Verbindung gibt. Der Grad der

Mehr

HERZLICH WILLKOMMEN SHAREPOINT 2013 DEEP DIVE - APPS 11.09.2012 IOZ AG 1

HERZLICH WILLKOMMEN SHAREPOINT 2013 DEEP DIVE - APPS 11.09.2012 IOZ AG 1 HERZLICH WILLKOMMEN SHAREPOINT 2013 DEEP DIVE - APPS 11.09.2012 IOZ AG 1 AGENDA Einführung Apps - Einführung Apps Architektur SharePoint-Hosted Apps Cloud-Hosted Apps Ausblick 11.09.2012 IOZ AG 2 ÜBER

Mehr

Think Big. Skalierbare Anwendungen mit Azure. Aydin Mir Mohammadi Bluehands GmbH & co.mmunication KG

Think Big. Skalierbare Anwendungen mit Azure. Aydin Mir Mohammadi Bluehands GmbH & co.mmunication KG Skalierbare Anwendungen mit Azure Bluehands GmbH & co.mmunication KG 1 2 3 4 5 6 7 8 9 Immer mehr Mehr Performance Mehr Menge Mehr Verfügbarkeit Skalierung http://www.flickr.com/photos/39901968@n04/4864698533/

Mehr

MGE Datenanbindung in GeoMedia

MGE Datenanbindung in GeoMedia TIPPS & TRICKS MGE Datenanbindung in GeoMedia 10. September 2002 / AHU INTERGRAPH (Schweiz) AG Neumattstrasse 24, CH 8953 Dietikon Tel: 043 322 46 46 Fax: 043 322 46 10 HOTLINE: Telefon: 043 322 46 00

Mehr

IBM SPSS Modeler Server 16 for Windows Installationsanweisungen

IBM SPSS Modeler Server 16 for Windows Installationsanweisungen IBM SPSS Modeler Server 16 for Windows Installationsanweisungen Inhaltsverzeichnis Installationsanweisungen....... 1 Systemanforderungen........... 1 Installation............... 1 Ziel................

Mehr

NoSQL mit Postgres 15. Juni 2015

NoSQL mit Postgres 15. Juni 2015 Tag der Datenbanken 15. Juni 2015 Dipl.-Wirt.-Inform. Agenda l Vorstellung l Marktübersicht l Warum PostgreSQL? l Warum NoSQL? l Beispielanwendung Seite: 2 Vorstellung Dipl.-Wirt.-Inform. [1990] Erste

Mehr

Redwood Cronacle und REALTECH theguard! Integration

Redwood Cronacle und REALTECH theguard! Integration Redwood Cronacle und REALTECH theguard! Integration Einleitung Redwood Software und REALTECH haben gemeinsam eine Lösung entwickelt, die die Systemverfügbarkeit von SAP und mysap Systemen signifikant erhöht.

Mehr

Prototypvortrag. Exploiting Cloud and Infrastructure as a Service (IaaS) Solutions for Online Game Service Provisioning. Projektseminar WS 2009/10

Prototypvortrag. Exploiting Cloud and Infrastructure as a Service (IaaS) Solutions for Online Game Service Provisioning. Projektseminar WS 2009/10 Prototypvortrag Exploiting Cloud and Infrastructure as a Service (IaaS) Solutions for Online Game Service Provisioning Projektseminar WS 2009/10 Eugen Fot, Sebastian Kenter, Michael Surmann AG Parallele

Mehr

Mobile Application Development

Mobile Application Development Mobile Application Development Android: Einführung Jürg Luthiger University of Applied Sciences Northwestern Switzerland Institute for Mobile and Distributed Systems Lernziele Der/die Kursbesucher/in kann

Mehr

Erstellen sicherer ASP.NET- Anwendungen

Erstellen sicherer ASP.NET- Anwendungen Erstellen sicherer ASP.NET- Anwendungen Authentifizierung, Autorisierung und sichere Kommunikation Auf der Orientierungsseite finden Sie einen Ausgangspunkt und eine vollständige Übersicht zum Erstellen

Mehr

CPU-Scheduling - Grundkonzepte

CPU-Scheduling - Grundkonzepte CPU-Scheduling - Grundkonzepte Sommersemester 2015 Seite 1 Gesamtüberblick 1. Einführung in Computersysteme 2. Entwicklung von Betriebssystemen 3. Architekturansätze 4. Interruptverarbeitung in Betriebssystemen

Mehr

.NET als Microsofts Entwicklerplattform

.NET als Microsofts Entwicklerplattform .NET als Microsofts Entwicklerplattform Frank Prengel Technologieberater Microsoft Deutschland http://blogs.msdn.com/frankpr Agenda Was ist.net eigentlich? Microsoft.NET heute.net Framework 2.0, 3.0.NET

Mehr

16 SQL Server-Zugriff per VBA

16 SQL Server-Zugriff per VBA Leseprobe aus Access und SQL Server http://www.acciu.de/asqllesen 16 SQL Server-Zugriff per VBA Sie werden an verschiedenen Stellen per VBA auf die Tabellen der SQL Server-Datenbank zugreifen müssen sei

Mehr

Performanceoptimierung mit Exadata Verarbeitung extremer Datenmengen mit PL/SQL basierter Datenbewirtschaftung (Erfahrungsbericht)

Performanceoptimierung mit Exadata Verarbeitung extremer Datenmengen mit PL/SQL basierter Datenbewirtschaftung (Erfahrungsbericht) Performanceoptimierung mit Exadata Verarbeitung extremer Datenmengen mit PL/SQL basierter Datenbewirtschaftung (Erfahrungsbericht) Christian Haag, DATA MART Consulting Consulting Manager Oracle DWH Team

Mehr

Prozesse und Scheduling

Prozesse und Scheduling Betriebssysteme für Wirtschaftsinformatiker SS04 KLAUSUR Vorbereitung mit Lösungen / Blatt 1 Prozesse und Scheduling Aufgabe 1 : Scheduling Gegeben seien die folgenden Prozesse und die Längen des jeweiligen

Mehr

Access [basics] Tabellenverknüpfungen pflegen. Beispieldatenbank. Verknüpfungen erneuern. Anwendungsfälle. Grundlagen der Verknüpfung

Access [basics] Tabellenverknüpfungen pflegen. Beispieldatenbank. Verknüpfungen erneuern. Anwendungsfälle. Grundlagen der Verknüpfung Wenn Sie eine Datenbank in Frontend und Backend aufgeteilt haben, greift das Frontend über eine Verknüpfung auf die Tabellen im Backend zu. Wo sich das Backend befindet, wird in einer Systemtabelle gespeichert.

Mehr