Diplomarbeit: evidence goes Azure

Größe: px
Ab Seite anzeigen:

Download "Diplomarbeit: evidence goes Azure"

Transkript

1 0 Diplomarbeit: evidence goes Azure Pflichtenheft Projekt: Thema: Version: 1.1 evidence goes Azure evidence in der Cloud betreiben _MasterThesis.docx Abstract: Den.net basierenden Applikationsserver evidence application server in der Microsoft Cloud Azure verfügbar machen. Student: Manuel Kaderli Experte: Rolf Wenger Glaux Soft AG werosoft GmbH Steigerhubelstrasse 3 Steingrübliweg 8a 3008 Bern 3072 Ostermundigen Betreuer: Beat Kiener Glaux Soft AG Steigerhubelstrasse Bern Glaux Soft AG Steigerhubelstrasse 3 CH-3008 Bern Tel

2 Inhaltsverzeichnis 1 Allgemeines Modifikationen und Freigaben Abkürzungen und Begriffe Abkürzungen Begriffe Referenzierte Dokumente Einleitung Ausgangslage Zweck des Dokuments Management Summary Ziele Ziel Priorisierung Basisdienste Applikationsserver Konzept Priorisierung Applikationsserver Prototyp Priorisierung Anforderungen #1 Basisdienste Applikationsserver Konzept #2 Repository Konzept #3 Kommunikation Konzept #4 Applikationsserver Prototyp #5 Anbindung an SQL Azure Service Prototyp #6 Einbinden von Umsystemen Prototyp #7 Performance Analyse Prototyp #8 Toolset Migration Konzept #9 Deployment und Maintenance Konzept #10 Einbinden von Umsystemen Konzept #11 Anbindung an Azure Blob Storage Prototyp #12 Abgrenzung Code Basis #13 Abgrenzung Betriebswirtschaftliche Sicht #14 Abgrenzung Security Anhang Tabellenverzeichnis Abbildungsverzeichnis /16

3 1 Allgemeines 1.1 Modifikationen und Freigaben Die Freigabe des Projekthandbuches erfolgt durch den Experten der Diplomarbeit. 1.2 Abkürzungen und Begriffe Abkürzungen Abkürzung SDP SAD SRS SWS CRUD ORM COM ACID CTI ERP Definition der Abkürzung Software Development Plan Software Architecture Document Software Requirements Specification Software Schule Schweiz Create, Read, Update, Delete Objekt Relationaler Mapper Component Objetct Model atomic, consistent, isolation, durability Computer Telefonie Integration Enterprise Resource Planning Begriffe Begriff Bedeutung Cloud Computing Bezeichnet den Ansatz, IT-Infrastruktur(Rechenleistung/Speicher/Fertige Programme) dynamisch an den Bedarf über Netzwerk zur Verfügung zu stellen. Windows Azure Plattform Evidence Applikationsserver Evidence Cloudserver Evidence Winclient SQL Azure Service Repository Windows Azure Plattform(kurz Azure)ist Microsofts Cloud-Computing-Plattform Kernstück des evidence Framework, stellt ORM und andere Dienste für Applikationen zur Verfügung Der in dieser Masterthesis zu erstellende Applikationsserver, welcher ein Subset an Funktionalität des evidence Applikationsserver enthalten soll Der Standard.net Windows Forms basierende Client mit dem auf den evidence Applikationsserver zugegriffen wird Ein Cloud basierter, relationaler SQL Service. Basierend auf dem Microsoft SQL Server Ein verwaltetes Verzeichnis zur Speicherung und Beschreibung von digitalen Objekte 1.3 Referenzierte Dokumente 3/16

4 2 Einleitung 2.1 Ausgangslage Das evidence Application Framework der Glaux Soft AG basiert auf dem Microsoft.NET Framework und bildet die Basis für verschiedene Geschäftsanwendungen. Azure ist Microsoft s Could Computing Platform. Microsoft bietet damit Plattform as a service an. Der Vorteil von Cloud Computing gegenüber On-premises ist einerseits Finanziell, da man keine Investitionskosten hat, und andererseits die Skalierbarkeit, da man bei Bedarf einfach zusätzliche Rechenleistung und Speicher dazukaufen kann. 2.2 Zweck des Dokuments Das Pflichtenheft beschreibt die Anforderungen aus Sicht Auftragnehmer. Normalerweise wird das Pflichtenheft vom Kunden geliefert, und ist daher nicht Technisch. In diesem Fall wird das Pflichtenheft vom Studenten verfasst, und wird durch die Art der Diplomarbeit etwas mehr Technisch-Lastig ausfallen als gewöhnlich. Die Anforderungen werden in Detaillierter form in der Software Requirements Specification(SRS) noch einmal behandelt. 4/16

5 2.3 Management Summary Mit Azure bietet Microsoft einen Plattform as a Service an, mit dem man Kostengünstig und effizient Applikationen betreiben kann. Der Hardware und Betriebssystem Support wird vom Cloud-Betreiber sichergestellt. Abbildung 1: Microsoft Azure Cloud Plattform Das evidence Framework der Firma Glaux Soft AG bietet die Grundlage um CRM, e-government und andere Kundenprojekte umzusetzen. Abbildung 2: evidence Framework Der evidence Applikationsserver ist das Kernstück des evidence Application Framework. Der Applikationsserver wird als Windows Service betrieben, und ist entweder beim Kunden auf einem Server installiert, oder wird von einem Infrastructure as a Service Provider betreiben. Der Applikationsserver ist stellt einerseits den Zugriff zur Datenbank als ORM sicher, hat darüber hinaus allerdings noch viele Spezialisierte Aufgaben. Zu erwähnen sind insbesondere folgende Dienste: Berechtigungs-Management Mandant-Management Reporting User Settings Management 5/16

6 Dokumenten-Management Abbildung 3: evidence Application Framework Ziel der Diplomarbeit ist ein Konzept und einen Prototypen des evidence Applikationsserver zu erstellen, welcher in der Azure Cloud betrieben werden kann. Aufgrund dieser Erfahrungen kann dann entschieden werden ob der evidence Applikationsserver Cloud-Fähig gemacht werde soll oder nicht. 6/16

7 3 Ziele Die Ziele werden in 4 unterschiedliche Typen unterteilt: Musskriterien Sollkriterien o Für das Produkt unabdingbare Leistungen, die in jedem Fall erfüllt werden müssen. o Die Erfüllung dieser Kriterien wird angestrebt Kannkriterien o Die Erfüllung ist nicht unbedingt notwendig, sollten nur angestrebt werden, falls noch ausreichend Kapazitäten vorhanden sind. Abgrenzungskriterien o Diese Kriterien sollen bewusst nicht erreicht werden Einige Ziele beinhalten Teile welche in verschiedenen Typen(Muss/Soll/Kann/Abgrenzung) einzuordnen sind. Aufgrund der Lesbarkeit der Ziele werden diese Teilanforderungen zusammengehalten, es wird wo nötig dann explizit erwähnt um welchen Typ es sich handelt. In dieser Masterthesis gibt es zwei Arten von Lieferobjekten: 1. Konzept 2. Prototyp Die einzelnen Kriterien werden entweder nur als Konzept erarbeitet, oder zusätzlich als Prototyp implementiert. 7/16

8 3.1 Ziel Priorisierung Name Priorität #1 Basisdienste Applikationsserver Konzept Siehe #2 Repository Konzept Muss #3 Kommunikation Konzept Soll #4 Applikationsserver Prototyp Siehe #5 Anbindung an SQL Azure Service Prototyp Kann #10 Einbinden von Umsystemen Konzept Muss #6 Einbinden von Umsystemen Prototyp Soll #7 Performance Analyse Prototyp Soll #8 Toolset Migration Konzept Muss #9 Deployment und Maintenance Konzept Soll #11 Anbindung an Azure Blob Storage Prototyp Soll #12 Abgrenzung Code Basis Abgrenzung #13 Abgrenzung Betriebswirtschaftliche Sicht Abgrenzung #14 Abgrenzung Security Abgrenzung Tabelle 1: Ziele Priorisierung Basisdienste Applikationsserver Konzept Priorisierung Name SessionState Persistieren Priorität Muss Muss 8/16

9 Berechtigungs-Management Mandant-Management Reporting User Settings Management Dokument-Management Scheduled und Asynchrone Tasks Server-Plugins Soll Soll Kann Kann Soll Kann Soll Tabelle 2: Basisdienste Applikationsserver Konzept Priorisierung Applikationsserver Prototyp Priorisierung Name Kommunikation von Client zum Applikationsserver Session Management Persistieren im SQL Azure Service Scheduling und Asynchrone Tasks Aufzeigen eines Programmiermodels für Projektentwicklung Priorität Muss Muss Muss Soll Muss Tabelle 3: Applikationsserver Prototyp Priorisierung 9/16

10 3.2 Anforderungen #1 Basisdienste Applikationsserver Konzept Der evidence Applikationsserver bietet eine Vielzahl von Basisdiensten an insbesondere: Persistieren Berechtigungs-Management Mandant-Management Reporting User Settings Management Dokumenten-Management Scheulduled und Asynchrone Tasks Server-Plugins SessionState Es muss ein Dokument erstellt werden, welches aufgezeigt, welche Anpassungen nötig sind und das evidence Server Modell mit der Oben genannten Funktionalität auf in Azure zu betreiben #2 Repository Konzept Der evidence Applikationsserver basiert auf einer generischen Datenbank-Repositorystruktur. Diese Repositorystruktur kann mit dem evidence Designstudio angepasst werden. Das Repository, wie auch die Daten werden zusammengefasst in einer Microsoft SQL Server Datenbank gespeichert. In der Azure Cloud gibt es die SQL Azure Service. Dabei handelt es sich um einen Cloud- Basierenden, relationale Datenbank-Service. Der SQL Azure Service basiert auf der Microsoft SQL Server Technologie, und unterstützt Transact-SQL(T-SQL). Es gibt allerdings Unterschiede beziehungsweise Einschränkungen gegenüber dem Microsoft SQL Server. Es muss ein Dokument erstellt werden, welches aufgezeigt welche Einschränkungen existieren, und welche Anpassungen gemacht werden müssen, damit eine evidence Datenbank in SQL Azure Service betrieben werden kann #3 Kommunikation Konzept 10/16

11 Im Moment Kommunizieren der evidence Winclient und der evidence Applikationsserver mittels.net Remoting. Es muss einerseits ein Dokument erstellt werden, welches aufzeigt was für Änderungen am evidence Cloudserver nötig sind, um diesen in Azure anzusprechen. Weiter muss auch für den evidence Winclient ein Dokument erstellt werden, wie dieser mit dem in der Azure Cloud laufenden evidence Cloudserver Kommunizieren kann #4 Applikationsserver Prototyp Es muss ein lauffähiger Prototyp eines Applikationsservers(evidence Cloudserver) erstellt werden, welcher in der Cloud betrieben werden kann. Dieser Prototyp muss folgende Funktionalität bieten: 1. Kommunikation von Client zum Applikationsserver 2. Session Management 3. Persistieren im SQL Azure Service 4. Scheduling und Asynchrone Tasks 5. Aufzeigen eines Programmiermodels für Projektentwicklung #5 Anbindung an SQL Azure Service Prototyp Der evidence Cloudserver muss Daten im SQL Azure Service Persistieren. Alle CRUD Operatioinen müssen unterstützt werden #6 Einbinden von Umsystemen Prototyp Es muss ein Umsystem Bidirektional eingebunden werden. Das Umsystem muss Service des evidence Cloudserver initialisieren können, und umgekehrt muss der evidence Cloudserver einen Service des Umsystem initialisieren können #7 Performance Analyse Prototyp Es muss analysiert werden, wie die Performance des evidence Cloudserver ist, abhängig davon ob er in der Azure Cloud oder Lokal betrieben wird. Die Zeit einer bestimmten Anzahl lesender und schreibender Zugriffe muss lokal und in der Azure Cloud gemessen werden, damit eine konkrete Aussage über die Performance gemacht werden kann. 11/16

12 3.2.8 #8 Toolset Migration Konzept Das evidence Framework besitzt ein Toolset mit welchem das evidence Datenbank Repositoy konfiguriert und verwaltet wird. Dieses Toolset besteht insbesondere aus folgenden Komponenten: EvidenceDesignStudio EvidenceRepositoryUpdater EvidenceDBInstaller Diese Tools kommunizieren entweder via dem nativen SQL Provider, oder via OleDB mit der Datenbank. Es muss ein Dokument erstellt werden um aufzuzeigen, ob diese Tools mit dem SQL Azure Service kommunizieren können. Funktioniert die Kommunikation nicht, muss in dem Dokument ein Weg aufgezeigt werden, wie diese Tools angepasst werden müssen, damit die Verbindung mit dem SQL Azure Service funktioniert #9 Deployment und Maintenance Konzept Ein evidence Projekt besteht aus diversen Komponenten, wovon einige vom evidence Framework gestellt werden, und andere Projektspezifisch sind. Die Datenbank besteht aus einem Repository(Strukturdaten) und Runtime-Daten(Laufzeitdaten). Beide können bei jeder Kundenspezifischen Installation verschieden aufgebaut sein, basieren aber immer auf einer evidence Framework Repository Version. Ähnlich wie die Datenbank besteht auch die eigentliche Applikation(Client und Server) einerseits aus evidence Framework Komponenten, und andererseits aus Projektspezifischen Komponenten(dll/exe). Es muss ein Dokument erstellt werden, welches aufgezeigt, wie diese Unterschiedlichen Komponenten in der Azure Cloud verteilt werden, und wie man bei einem Framework oder Projektspezifischen Versionswechsel vorgehen muss #10 Einbinden von Umsystemen Konzept In den meisten Projekten bei denen der evidence Applikationsserver verwendet wird, werden Schnittstellen zu Umsystemen integriert. Enterprise Resource Planning 12/16

13 Computer Telefonie Integration Legacy Systeme Individuelle Anwendungen Tabelle 4: Beispiele für Umsysteme Es gibt einerseits Unidirektionale Anbindungen, bei denen der evidence Applikationsserver entweder vom Umsystem Aufgerufen wird, oder Funktionen des Umsystem aufruft. Andererseits gibt es Bidirektionale Anbindungen bei denen die Kommunikation von beiden Seiten initiiert werden kann. Diese verschiedenen Umsysteme setzen Unterschiedliche Technologien zur Integration voraus. War es früher vielfach COM, werden heute vermehrt Webservice eingesetzt. Weiter gibt es auch einfache Schnittstellen bei denen nur ein Austausch von Dateien stattfindet. Eine weitere Möglichkeit zur Integration von Schnittstellen sind Enterprise Application Integration, welche technologisch aber vielfach auch Webservice erfordern. Es muss ein Dokument erstellt werden, welches aufgezeigt wie der evidence Applikationsserver in der Azure Cloud mit Umsystemen Kommunizieren kann. Sowohl Unidirektional wie auch Bidirektional. 13/16

14 #11 Anbindung an Azure Blob Storage Prototyp Der evidence Applikationsserver besitzt Dokumenten Management Support. Damit können Dokumente gespeichert und wieder geladen werden. Weiter können diese Dokumente dann mit beliebigen anderen Objekten in Beziehungen gebracht werden. Die Dokumente werden dabei auf einem Filesystem gespeichert. Mit Azure Blob Storage besteht die Möglichkeit Dokumente in der Cloud zu speichern, und von dort wieder zu lesen. Der evidence Cloudserver Prototyp muss die Möglichkeit bieten Dokumente zu speichern und zu laden. 14/16

15 #12 Abgrenzung Code Basis Die Implementation muss nicht auf Basis des evidence Source Code erfolgen, muss jedoch Konzepte und Modelle welche von evidence verwendet werden, so weit wie möglich berücksichtigen. Es muss im Integrationskonzept ersichtlich sein welche Konzepte in der Cloud nicht mehr verwendet werden können #13 Abgrenzung Betriebswirtschaftliche Sicht Die Betriebswirtschaftliche Betrachtung der Cloud ist nicht Teil dieser Diplomarbeit. Es gibt in der Firma Glaux Soft eine andere Arbeit welche sich mit diesem Thema auseinandersetzt #14 Abgrenzung Security Der Aspekt Security der Daten sowie der Kommunikation mit der Cloud ist nicht Teil dieser Diplomarbeit. Es gibt in der Firma Glaux Soft eine andere Masterthesis welche sich mit diesem Thema auseinandersetzt. 15/16

16 4 Anhang 4.1 Tabellenverzeichnis Tabelle 1: Ziele Priorisierung...8 Tabelle 2: Basisdienste Applikationsserver Konzept Priorisierung...9 Tabelle 3: Applikationsserver Prototyp Priorisierung...9 Tabelle 4: Beispiele für Umsysteme Abbildungsverzeichnis Abbildung 1: Microsoft Azure Cloud Plattform...5 Abbildung 2: evidence Framework...5 Abbildung 3: evidence Application Framework /16

17 0 Diplomarbeit: evidence goes Azure Software Development Plan:(SDP) Projekt: Thema: Version: 1.0 evidence goes Azure evidence in der Cloud betreiben Dokumentname: SDP_MasterThesis.docx Student: Manuel Kaderli Experte: Rolf Wenger Glaux Soft AG werosoft GmbH Steigerhubelstrasse 3 Steingrübliweg 8a 3008 Bern 3072 Ostermundigen Betreuer: Beat Kiener Glaux Soft AG Steigerhubelstrasse Bern Glaux Soft AG Steigerhubelstrasse 3 CH-3008 Bern Tel

18 Inhaltsverzeichnis 1 Allgemeines Zweck des Dokuments Anmerkungen zu dieser Ausgabe Modifikationen und Freigaben Abkürzungen und Begriffe Abkürzungen Projekt Übersicht Projekt-Zielsetzung, Anwendungsbereich und Ziele Voraussetzung und Einschränkung Eingesetzte Tools Projekt Ergebnisse und Lieferungen Dokumente Projektauftrag Ausganslage Aufgabenbeschreibung Projektziele Projektabgrenzungen Projektorganisation Organisationsstruktur Software Schule Schweiz Glaux Soft AG Management Prozess Aufwandschätzung Projektplanung Projektplanung und Zeitplan Projektphasen Termine Risk Management Plan Anhang Tabellenverzeichnis Abbildungsverzeichnis Dokumentname: SDP_MasterThesis.docx 2/17

19 1 Allgemeines 1.1 Zweck des Dokuments Der Software Development Plan (SDP) enthält alle nötigen Informationen für die Steuerung des Projektes evidence goes Azure. Er beschreibt die Entwicklungsrichtung, bzw. Entwicklungsart der Software und gild als top-level Planung. Weiter hilft der SDP die Entwicklungsaktivitäten umzusetzten Anmerkungen zu dieser Ausgabe Änderungen zur vorhergehenden Ausgabe werden am linken Seitenrand mit einem Änderungsbalken markiert. Davon ausgenommen ist die Erstausgabe des Dokuments. 1.2 Modifikationen und Freigaben Die Freigabe des Projekthandbuches erfolgt durch den Experten der Diplomarbeit. 1.3 Abkürzungen und Begriffe Abkürzungen Abkürzung SDP SAD SRS SWS Definition der Abkürzung Software Development Plan Software Architecture Document Software Requirements Specification Software Schule Schweiz Dokumentname: SDP_MasterThesis.docx 3/17

20 2 Projekt Übersicht 2.1 Projekt-Zielsetzung, Anwendungsbereich und Ziele Um auch für die Zukunft gewappnet zu sein, geht es darum abzuklären ob der evidence Applikations- Server in der Cloud von Microsoft betrieben werden kann. Der evidence Applikations-Server ist im Moment ein Windows Service, und kommuniziert via.net Remoting mit den Clients. Um in der Cloud betrieben zu werden braucht es ein neues Initialisieruings-Modell, und ein neues Kommunikationsmodell. Hauptziel dieser Arbeit ist ein Integrationskonzept, welches aufzeigt ob es möglich ist den evidence Applikationsserver in der Cloud zu betreiben. Dieses Dokument muss Auskunft darüber geben, welche Teile bei einer Migration in die Cloud welchen Aufwand erfordern. Auf Basis dieses Integrationskonzep soll entschieden werden ob es sich Lohnt mit evidence den Schritt in die Azure Cloud zu machen. 2.2 Voraussetzung und Einschränkung In dieser Masterthesis wird nicht der evidence Applikationsserver angepasst, es wird vielmehr ein Protoyp gebaut mit dem Aufgezeigt wird, wie der evidence Applikationsserver Cloud-Fähig gemacht werden kann. Dokumentname: SDP_MasterThesis.docx 4/17

21 3 Eingesetzte Tools Hier wird aufgelistet welche Tools in welchen Bereichen eingesetzt werden Name Beschreibung Version Microsoft Offic Microsoft Office wird für die gesammte Dokumentation verwendet Visual Studio Wird zum entwickeln des Prototypen verwendent. Die eingesetzte Programiersprache ist C# 2010 Windows Azure Tools Api und Programierrichtlinien um mittes Visual Studio Azure Anwendungen zu programmieren 1.1 Subversion Als Source Control System wird Subversion eingesetzt Microsoft Project Wird für das Projektmanagement verwendet 2010 Tabelle 1: Tools Dokumentname: SDP_MasterThesis.docx 5/17

22 3.1 Projekt Ergebnisse und Lieferungen Dokumente Die folgenden Dokumente müssen im Rahmen des Projektes erarbeitet werden: Ergebnis Beschreibung Software Development Plan (SDP) Der SDP enthält die Planung und Organisation des gesamten Projektes, und dient als Arbeitsgrundlage für die Projektabwicklung Pflichtenheft Das Pflichtenheft beschreibt die Anforderungen an die Diplomarbeit aus sicht Auftragnehmer. Integrationskonzept Im Integrationskonzept geht es um die Analyse des evidence Applikations- Server und das Konzept für die Integration in die Azure Cloud Prototyp erstellen Es muss ein in der Azure Cloud lauffähiger Prototyp eines Applikationsserver erstellt werden. Dokumentname: SDP_MasterThesis.docx 6/17

23 4 Projektauftrag 4.1 Ausganslage Der evidence Applikationsserver ist das Kernstück des evidence Application Framework. Der Applikationsserver wird als Windows Service betrieben, und ist entweder beim Kunden auf einem Server installiert, oder wird von einem Infrastructure as a Service 1 Provider betreiben. Der Applikationsserver ist stellt einerseits den zugriff zur Datenbank als ORM 2 sicher, hat darüber hinaus allerdings noch viele Spezialisierte Aufgaben. Zu erwähnen sind insbesondere folgende Dienste: Berechtigungs-Managment Mandant-Management Reporting User Settings Managemnet Dokumenten-Management Abbildung 1: evidence Application Framework 4.2 Aufgabenbeschreibung Ziel der Diplomarbeit ist ein Konzept und einen Prototypen des evidence Applikationsserver zu erstellen, welcher in der Azure Cloud betrieben werden kann. Aufgrund dieser Erfahrungen kann dann entschieden werden ob der evidence Applikationsserver Cloud-Fähig gemacht werde soll oder nicht Dokumentname: SDP_MasterThesis.docx 7/17

24 4.3 Projektziele Konzept o Applikationsserver(SessionState/Basisdienste) o Schnitstellen o Evidence Toolset(Database) o Deployment Prototyp o Server Modell(Session state/scheduling/async-processing) o Umsystem einbinden o Blob Storage integrieren 4.4 Projektabgrenzungen Die Implementation muss nicht auf Basis des evidence Source code erfolgen, muss jedoch Konzepte und Modelle welche von evidence verwendet werden, so weit wie möglich berücksichtigen. Dokumentname: SDP_MasterThesis.docx 8/17

25 5 Projektorganisation 5.1 Organisationsstruktur Software Schule Schweiz Adresse: Software Schule Schweiz Wankdorffeldstrasse 102 CH-3000 Bern 22 Telefon: Internet: Experte: Rolf Wenger werosoft GmbH Obere Zollgasse Ostermundigen Telefon: Internet: Glaux Soft AG Adresse: Glaux Soft AG Steigerhubelstrase 3 CH 3008 Bern Telefon Internet: Student: Manuel Kaderli, Software Entwickler / Producet Manager Telefon Betreuer: Beat Kiener Telefon Dokumentname: SDP_MasterThesis.docx 9/17

26 6 Management Prozess 6.1 Aufwandschätzung Projektphase Geplante Dauer Aufwand Initialisierung 7 Wochen 20h Konzept 6 Wochen 190h Implementation Prototyp 4 Wochen 140h Abschluss 1 Woche 10h Projekt Management Während des gesammten Projekt 30h Tabelle 2: Aufwandschätzung pro Projektphase Der Geplante Aufwand für Arbeiten die im Rahmen der Diplomarbeit ausgeführt werden, beläuft sich auf 390h. Dokumentname: SDP_MasterThesis.docx 10/17

27 6.2 Projektplanung Projektplanung und Zeitplan Da es sich bei dieser Masterthesis nicht um ein Klassisches Softwareprojekt, sondern eher um ein Forschungsprojekt handelt wird keine übliche Vorgehensweise verwendet. Es wird ein Modell eingesetzt, welches sich an Scrum orientiert. Kernstück dabei sind die so genannten Sprints, mit denen man in einer gegebenen Zeit ein bestimmtes Ziel erreichen will. In dieser Masterthesis sind 6 Sprints geplant, mit denen der Product-Backlog abgearbeitet werden soll. Die Inhalte sind für alle 6 Sprints vorgegeben, allerdings werden die Details jeweils erst vor dem Start eines Sprints erarbeitet. Jeder Sprint dauert 3 Wochen, und es ist vorgesehen jeweils 60 Stunden pro Sprint aufzuwenden. Werden in einem Sprint die angestrebten Ziele nicht erreicht, muss entschieden werden ob diese Ziele im nächsten Sprint weiterverfolgt werden, oder ob man das bis zu diesem Zeitpunkt erreicht so belassen will. Diese Entscheidung muss zusammen mit dem Betreuer und dem Experten erfolgen. Abbildung 2: Sprint Planung Dokumentname: SDP_MasterThesis.docx 11/17

28 Abbildung 3: Sprint Product Backlog Da sich die Aufgewendete Zeit nur durch eine Person umgesetzt wird, und gleichmässig auf alle Sprints verteilt wird, sieht der Burndown-Chart auch sehr linear aus Aufwand übrig Aufwand übrig Abbildung 4: Sprint Burndown chart Dokumentname: SDP_MasterThesis.docx 12/17

29 6.2.2 Projektphasen Projektphase Beschreibung/Aktivitäten Ergebnisse Initialisierung Während der Initialisierung wird ein Pflichtenheft erstellt, in dem die Anforderungen dieser Masterthesis definiert werden. Die Anforderungen werden in einem groben Detailierungsgrad dokumentiert, und priorisiert. Die priorisierung kann später aufgrund neuer Erkentnisse noch geändert werden. Software Development Plan Pflichtenheft Geplante Aktivitäten: Einarbeiten in Windows Azure Anorderungen in Form eines Pflichtenheft dokumenteiren Software Development Plan(SDP) erstellen. Konzept In der Konzeptphase soll aufgezeigt werden wie der evidence Applikationsserver in die Azure Cloud integriert werden kann. Geplante Aktivitäten: Konzept Evt. Pflichtenheft erweiterung Erarbeiten des Konzepts Review mit Betreuer und Experten Priorisierung der Anforderungen Implementation Prototype In der Implementationsphase wird der Prototype umgesetzt. Geplante Aktivitäten: Prototyp Prototyp Review Prototyp mit Betreuer und Experten Unit Test Verteilen des Prototyp in der Cloud Abschluss Zum Projektabschluss gehört das Abnahme-Review des Prototyps, sowie die Präsentation der Arbeit. Abnahme-Review Dokumentname: SDP_MasterThesis.docx 13/17

30 Geplante Aktivitäten: Präsentation Abnahme Review mit Betreuer und Experten Präsentation Tabelle 3: Projektphasen Beschreibung Dokumentname: SDP_MasterThesis.docx 14/17

31 6.2.3 Termine Datum Termin Beteiligte Beginn Masterthesis Mk Review Pflichtenheft MK,BK,WR Abgabe Pflichtenheft MK, Definitive Bestätigung vom Pflichtenheft. Upload Pflichtenheft und Eingabe Abstract. MK, Review Fortschritt MK,BK,WR Review Fortschritt MK,BK,WR Review Fortschritt MK,BK,WR Abschluss Review MK,BK,WR Tabelle 4: Termine Dokumentname: SDP_MasterThesis.docx 15/17

32 6.3 Risk Management Plan In der folgenden Tabelle werden die kritischen Anforderungen an das System Aufgelistet: Rang Risiko Beschreibung Mögliche Resultate 1 Neue Technologie Es gibt wenig Literatur, bzw. Entwicklerwelche sich bereits mit der Azure Technologie auskennen. Langsamer Vortschritt. Allerdings gibt es mmer mehr Literatur zu dem Thema. 2 Datenbankstruktur Es kann sein, dass aufgrund technischer Restriktionen die Datenbankstruktur nicht übernommen werden kann. Nicht so relevant, es wird ein optionaler Weg aufgezeigt 3 Kein Zugang zu Azure Da Azure von Microsoft gehostet, und nur über das Internet zugänglich ist, kann es sein das es zu Ausfällen kommt. Es gibt eine Azure Entwicklerversion, mit welcher Azure simuliert werden kann. Tabelle 5: Risiken Dokumentname: SDP_MasterThesis.docx 16/17

33 7 Anhang 7.1 Tabellenverzeichnis Tabelle 1: Tools...5 Tabelle 2: Aufwandschätzung pro Projektphase Tabelle 3: Projektphasen Beschreibung Tabelle 4: Termine Tabelle 5: Risiken Abbildungsverzeichnis Abbildung 1: evidence Application Framework...7 Abbildung 2: Sprint Planung Abbildung 3: Sprint Product Backlog Abbildung 4: Sprint Burndown chart Dokumentname: SDP_MasterThesis.docx 17/17

34 0 Diplomarbeit: evidence goes Azure Konzept Projekt: Thema: Version: 1.1 evidence goes Azure evidence in der Cloud betreiben Dokumentname: Konzept_MasterThesis_evidencegoesazure.docx Abstract: Den.net basierenden Applikationsserver evidence application server in der Microsoft Cloud Azure verfügbar machen. Student: Manuel Kaderli Experte: Rolf Wenger Glaux Soft AG werosoft GmbH Steigerhubelstrasse 3 Steingrübliweg 8a 3008 Bern 3072 Ostermundigen Betreuer: Beat Kiener Glaux Soft AG Steigerhubelstrasse Bern Glaux Soft AG Steigerhubelstrasse 3 CH-3008 Bern Tel

35 Inhaltsverzeichnis 1 Allgemeines Modifikationen und Freigaben Abkürzungen und Begriffe Abkürzungen Begriffe Referenzierte Dokumente Einleitung Ausgangslage Zweck des Dokuments Management Summary Integrationskonzept Zugang zu Windows Azure Azure Informationen Azure Betriebssystem Versionen Staging und Production Web Role vs Worker Role WCF Einschränkungen WCF Duplex Binding WCF in der Development Fabric debuggen InstanceContextMode eines WCF Service in Azure Daten Persistieren Überblick Daten Persistieren Nutzdaten Persistieren mit SQL Azure # Session State Persistieren Session State Persistieren Prototyp # Applikationsserver Scheduling und Asynchrone Tasks # Umsystem einbinden # Evidence Toolset Migration # Von Evidence Verwendetet Datentypen Migration einer bestehenden Datenbank Vorgehen Fazit Migration auf SQL Azure Evidence Repository Konzept # Kommunikation Konzept # Deployment und Maintenance Konzept # Azure Kosten Offene Fragen evidence zu Azure Migration /68

36 4 Prototype Anforderungen Umsetzung Erfahrungen Probleme Anhang Tabellenverzeichnis Abbildungsverzeichnis /68

37 1 Allgemeines 1.1 Modifikationen und Freigaben Die Freigabe des Projekthandbuches erfolgt durch den Experten der Diplomarbeit. 1.2 Abkürzungen und Begriffe Abkürzungen Sind im Pflichtenheft aufgeführt Begriffe Sind im Pflichtenheft aufgeführt. 1.3 Referenzierte Dokumente DokID Dokumentname Beschreibung #1 Pflichtenheft_MasterThesis_evidencegoesazure.docx Pflichtenheft #2 BeschreibungPrototypMasterthesisKaderli.pdf Anforderungen an Protoyp 4/68

38 2 Einleitung 2.1 Ausgangslage Das evidence Application Framework der Glaux Soft AG basiert auf dem Microsoft.NET Framework und bildet die Basis für verschiedene Geschäftsanwendungen. Azure ist die Could Computing Platform von Microsoft. Microsoft bietet damit Plattform as a service an. Der Vorteil von Cloud Computing gegenüber On-premises ist einerseits Finanziell, da man keine Investitionskosten hat, und andererseits die Skalierbarkeit, da man bei Bedarf einfach zusätzliche Rechenleistung und Speicher dazukaufen kann. 2.2 Zweck des Dokuments Mit diesem Konzept soll aufzeigen wie die einzelnen Aspekte und Anforderungen des evidence Applikationsservers in der Azure Cloud von Microsoft umgesetzt werden können. Das Konzept wird gleich wie das Pflichtenheft aufgebaut. Es muss mit diesem Konzept ersichtlich sein, welcher Aufwand nötig ist um evidence in der Cloud zu betreiben. Weiter muss man in diesem Konzept erkennen können welche Punkte nicht, oder nur teilweise umsetzbar sind. Es muss der Firma Glaux Soft AG möglich sein aufgrund dieses Konzept die Möglichkeiten, den Aufwand und die Herausforderungen zu erkennen, und basierend auf dieses Konzept Mit Azure bietet Microsoft einen Plattform as a Service an, mit dem man Kostengünstig und effizient Applikationen betreiben kann. Der Hardware und Betriebssystem Support wird vom Cloud-Betreiber sichergestellt. Abbildung 1: Microsoft Azure Cloud Plattform Das evidence Framework der Firma Glaux Soft AG bietet die Grundlage um CRM, e-government und andere Kundenprojekte umzusetzen. 5/68

39 Abbildung 2: evidence Framework Der evidence Applikationsserver ist das Kernstück des evidence Application Framework. Der Applikationsserver wird als Windows Service betrieben, und ist entweder beim Kunden auf einem Server installiert, oder wird von einem Infrastructure as a Service Provider betreiben. Der Applikationsserver ist stellt einerseits den Zugriff zur Datenbank als ORM sicher, hat darüber hinaus allerdings noch viele Spezialisierte Aufgaben. Zu erwähnen sind insbesondere folgende Dienste: Berechtigungs-Management Mandant-Management Reporting User Settings Management Dokumenten-Management Abbildung 3: evidence Application Framework Ziel der Diplomarbeit ist ein Konzept und einen Prototypen des evidence Applikationsserver zu erstellen, welcher in der Azure Cloud betrieben werden kann. Aufgrund dieser Erfahrungen kann dann entschieden werden ob der evidence Applikationsserver Cloud-Fähig gemacht werde soll oder nicht. 6/68

40 2.3 Management Summary Mit der Windows Azure Plattform bietet Microsoft eine Lösung an mit der sich der Evidence Applikationsserver grundsätzlich betreiben lässt. Die grossen Vorteile einer Cloud Fähigen Applikation sind einerseits der Preis, und andererseits die Skalierbarkeit. Eine Applikation kann mit Azure innerhalb von Tagen für eine Beliebige Anzahl Benutzer bereitgestellt werden, und dies während keine Investitionskosten zu leisten sind. Bei Azure wird nur die effektiv verwendete Leistung in Rechnung gestellt. Ein Preis-Vergleich mit einer auf 30 Benutzer ausgerichteten Installation zeigt, dass die Kosten für das Betreiben in Azure nur 30 bis 50 Prozent eines On-Premise Hosting betragen, und Anschaffungskosten für Hardware ganz entfallen. Nachteile welche mit Cloud Computing einhergehen sind am ehesten in den Bereichen Sicherheit und Verfügbarkeit zu suchen. Dies war allerdings nicht Teil dieser Master-Thesis, muss aber auch bei der Entscheidung evidence Azure ja/nein berücksichtigt werden. Ein Punkt welcher speziell beachtet werden muss, ist das die Firma Glaux Soft mit dem Applikations- Framework evidence Projekte grundsätzlich Individuell umsetzt. Auch wenn evidence für Azure angepasst wird, bedeutet dies Aufwand um auch die Projekt-Lösung für Azure zu entwickeln und zu testen. Am meisten profitieren kann man von den Vorteilen der Cloud mit einer Software as a Service Anwendung, welche aber nicht für jeden Kunden einzeln angepasst wird, und welche man einfach multiplizieren kann. Dies sind strategische Entscheidungen welche durch die Geschäftsleitung getroffen werden müssen. Vorteile mit Azure Nachteile mit Azure Preisvorteil für den Kunden beim Hosting mit dem Pay as you go ansatz. Investitionskosten für evidence Umbau Möglichkeit Software as a Service anzubieten. Unsicherheit bezüglich Datenschutz und Integrität der Daten Einfache Skalierbarkeit. Start small, grow Big Evtl. keine Akzeptanz bei Kunden Evtl. ein Verkaufsvorteil Abhängigkeit von Microsoft Azure. Technologie Vorteil Abhängig von einer Internet Verbindung mit entsprechender Bandbreite Einfache und schnelle Möglichkeit für Installationen und somit erhöhte Agilität. Tabelle 1: Vor und Nachteile evidence goes Azure 7/68

41 Der Aufwand für den Umbau des evidence Applikations-Frameworks ist grob geschätzt Mann- Monate. Die Durchlaufzeit ist mit 4 Entwicklern geschätzt 6 Monate. Der Umbau kann mit einem Entwickler bei Glaux Soft AG und 3 Off-Shore Entwicklern Realisiert werden. Technisch sind alle in diesem Dokument behandelten Punkte lösbar. Es gibt noch einige nicht behandelte Punkte welche eventuell bei der Entscheidungsfindung Azure ja/nein berücksichtigt werden müssen. Diese Punkte sind in Kapitel 3.10 Offene Fragen evidence zu Azure Dokumentiert. Mit diesen Informationen existiert nun eine Grundlage welche für den Entscheid Azure ja/nein verwendet werden kann. Technisch gibt es keine Unlösbaren Probleme. Die entscheidenden Fragen welche beantwortet werden müssen sind: Kann die Investition für den Umbau gestemmt werden? Ist der Nutzen gross genug für die Investition? Akzeptieren und wollen unsere Kunden Applikationen in der Cloud? 8/68

42 3 Integrationskonzept 3.1 Zugang zu Windows Azure Es gibt diverse Möglichkeiten einen Azure Account zu verwalten. Die offensichtlichste ist die Azure Website: https://windows.azure.com/cloud. Auf dieser Website kann grundsätzlich der ganze Azure Account verwaltet werden. Allerdings gibt es keine Möglichkeit um den Inhalt des Storages, oder der Verteilten Applikationen einzusehen. Dafür gibt es von Microsoft ein MMC Plugin, welches genau diese Funktionalität bietet: Abbildung 4: MMC Azure Plugin Seit dem 15. Mai 2010 gibt es mit dem Azure SDK auch die Möglichkeit die Azure Cloud vom Visual Studio aus zu Administrieren. Allerdings ist die Integration des Client Zertifikat noch nicht optimal. 9/68

43 3.2 Azure Informationen Da Azure noch nicht lange auf dem Markt ist, sind die Informationen nicht zentral zu finden. Vielmehr ist es ein zusammensuchen aus Blog und Foreneinträgen. In diesem Kapitel werden Spezialitäten der Azure Entwicklung aufgezeigt, welche sich nicht ohne weiteres in einer Dokumentation finden lassen Azure Betriebssystem Versionen Das Windows Azure Gast Betriebssystem ist das Betriebssystem unter dem die Virtuelle Maschine läuft welche die eigentlichen Services Beherbergt. Das Gast Betriebssystem wird Monatlich aktualisiert, und man kann wählen ob das Gast Betriebssystem immer automatisch aktualisiert wird, oder ob man die Aktualisierung selbst vornehmen will. Weiter kann es vorkommen, dass das darunterliegende Windows Azure Root Betriebssystem aktualisiert wird. Wenn das passiert, werden die laufenden Rollen Instanzen heruntergefahren, und wieder neu gestartet. Eine Aktualisierung des Azure Root Betriebssystems kann nicht verschoben oder verhindert werden. Um mit dem Windows Azure SDK eine Anwendung für Windows Azure zu entwickeln muss die Version des SDK mit der Version des Azure Gast Betriebssystems kompatibel sein. Windows Azure SDK Version Windows Azure Guest OS Version 1.0 (November 2009) 1.0 (Release ) 1.1 (Release ) 1.2 (Release ) 1.3 (Release ) 1.4 (Release ) 1.1 (Februar 2010) 1.1 (Release ) 1.2 (Release ) 1.3 (Release ) 1.4 (Release ) 10/68

44 1.2 (Juni 2010) 1.3 (Release ) 1.4 (Release ) Staging und Production Eine Instanz in Azure (Web Role oder Worker Role) kann entweder als Staging oder Production betrieben werden. Production bedeutet wie der Name vermuten lässt, dass sich hier die Produktive Installation befindet. Staging wird verwendet um eine neue Version zu Installieren und zu Testen. Abbildung 5: Production und Staging Die Installation kleine Lösung dauert bis zu 20 Minuten. Deshalb sollte die Installation immer auf Staging gemacht werden. Erst wenn diese Installation auf Staging zufriedenstellen läuft wird die Staging Installation zu Production gewechselt, und umgekehrt. Dieser Vorgang dauert nur wenige Sekunden. Interessant wird das Verhalten von Azure wenn noch offene Verbindungen existieren währen Staging zu Production gemacht wird. Anwendungen mit offenen Verbindungen bleiben solange auf dem Server verbunden bis dieser abgestellt wird. Das heisst auch wenn eine Version von Production zu Staging wechselt bleiben die bestehenden Verbindungen auf diesem Server, bis dieser Abgeschaltet wird. Nach dem Abschalten wird die Verbindung auf die neue Version gewechselt, welche auf Production läuft. 11/68

45 Dies bedeutet auch, dass zu einem Zeitpunkt zwei Client Anwendungs-Instanzen auf verschiedenen Azure Instanzen verbunden sind. Auf den folgenden Zwei Screenshots sieht man eine Applikation welche eine Webservice Methode aufruft welche die Versionsnummer zurückgibt. Die erste Anwendung wird gestartet wenn Version 1 auf Production installiert ist, die Zweite Anwendung wird gestartet wenn Version 2 auf Production installiert ist. Es kann beim Umstellen von Staging zu Production durchaus vorkommen, dass gleichzeitig zwei Client Anwendungen auf verschieden Azure Instanz Versionen zugreifen. Dies funktioniert allerdings nur, wenn bei einem Webservice die Aufgerufenen Methoden nicht geändert haben. Werden nur Methoden hinzugefügt, verändert oder gelöscht welche vom Client nicht verwendet wird, funktioniert die Applikation auch auf zwei Verschiedenen Versionen. Allerdings darf man eventuelle Seiteneffekte nicht vernachlässigen, und muss beim Einsatz einer Datenbank, wenn diese in der Struktur verändert wurde, darauf angemessen reagieren. Erst wenn Staging abgeschaltet wird, werden die Clients auf Production umgeleitet. Diese Umleitung sollte funktionieren, da man keine Relevanten Daten auf dem lokalen Filesystem speichern sollte. Abbildung 6: Ablauf Übergang Staging zu Production wenn Clients verbunden sind Das hier beschriebene Verhalten basiert auf dem Umstand, dass das KeepAlive flag im http-header gesetzt ist, und die Webservice Methoden innerhalb von wenigen Sekunden aufgerufen werden. Gibt es länger Pausen zwischen den aufrufen, werden wohl mittels Round-Robin dein Aufrufe auf die verschiedenen Server verteilt. 12/68

46 Abbildung 7: Staging und Production, Zugriff auf verschiedene Versionen Abbildung 8: Staging und Production, Zugriff auf dieselbe Version, nachdem Staging gestoppt wurde 13/68

47 3.2.3 Web Role vs Worker Role Es gibt für die Azure Cloud zwei Arten von Projekttypen welche man erstellen kann. Abbildung 9: Web/Worker Role in Visual Studio Web Role Worker Role Bei einer Web Role handelt es sich um eine Web Applikation, welche entweder vom Typ Asp.net oder WCF Service ist. Grundsätzlich kann gesagt werden, dass mit einer Web Role mittels des http Protokolls kommuniziert wird. Im Gegensatz dazu gibt es die Worker Role, welche Ähnlichkeiten mit einem Windows Service aufweist. Eine Worker Role wird gestartet, und mittels einem while(true) sleep am Leben erhalten. Damit können Langlaufende Operationen oder Batch Verarbeitung erledigt werden. Mit dem Juni 2010 Release des Azure SDK ist es neu möglich beliebige WCF Service von einer Worker Role aus zu initialisieren 1. Die Beschränkungen auf Port 80/443 und http als Protokoll sind dann hinfällig. Was man damit dann allerdings aufgibt, ist die automatische Verwaltung des WCF Service durch den IIS. Das muss man in diesem Szenario dann selben machen. Es ist auch nicht klar ob die Worker Role für diesen Einsatz konzipiert wurde 2, oder ob das als Workaround zu verstehen ist /68

48 3.2.4 WCF Einschränkungen Eine WCF Service wird in der Azure mit Partial Trust ausgeführt. Das bedeutet, dass nur ein Teil der effektiven WCF zur Verfügung steht. Mit einer undefinierten Azure OS Version wurde diese Restriktion abgeschafft. Jetzt ist es möglich einen Webservice mit Full-Trust laufen zu lassen. Diese ist neu auch die Standard Einstellung für neu erstelle Webservice. Keine Versionsinfo verfügbar: Daher gelten die in diesem Kapitel beschriebenen Einschränkungen nur noch für den Fall, dass in einem Projekt explizit Partial-Trust verwendet wird. Default Bindings: BasicHttpBinding und WebHttpBinding sind voll unterstützt in einer partial trust Umgebung. Bei WSHttpBinding ist wird nur Transport Security unterstützt. Bindings welche nicht über http kommunizieren, wie z.b. NetTCPBinding, NetNamedPipeBinding oder NetMsmqBinding werden nicht unterstützt. Custom Bindings: Custom Bindings können in einer partial trust Umgebung verwendet werden, sofern sie folgende Restriktionen einhalten: 1. Das Transport Binding Element muss ein http(s)transportbindingelement sein 2. Folgende Encoder sind erlaubt: a. TextMessageEncodingBindingElement b. BinaryMessageEncodingBindingElement c. WebMessageEncodingBindingElement 3. MTOM wird nicht unterstützt Nicht unterstützte Bindings: Bindings welche reliable messaging, transactions oder message-level security verwenden sind nicht unterstützt. 15/68

49 Security: In einer partial trust Umgebung kann nur Transport Security eingesetzt werden. Message Security ist nicht erlaubt. Weitere Informationen: Die exakten Informationen zu diesem Thema sind auf folgender Website zu finden: WCF Duplex Binding Duplex Binding in Azure funktioniert aus folgendem Grund nicht: 1. WCF wird mit partial trust ausgeführt, und WCF Duplex Binding benötigt Full Trust WCF in der Development Fabric debuggen In der Development Fabric wird wie in Azure vor jeden WCF Service ein Load Balancer geschaltet. Dieser braucht noch Informationen auf welchem Port die Requests entgegengenommen werden sollen. Diese Information muss im web.config beim Behavior eingetragen werden. <behavior> <servicemetadata httpgetenabled="true"/> <servicedebug includeexceptiondetailinfaults="true"/> <userequestheadersformetadataaddress> <defaultports> <add scheme="http" port="3333" /> </defaultports> </userequestheadersformetadataaddress> </behavior> Abbildung 10: WCF in Development Fabric debuggen InstanceContextMode eines WCF Service in Azure Der InstanceContextMode sagt aus wie Requests behandelt werden. Folgende drei Möglichkeiten stehen zur Verfügung: Typ Verhalten PerSession Ein neuer InstanceContext wird für jede Session erzeugt PerCall Ein neuer InstanceContext wird vor jedem Aufruf erzeugt, und nach dem Aufruf wieder zerstört. 16/68

50 Single Es gibt nur ein InstanceContext für alle Aufrufe Wird keiner dieser Werte explizit gesetzt, wird der InstanceContextMode aufgrund des security mode und der reliable session gesetzt. Da man in Azure am ehesten ein basichttpbinding einsetzt, muss man den InstanceContextMode auf PerCall einstellen, da es unter basichttpbinding keine transport-level Session gibt, und der Session- Mode immer NotAllowed ist. 3.3 Daten Persistieren Das persistieren von Daten ist eine Grundlegen Voraussetzung für einen Applikationsserver. Es müssen Nutz-Daten, User-Settings, Session Informationen, und weitere Daten gespeichert werden können. In diesem Kapitel geht es darum die verschiedenen Varianten zu analysieren und zu testen, und aufgrund dieser Ergebnisse zu entscheiden welche Art des Persistierens für welche Anforderung eingesetzt werden soll Überblick Daten Persistieren In diesem Kapitel werden folgende Arten des Persistierens vorgestellt: Table Services Blob Storage Queue Services SQL Azure Local Storage Table Services, Blob Storage und Queue Services stehen zur Verfügung, sobald man in Windows Azure einen Storage Account anlegt. Um einen neuen Storage Account anzulegen braucht man einzig einen Namen zu vergeben, z.b. evidencestorage. Unter diesem Namen werden von Windows Azure drei endpoints angelegt, über die man via REST auf die Daten zugreifen kann: 17/68

51 Abbildung 11: Azure Storage Konzept Um auf den Storage Account zuzugreifen braucht man zwei Informationen. Einerseits den Storage Account Namen, sowie eine 88 Stellen lange AccessID. Mit diesen Informationen kann man nun via REST(Der Name sowie die AccessID werden in der URL mitgegeben) oder einem SDK auf den Storage Account zugreifen. Als einzigen weiteren Parameter muss man noch angegeben ob die Verbindung mittels SSL verschlüsselt werden soll. const string accountname = "evidencestorage"; const string sharedkey = "gt2ho5ep4g3qbje2zx6v2h7ku9ccp/6mvvvxxnv1egrzj/al/r5ihzfp4wlajwwolwmz0z07vv1avwojd/rjog=="; _storageaccount = new CloudStorageAccount(new StorageCredentialsAccountAndKey(accountName, sharedkey), true); Table 1: Initialisierung Storage Account Um auf SQL Azure zuzugreifen, muss man zuerst eine neue SQL Instanz erzeugen. Hier werden als Informationen nur der Datenbankname, die Grösse der Datenbank(1GB oder 10GB) benötigt. Will man die Datenbank nicht via Windows Azure zugreifen, muss man Firewall Regeln hinterlegen, welche IP 18/68

52 Adressen berechtigt sind auf diese Datenbanken zuzugreifen. Die Firewall Regeln gelten für alle SQL Instanzen auf einem SQL Azure Account. Auch haben alle SLQ Instanzen denselben Administrator mit demselben Passwort. Der Connection String entspricht dem für eine On Premise SQL Datenbank. ADO.NET Server=tcp:kcnju2ryud.database.windows.net;Database=evitest;User ODBC Driver={SQL Server Native Client ord;encrypt=yes; Table 2: SQL Azure Connection String Als letztes bleibt noch der Local Storage. Dies ist ein Temporärer Speicher, der für jede Azure Instanz ohne Initialisierung bereits vorhanden ist. Alledings werden die Daten im Local Storage nicht persistiert, und sie können auch nicht über verschiedene Web/Worker Rollen verteilt verwendet werden. Error Handling: Da alle Operationen mit dem REST API ausgeführt werden, wird standardmässig ein http Status Code zurückgegeben. Im.net API wird daraus dann eine Exception gemacht, welche die Informationen über den aufgetretenen Fehler enthält. Diese weiteren Informationen werden im response body übermittelt. Der Exception Typ es Storage API ist immer StorageClientException. In der Dokumentation wird nicht explizit beschrieben welche Methode welche Fehler auslösen kann. Auf folgenden Seiten werden die Möglichen Fehlertypen beschrieben: 1. a. Common REST API Fehler 2. a. Blob Storage Fehler /68

53 a. Queue Storage Fehler 4. a. Table Service Fehler Hier ein Beispiel wie solche Fehler aussehen. Error Code Http Status Code User Message InvalidBlobOrBlock Bad Request (400) The specified blob or block content is invalid. ContainerNotFound Not Found (404) The specified container does not exist. ContainerAlreadyExists Conflict (409) The specified container already exists. Table 3: Blob Storage Error Code Beispiel Table Services Table Services sind konzipiert um nicht relationale Daten zu speichern. Eine Tabelle besteht aus 3 System Properties, sowie bis zu 255 eigenen Properties. Ein Property entspricht dabei eine Spalte. Table Services erzwingt kein Schema, welches auf die Tabellen angewendet wird. Damit kann man Entitäten in derselben Tabelle mit unterschiedlichen Properties erfassen. Dieses Problem kann mit dem Clientseitigen erzwingen eines Schemas gelöst werden. Eine Zeile besteht aus folgenden Eigenschaften: PartitionKey RowKey Timestamp Bis zu 255 eigenen Werten Eine Zeile(Namen und Werte) darf maximal 1MB gross sein, und eine einzelner Wert darf nicht grösser als 64KB sein. PartitionKey: 20/68

54 Tabellen können Partitioniert werden, um load balancing, bzw. Scale Out zu unterstützen. Die Entitäten einer Tabelle werden via PartitionKey verwaltet. Eine Partition ist ein Bereich von Entitäten welche denselben PartitionKey haben. Der PartitionKey ist ein eindeutiger identifizierbarer Wert für eine Partition innerhalb einer Tabelle. Der PartitionKey ist der erste Teil des Primärschlüssels einer Entität. Der PartitionKey kann String Werte bis zu 1KB enthalten. Der PartitionKey muss bei jedem Insert, Update und Delete mitgegeben werden. RowKey: Der zweite Teil des Primärschlüssels ist der RowKey. Der RowKey ist ein eindeutig identifizierbarer Wert für eine Entität innerhalb einer Partition. Zusammen sind der PartitionKey und der RowKey der eindeutige Schlüssel für eine Entität in einer Tabelle. Der RowKey kann String Werte bis zu 1KB enthalten. Der RowKey muss bei jedem Insert, Update und Delete mitgegeben werden. Timestamp: Das Timestamp Property ist ein DateTime Wert, welcher vom Server verwaltet wird. Dieser Wert wird jedes Mal angepasst, wenn die Entität verändert wird. Dieser Werte sollte weder gelesen noch geschrieben werden. Es ist ausschliesslich dazu da, um Optimistic concurrency, also das sichere Gleichzeitige zugreifen auf Entitäten zu garantieren Blob Service Mit dem Blob Service können Text und Binäre Daten gespeichert werden. Auch bei dem Blob Service ist Load balancing und Scale out implementiert. Es gibt zwei verschiedene Arten von Blobs: Block blobs: Block blobs, optimiert um Daten zu streamen. Ein Block blob besteht aus n Blöcken, wobei jeder Block mit einer eindeutigen ID identifizierbar ist. Die maximale Grösse eines Block Blob ist 200GB(Stand ). Page blobs: Page blobs, optimiert um Teile innerhalb eines blobs zu lesen und schreiben. Ein Page blob ist eine Sammlung von Pages, und eine Page ist ein Bereich von Daten, identifiziert via Offset vom Start des Page blobs. Die maximale Grösse eines Page Blob ist 1TB(Stand ) Queue Service 21/68

55 Der Queue Service speichert Nachrichten, welche ein anderer Client lesen kann der auf den Storage Account zugreifen kann. Der Queue Service ist nicht primär zum Daten Austausch konzipiert, vielmehr sollen damit Instruktionen an andere Systeme verteilt werden. Ein konkreter Anwendungsfall ist das Initialisieren einer Worker-Role mit einer Nachricht vom Queue Service. Eine Queue kann eine beliebige Anzahl Nachrichten enthalten, jede maximal 8KB gross. Eine neue Nachricht wird grundsätzlich an das Ende der Queue gestellt, und die Nachricht am Anfang wird als erstes verarbeitet(first in, First out Prinzip) SQL Azure SQL Azure ist ein eine relationale Datenbank basierend auf SQL Server 2008 für Windows Azure. Da die Kommunikation zu SQL Azure mit dem tabular data streem(tds) funktioniert, kann man mit beliebigen, bereits existierenden Tools auf SQL Azure zugreifen. Die Grösse einer Datenbank ist im Moment( ) auf 10GB beschränkt, wird aber voraussichtlich auf 50GB erweitert. Grundsätzlich funktioniert eine SQL Azure Datenbank gleich wie eine Datenbank auf einem SQL Server Die meisten T-SQL Operationen sind identisch. Jedoch stehen diverse Funktionen, wie z.b. abfragen auf die Mastertabelle, oder das Anlegen von Indexen nicht identisch zur Verfügung. Neben T-SQL wird auch das.net Entity Framework in SQL Azure unterstützt. SQL Azure bietet im Gegensatz zu den anderen vorgestellten Techniken kein vorgefertigtes Load balancing, bzw. Scale out an. Es ist möglich die Datenbank explizit zu Partitionieren, damit man den Vorteil von Scale out nutzen kann, dafür muss man aber auf Vorteile einer Relationalen Datenbank verzichten Local Storage Local Storage ist ein Temporäres Filesystem, welches nur jeweils für eine Rolle zur Verfügung steht. Im Gegensatz zu den anderen Arten Daten zu speichern, befindet sich der Local Storage auf derselben Virtuellen Maschine auf der auch die Web-Role, oder Worker-Role ausgeführt wird. Der Nachteil vom Local Storage ist, dass die Daten nur Temporär sind, und nur von jeweils einer Rolle verwendet werden können. Der Vorteil besteht in der Geschwindigkeit beim Zugriff auf die Daten, da keine Netzwerk-Latenz beim Zugriff auf die Daten besteht Nutzdaten Persistieren mit SQL Azure #1 Um Nutzdaten zu persistieren bietet sich eine Relationale Datenbank, und somit SQL Azure an. Beim Erstellen der Datenbank hat man die Möglichkeit zwischen 1GB und 10GB zu wählen. Ab dem 26. Juni 2010 kommt noch eine 50GB Datenbank dazu. Der Grund für die Grössenbeschränkung ist, dass in Azure eine SQL Datenbank nicht auf mehrere Virtuelle Maschinen aufgeteilt wird, sondern im- 22/68

56 mer auf einer Instanz läuft. Das bedeutet es kann kein Scale Out zur Erhöhung der Performance gemacht werden, und Scale Up funktioniert durch den Aufbau von Azure auch nicht Anlegen einer neuen SQL Azure Datenbank Eine neue SQL Azure Datenbank kann entweder über das Web Frontend, oder mit dem Visual Studio Azure Tool Version 1.2 erstellt werden. Beim Erstellen mittels Visual Studio hat man allerdings keine Möglichkeit die Grösse der Datenbank zu bestimmen, und es wird immer eine 1GB grosse Datenbank angelegt Berechtigung SQL Azure Beim Anlegen der ersten Datenbank muss zwingend auch ein Benutzer erstellt werden. Das Password muss den Anforderungen von Microsoft genügen 3. Mit diesem Benutzer kann man danach neue Datenbanken, sowie neue Benutzer anlegen. Die Benutzer werden in der Master Datenbank gespeichert. Authentisierung ist im Moment nur mit Benutzername/Passwort möglich. Trusted/Windows Login und Zertifikat-Basiertes Login ist zurzeit noch nicht möglich. Das Erstellen und Berechtigen eines Benutzers auf eine Datenbank erfolgt in zwei Schritten: 1. Benutzer erstellen CREATE LOGIN blub WITH PASSWORD = 'TaasdfSD!ad!!!fda' GO 2. Benutzer auf Datenbank berechtigen CREATE USER blub FOR LOGIN blub WITH DEFAULT_SCHEMA = Test GO EXEC sp_addrolemember N'db_owner', N'blub' GO SQL Azure Firewall 3 23/68

57 Der Zugriff auf eine SQL Azure Datenbank erfolgt immer über TCP Port Dieser muss auf der lokalen Firewall für ausgehende Verbindungen geöffnet sein. Weiter müssen über das Azure Webportal Firewall Einstellungen gemacht werden, damit auf die Datenbank zugegriffen werden kann. Man kann beliebige IP Adressen, bzw. IP Bereiche für eine die Datenbanken einer Azure instanz freischalten. Soll die Datenbank von einer Azure Web oder Worker Rolle verwendet werden, muss dies auch noch explizit freigeschaltet werden. Abbildung 12: SQL Azure Firewall Einstellungen Zugriff auf SQL Azure Mit folgenden Technologien kann auf SQL Azur zugegriffen werden: ADO.Net ODBC OLEDB LINQ to SQL JDBC SQL Azure Performance #7 Um die Performance von SQL Azure mit einer Standalone SQL Datenbank zu vergleichen wurden Messungen durchgeführt. Einmal von einer ASP.net Webapplikation welche in Azure gehosted wurde, und einmal von derselben ASP.net Applikation die Lokal gehosted wurde. Insert von 200 Datensätzen mit jeweils 10 Attributen Entity Framework 24/68

58 Lokal 1.2 Sekunden Azure(Unterschiedliche Rechenzentren) 11 Sekunden Azure(Gleiches Rechenzentrum) 1.2 Sekunden 100 Select mit jeweils 100 Datensätzen als Resultat Entity Framework Lokal 0.7 Sekunden Azure(Unterschiedliche Rechenzentren) 3.7 Sekunden Azure(Gleiches Rechenzentrum) 1.1 Sekunden Insert von 200 Datensätzen mit jeweils 10 Attributen ADO.NET Lokal 0.12 Sekunden Azure(Unterschiedliche Rechenzentren) 2.2 Sekunden Azure(Gleiches Rechenzentrum) 0.3 Sekunden 100 Select mit jeweils 100 Datensätzen als Resultat ADO.NET Lokal 0.08 Sekunden Azure(Unterschiedliche Rechenzentren) 2.1 Sekunden Azure(Gleiches Rechenzentrum) 0.3 Sekunden Die Resultate von SQL Azure sind massiv schlechter als auf einer Lokalen Datenbank, wenn die Applikation nicht im selben Rechenzentrum ist wie die SQL Datenbank. Aus Performance Sicht muss darauf geachtet werden, dass die Applikation nahe beim SQL Server ist, und nicht viele kleine Requests an die Datenbank abgeschickt werden. Stattdessen müssen die Abfragen für SQL Azure optimiert werden. 25/68

59 Transact-SQL Support Die Unterstützung für Transact-SQL Sprachelemente wird in drei Hauptkategorien unterteilt: 1. Transact-SQL Sprachelemente voll Unterstützt 2. Transact-SQL Sprachelemente nicht unterstützt 3. Transact-SQL Sprachelemente welche eine Teilmenge der Funktionalität von SQL Server 2008 bieten. Folgende Elemente sind nicht Unterstützt: Common Language Runtime (CLR) Database file placement Database mirroring Distributed queries Distributed transactions Filegroup management Global temporary tables Spatial data and indexes SQL Server configuration options SQL Server Service Broker System tables Trace Flags Es wird nur eine Teilmenge der Funktionalität des SQL Server 2008 unterstützt, kann man auf der Microsoft Website 4 sehen, welche Teile funktionieren und welche nicht /68

60 3.3.3 Session State Persistieren Beim Session State geht es darum Informationen von einem Aktuell angemeldeten Benutzer während der gesamten Zeitdauer während der der Benutzer angemeldet ist verfügbar zu haben. Eine Lösung für einfache Applikationen welche nicht in der Windows Azure Cloud funktionieren ist es, die Session Informationen Serverseitig im Speicher zu behalten, und diese Session Informationen erst wieder freizugeben wenn der Benutzer abgemeldet ist. Dieser Ansatz funktioniert in Azure nicht, da nicht davon ausgegangen werden kann, dass zwei Requests eines Benutzers auf dieselbe Virtuelle Maschine abgesetzt werden. Somit müssen diese Session Informationen so abgelegt werden, dass sie jeweils aktuell und von jeder beliebigen virtuellen Maschine zugreifbar sind. Durch diese Restriktion kommt der Local Storage nicht in Frage. Daher bleiben noch folgende Möglichkeiten, welche mit einem Prototyp getestet werden: Table Service SQL Azure Blob Service Eine Session besteht aus einer eindeutigen ID, sowie einer beliebigen Anzahl an Session Attributen. Als erstes wird versucht diese Anforderung mit Table Services zu lösen. Die zwei wichtigsten Aspekte sind Performance und Benutzbarkeit Session-State mit Table Service Analyse Für die Oben genannten Anforderungen ist es naheliegen die Table Services zu verwenden. Es wird ein Prototyp gebaut, mit dem man Sessions verwalten kann. Es wird ein API entwickelt, mit dem einfach Sessions verwaltet werden können. Der Entwickler braucht sich dafür nicht mit den Interna des Table Storage auszukennen. TableServiceSessionOptimized tss = new TableServiceSessionOptimized(); string sessionid = Guid.NewGuid().ToString(); //create a partition, if it does't exist already tss.initsession(sessionid, https); //load all session values tss.loadsessionvalues(); //add some session values for (int i = 0; i < numberofsessionvalues; i++) { tss.add("sessionvaluekey" + i, "myvalue" + i); } //Save the new session values tss.savesessionvalues(); //test whether the values are correctly stored or not for (int i = 0; i < numberofsessionvalues; i++) { if (tss["sessionvaluekey" + i]!= "myvalue" + i) 27/68

61 { throw new Exception("value doesnt match"); } } //update session values for (int i = 0; i < numberofsessionvalues; i++) { tss["sessionvaluekey" + i] = "myvaluenew" + i; } //save the updated session values tss.savesessionvalues(); //test whether the values are correctly stored or not for (int i = 0; i < numberofsessionvalues; i++) { if (tss["sessionvaluekey" + i]!= "myvaluenew" + i) { throw new Exception("value doesnt match"); } } //delete the session(only if it is not needed anymore) tss.deletesession(); Table 4: Session Management API für Table Storage Tabellendefinition: Eine Tabelle kann mittels Ableitung von TableServiceEntity definiert werden. Dies ist allerdings nur eine Clientseitiges Hilfskonstrukt, da der Table Storage kein Schema vorgibt, und auch kein Schema erzwingt. Hier könnte man bis zu 255 eigene Spalten definieren. In diesem Beispiel wird nur eine einzige Spalte Value definiert. public class SessionDataModel : TableServiceEntity { public SessionDataModel(string partitionkey, string rowkey) : base(partitionkey, rowkey) { } public SessionDataModel() : this(guid.newguid().tostring(), String.Empty) { } } //Einzige eigene Spalte public string Value { get; set; } Die Tabelle besteht aus folgenden Spalten: RowKey PartitionKey 28/68

62 Timestamp Value Bis auf Value sind alle anderen Spalten von den Table Storage vorgegeben. Value ist ein eigens definiertes Attribut vom Typ String, und kann Werte bis 64KB enthalten. Es gibt für alle Sessions eine einzige Tabelle welche einen Vordefinierten Namen hat. Um eine Session zu identifizieren, wird die SessionID als PartitionKey verwendet. Damit ist auch sichergestellt, dass diese Tabelle Scale Out unterstützt. RowKey PartitionKey Timestamp Value SessionValueKey1 C2F55DB7-E43F-4A0D-863E- F32C9A9557F :18:00:00 Myvalue1 SessionValueKey2 C2F55DB7-E43F-4A0D-863E- F32C9A9557F :18:00:01 Myvalue2 SessionValueKey3 C2F55DB7-E43F-4A0D-863E- F32C9A9557F :18:30:00 Myvalue3 Table 5: Beispiel einer Session Table Gibt es weitere Session, werden Einträge mit einem neuen Partitionkey erstellt. Da der RowKey und der PartitionKey zusammen die ID darstellen, kommt es damit auch nicht zu Konflikten. Abfragen: Abfragen auf den Table Storage können mit Linq definiert und ausgeführt werden. Wichtig für eine Performante Abfrage ist, den PartitionKey als Einschränkung anzugeben, da in diesem Fall die Abfrage in nur einer Virtuellen Maschine ausgeführt wird. Folgende LINQ Operatoren werden unterstützt: From Where Take(Muss kleiner oder gleich 1000 sein) First/FirstOrDefault Alle anderen Operatoren sind nicht unterstützt. 29/68

63 IQueryable<SessionDataModel> results = from c in _sessionservicecontext.createquery<sessiondatamodel>(sessionservicecontext.sessiontablename) where c.partitionkey == _sessionid & c.rowkey == mykey select c; CloudTableQuery<SessionDataModel> query = results.astableservicequery<sessiondatamodel>(); var queryresults = query.execute(); Table 6: Beispiel Abfrage Table Service if (queryresults.count()!= 1) { return null; } return queryresults.firstordefault().value; Performance: Performance der Zugriffe auf Session Informationen sind ein sehr Wichtiger Punkt. In einem ersten Prototyp wurden die Session Werte jeweils einzeln direkt gespeichert, was eine sehr schlechte Performance zur Folge hatte: public void Add(string mykey, string myvalue) { SessionDataModel sessiondatamodel = new SessionDataModel(_sessionID,mykey); sessiondatamodel.value = myvalue; _sessionservicecontext.addobject(sessionservicecontext.sessiontablename, sessiondatamodel); _sessionservicecontext.savechanges(); } Table 7: Table Storage Add Methode erster Versuch 100 Werte mit jeweils 100 Zeichen zu speichern dauert mit dieser Methode ca. 30 Sekunden. Und auch das erneute lesen der 100 Werte dauert mit 13 Sekunden viel zu lange. Als nächstes wurde versucht die Session Werte in einer Hashtable zwischenzuspeichern, und erst bei einem expliziten aufrufen von SaveSessionValues zu speichern. public void SaveSessionValues() { foreach (KeyValuePair<string, SessionDataModel> keyvaluepair in _tmplist) { if(keyvaluepair.value.timestamp == new DateTime(0001,01,01)) { //new _sessionservicecontext.addobject(sessionservicecontext.sessiontablename, keyvaluepair.value); }else { //update _sessionservicecontext.updateobject(keyvaluepair.value); } } 30/68

64 } _sessionservicecontext.savechanges(); Table 8: SaveSessionValues Methode Erstaunlicherweise dauert das Speichern von 100 Werten gleich lange wie wenn jeder Wert einzeln gespeichert wird. Nach Analyse des http Traffic welcher von dieser SaveChanges Methode verursacht wird, war der Grund für dieses Verhalten klar. Wird SaveChanges ohne Parameter aufgerufen, wird für jede Zeile mit einem eigenen http Request an Windows Azure gesendet, und dort dann gespeichert. Erst wenn die Option Batch verwendet wird, werden alle Werte in einem Request übertragen und gespeichert. _sessionservicecontext.savechanges(savechangesoptions.batch); Table 9: SaveSessionValue Methode mit Batch option Nach dieser Optimierung bekommt man folgende Zeiten beim Verarbeiten von 100 Werten mit jeweils 100 Zeichen. Task Dauer Bemerkung Ausgeührt Lokal Init Session Service Load session values Nur Abfrage. Kein Resultat da neue Session Save session values Neue Werte speichern Save session values Update bestehender Werte Close session and delete all values Ausgeführt in einer Azure Web Rolle Init Session Service Load session values Nur Abfrage. Kein Resultat da neue Session Save session values Neue Werte speichern Save session values Update bestehender Werte Close session and delete all values Table 10: Zeitmessung Table Storage Bei der Save Methode besteht noch Optimierungspotential, indem Lokal ein Flag geführt welche Werte verändert wurden, damit dann nur diese Objekte der _sessionservicecontext.updateobject übergeben werden. Damit werden dann nur die Werte übertragen, welche auch effektiv verändert wurden. Ein Test wurde in einer Asp.Net Applikation, welche als Azure Webrolle läuft ausgeführt. Dies um die Performance aufzuzeigen, wenn die Daten nicht über das Internet übermittelt werden müssen: 31/68

65 Figure 1: Azure Webrole SessionValue Performance Test Verarbeitete Requests: Folgende http Request werden abgesetzt: Tabelle initialisieren o Abfrage mit Einschränkungen o 20'bf1fd133-0a96-4ab4-bc00-6eed9f40895b' Speichern von Werten. Daten werden als Content übermittelt o Die Authentisierung wir vom.net API mittels einem Session Cookie sichergestellt. Versucht man einen dieser Links auszuführen, ohne das ein Session Cookie gesetzt ist, bekommt man immer folgenden Rückgabewert: 32/68

66 <error> <code>resourcenotfound</code> <message xml:lang="en-us"> The specified resource does not exist. RequestId:4562e716-38c2-4c32-8dba-c885e Time: T14:50: Z </message> </error> Table 11: Rückgabewerte bei Aufruf ohne Session Cookie Man wird nicht informiert dass kein Session Cookie vorhanden ist, oder dass die Berechtigung nicht stimmt. Es wird schlicht angegeben, dass die gesuchte Ressource nicht gefunden wurde. Fazit Table Service für Session Management: Grundsätzlich ist es möglich mit Table Service die Session Informationen zu persistieren, und auch die Abfrage via Linq ist komfortabel. Allerdings ist die Performance absolut nicht akzeptabel. Wenn das Speichern einer Session fast 2 Sekunden dauert ist das eindeutig zu lange. Speziell wenn noch nicht klar ist ob die Session Informationen bei jedem Aufruf persistiert werden müssen. 33/68

67 Session State mit Blob Service Eine weitere Möglichkeit den Session State zu Persistieren ist es, diesen in einem Blob Storag zu speichern. Von den zwei Arten, Page Blob und Block Blob bietet sich zu speichern von Session Informationen eher der Page Block an, da beim Page Block explizit auf einen Teil vom Blob zugegriffen werden kann. Die Verwendung für den Entwickler soll soweit möglich gleich sein wie bei Table Services: BlobServiceSessionManager bs = new BlobServiceSessionManager(); //Keep for further requests string session = Guid.NewGuid().ToString(); bs.initsession(session, false); bs.add("firstkey", "firstvalue" ); bs.savesessionvalues(); string value = bs["firstkey"].value; bs.deletesession(); Tabelle 2: Session Blob Storage API Aufbaus des Azure Blob Service: Ein Account kann n Container enthalten, wovon jeder Container jeweils wieder n Blobs enthalten kann. Dazu können pro Blob noch weitere Metadaten hinterlegt werden. Persistieren: Um die Daten zu speichern werden die Session Werte in einen Stream Serialisiert, und dem Azure Blob Storage übergeben. Dieser speichert dann diesen Binären Wert in einem Blob. Als Metadaten wird noch der Zeitstempel des letzten Zugriffs dazu gespeichert. 34/68

68 Beispiel um Daten zu laden: Hier speziell zu erwähnen ist, dass es keine möglich gibt zu testen ob ein Blob mit einem bestimmten Namen bereits besteht. Stattdessen muss versucht werden den Blob zu laden, und im Fehlerfall davon auszugehen, dass da noch kein Blob existiert. Nachzulesen auf dem Blog eines Azure Entwickler 5. public void LoadSessionValues() { try { blob = _cloudblobcontainer.getblockblobreference(_sessionid); using (MemoryStream ms = new MemoryStream()) { //here it fails if the blob doesn t exist blob.downloadtostream(ms); Serializer sr = new Serializer(); var sessionlist = sr.deserializeobjectforazure(ms); _tmplist = new Dictionary<string, SessionValue>(); foreach (var item in sessionlist.sessionvalue) { _tmplist.add(item.key, item); } } } catch (StorageClientException e) { //nothing to do //there is no other way to detect whether a give blob exist or not //http://blog.smarx.com/posts/testing-existence-of-a-windows-azure-blob } } Tabelle 3: Laden von Session Werten via Blob Storage Beispiel um Daten zu speichern: /// <summary> /// save the session values as a serialized list into /// the azure blob storage /// </summary> public void SaveSessionValues() { SessionValues svlist = new SessionValues(); //copy the dictionary into a serializable list foreach (KeyValuePair<string, SessionValue> keyvaluepair in _tmplist) { svlist.sessionvalue.add(keyvaluepair.value); } Serializer serializer = new Serializer(); using (MemoryStream s = serializer.serializeobjectforazure(svlist)) { s.position = 0; 5 35/68

69 } s.flush(); blob.uploadfromstream(s); } blob.metadata["timestamp"] = DateTime.Now.ToString(); blob.setmetadata(); Tabelle 4: Speichern von Session Werten via Blob Storage Fehler beim Erstellen: Erstellen eines Blobs mit folgendem Aufruf funktioniert nicht: var blobstorage = _storageaccount.createcloudblobclient(); blobcontainer = blobstorage.getcontainerreference("meintest"); bool b = blobcontainer.createifnotexist(); Folgende Fehlermeldung wird ausgegeben: One of the request inputs is out of range. Das Problem sind Namenskonventionen, welche nicht als Korrekte Fehlermeldung zurückgegeben werden. In diesem Beispiel sind die Grossbuchstaben das Problem, es gibt aber auch noch diverse andere Einschränkungen 6 für einen Container Namen: Gültige DNS Namen Nur Kleinbuchstaben Bis zu 63 Charakter Beginnt mit einem Buchstaben oder einer Nummer Erlaubt sind Buchstaben, Nummern und das Minuszeichen Umlaute sind nicht erlaubt 6 36/68

70 Performance: Es wird getestet 100 Session Werte mit jeweils 100 Zeichen zu speichern. Die Performance ist gegenüber den Table Service sehr gut: Task Dauer Bemerkung Ausgeührt Lokal Init Session Service Load session values Nur Abfrage. Kein Resultat da neue Session Save session values Neu Save session values Update Close session and delete all values Ausgeführt in einer Azure Web Rolle Init Session Service Load session values Nur Abfrage. Kein Resultat da neue Session Save session values Neue Werte speichern Save session values Update bestehender Werte Close session and delete all values Tabelle 5:Zeitmessung Blob Storage Auch mit massiv mehr Daten überzeugt die Performance mit Blob Storage. Das Speichern von Werten, mit jeweils Charakter, dauert ca. eine Sekunde. Auch nachdem Sessions als Blob gespeichert wurde, hat sich die Zugriffszeit nicht messbar verändert. Verarbeitete Requests: Folgende http Request werden abgesetzt: Blob Container initialisieren o Session Blob Laden o Session Blob speichern 37/68

71 o Metadaten speichern o Test mit gleichzeitigen Zugriffen: Auch das Verhalten des Blob Storage bei multiplen zugriffen ist gut. Es wurde mit 6 parallel laufenden Programmen getestet, welche jeweils 100 Sessions erstellen, die Werte schreiben und lesen. Alle 600 Sessions konnten ohne Problem geschrieben und wieder gelesen werden. Die Zugriffszeiten waren ca. 30 Prozent schlechter als wenn nur ein Programm auf den Blob zugreift. Allerdings ist hier schwierig zu sagen ob der Blob Storage, das Netzwerk oder das Verwendete Notebook der Flaschenhals war. Fazit Blob Storage für Sessions: Blob Storage eignet sich sehr gut um Session Informationen zu persistieren. Man kann die Komplexität des Zugriffs gut von einem Endanwender verbergen, und die Geschwindigkeit ist akzeptabel. 38/68

72 3.3.4 Session State Persistieren Prototyp #1 Basierend auf den Erkenntnissen der vorherigen Kapitel wird ein Prototyp eines in der Azure Cloud lauffähigen Webservice entwickelt, welcher Session Informationen mittels Blob Storage persistiert. Trotz der zufriedenstellenden Geschwindigkeit mit der ein Blob gelesen und geschrieben wird, muss sichergestellt werden, dass so wenig wie möglich auf den Blob Storage zugegriffen werden muss. Speziell da auf die Session Informationen primär lesend zugegriffen wird. Ein weiterer Aspekt, welcher berücksichtigt werden muss ist die Tatsache, dass die verschiedenen Webservice-Aufrufe nicht zwingend auf demselben Server ausgeführt werden. Auf folgendem Bild sieht man einen Client welcher drei Requests an eine Azure Worker-Role absetzt. Der erste Request initialisiert die Session, speichert sie einerseits Persistent in einem Azure Blob, und andererseits in einer in-memory Liste innerhalb der Worker-Role. Abbildung 13: Sessionstate in WCF Web Role mit Blob Storage Um dies zu erreichen wird dem Client neben der SessionID auch der Zeitstempel des Letzten Zugriffs auf die Session Informationen vom Blob zurückgegeben. Mit dieser Information kann auf der Web Role entschieden werden, ob die Session Informationen von einer Statischen Liste der Web Role gelesen werden können. Ist dies nicht der Fall, muss diese Statische Liste mit den aktuellen Werten des Blob Storage aktualisiert werden. 39/68

73 Session Recycling Da die Session mit diesem Modell im Azure Blob-Storage gespeichert wird, muss man sich aktiv darum kümmern, dass diese bei Nichtgebrauch auch wieder gelöscht werden. Dafür bietet sich eine Worker-Role an, welche periodisch alle im Blob-Storage gespeicherte Sessions überprüft, und Sessions, welche seit einer bestimmten Zeit nicht mehr verwendet wurden löscht. 40/68

74 Multi-Server Umgebung Die Azure Cloud ist prädestiniert um mehrere Instanzen eines Servers zwecks Skalierbarkeit und Elastizität zu verwenden. Das kann aber auch Probleme mit sich bringen. In einer Azure Applikation dürfen keine In-Memory Objekte über einen Methodenaufruf hinaus einfach so verwendet werden. Es kann sein das der nächste Aufruf auf einem anderen Server ankommt. Zum Verhalten des Azure Load-Balancer gibt keine leider Offizielle Dokumentation von Microsoft. In einigen Foren wird zwar behauptet, der Load-Balancer verteilt die Aufrufe nach dem Round-Robin verfahren, allerdings kommen eigene Tests nicht auf das gleiche Ergebniss. Tests vom Juni 2010 haben ergeben, dass Aufrufe eines bestimmten Client immer an dieselbe Azure Instanz weitergeleitet werden. Der Grund für das getestete Verhalten liegt im http Protokoll. Wenn das Keep-Alive Flag gesetzt ist, und die Requests kurz hintereinander ausgelöst werden, kommen alle Requests auf demselben Server an. Ist aber entweder die Zeitspanne zwischen den Requests zu gross, oder das Keep-Alive Flag im http-header nicht gesetzt, wird nach Round-Robin verteilt. Bei dem Test wurde mit mehreren Konsolen-Programmen auf einen Azure Webservice zugegriffen, welcher mit 5 Instanzen betrieben wurde. Das Resultat war, dass jeder Client immer auf den Server verbunden wurde, auf den er beim ersten Aufruf verbunden hat. Abbildung 14: Azure Load-Balancer Test 41/68

75 Abbildung 15: Azure Load-Balancer Dieses Verhalten kann man sich nun für Optimierungen zu Nutze machen, allerdings muss man den Fall eines Plötzlichen Instanz Wechsels trotzdem korrekt behandeln. 42/68

76 3.4 Applikationsserver In diesem Kapitel wird gezeigt wie ein Applikationsserver für die Cloud realisiert werden kann. Dafür werden die Erfahrungen der vorherigen Kapitel genutzt Scheduling und Asynchrone Tasks #1 Scheduling und Asynchrone Tasks ausführen sind zwei ähnliche Themen. Beim Scheduling geht es darum Periodisch in eine Zeitabstand eine Aktion auszuführen. Als Beispiel kann hier ein Importsystem dienen, welches alle 5 Minuten eine Date von einem FTP Server einliest, und die darin enthaltenen Informationen in einer Datenbank abspeichert. Bei einem Asynchronen Tasks geht es darum eine Aktion auszuführen, ohne das ein Benutzer, bzw. eine Client Applikation auf das Ende der Aktion warten muss. Als Beispiel kann hier ein Datenexport genommen werden, der zwar von einem Benutzer initiiert wird, auf dessen beendigung der Benutzer aber nicht warten will. In Windows Azure kann man Scheduling sowie Asynchrone Tasks mittels einer Worker-Role implementieren. Eine Worker-Role kann man mit einem Service Prozess vergleichen. Im Folgenden Beispiel sieht man die einfachste Implementation einer Worker-Role. Eine Worker-Role muss von RoleEntryPoint erben, damit sie initialisiert und gestoppt werden kann. In dem while(true) Ausdruck wird dann die Logik implementiert. public class WorkerRole : RoleEntryPoint { public override void Run() { // This is a sample worker implementation. Replace with your logic. Trace.WriteLine("WorkerRole1 entry point called", "Information"); } while (true) { Thread.Sleep(10000); Trace.WriteLine("Working", "Information"); } public override bool OnStart() { // Set the maximum number of concurrent connections ServicePointManager.DefaultConnectionLimit = 12; DiagnosticMonitor.Start("DiagnosticsConnectionString"); // For information on handling configuration changes // see the MSDN topic at RoleEnvironment.Changing += RoleEnvironmentChanging; 43/68

77 } return base.onstart(); private void RoleEnvironmentChanging(object sender, RoleEnvironmentChangingEventArgs e) { // If a configuration setting is changing if (e.changes.any(change => change is RoleEnvironmentConfigurationSettingChange)) { // Set e.cancel to true to restart this role instance e.cancel = true; } } } Tabelle 6: Default Worker-Role An folgendem Sequenz-Diagramm sieht man wie eine Worker-Role initialisiert und beendet wird. Abbildung 16: Worker-Role Sequenz Diagram Scheduler Hier sieht man die einfachste Implementation eines Scheduler. In dem while(true) Ausdruck wird eine gewisse Zeit gewartet und dann eine Aktion ausgelöst. public override void Run() { while (true) { //Wait 5 minute Thread.Sleep(1000 * 60 * 5); //Get file From FTP Server //Save the content of the file into SQL Azure 44/68

78 } } Tabelle 7: Einfache Scheduler Implementation Ist die Zeitdauer Relevant, muss man das ausführen der Aktion in einem separaten Thread starten, da ansonsten die effektive Zeit bis zur nächsten Ausführung höher ist Asynchrone Tasks Im Falle eines Asynchronen Tasks wird auch wieder wie in Tabelle 6: Default Worker-Role eine Worker-Role erstellt. Dieser Worker-Role muss man nun mitteilen, dass ein neuer Task zur Ausführung bereit steht. Dies kann man elegant mit Azure Queue Service 7 machen. Queue Service: Eine Azure Queue kann eine unlimitierte Anzahl an Nachrichten enthalten. Eine einzelne Nachricht darf nicht grösser als 8KB sein. Eine Nachricht wird grundsätzlich am Ende der Queue eingereiht, und vom Anfang der Queue gelesen. Dieses first in, first out Prinzip wird allerdings nicht garantiert. Wenn mehr Daten als 8KB gespeichert werden, kann man die Daten in einen Blob speichern, und in der Nachricht nur den Link darauf mitgeben. private void Enqueue() { CloudStorageAccount storageaccount = new CloudStorageAccount(new StorageCredentialsAccountAndKey(AccountName, SharedKey), false); CloudQueueClient queuestorage = storageaccount.createcloudqueueclient(); _queue = queuestorage.getqueuereference("mytestqueuestorage"); // create the message queue _queue.createifnotexist(); CloudQueueMessage message = new CloudQueueMessage(String.Format("{0},{1}","foo","bar")); } _queue.addmessage(message); Tabelle 8: Einstellen einer Nachricht in die Queue public override void Run() { while (true) { try { // retrieve a new message from the queue CloudQueueMessage msg = _queue.getmessage(); if (msg!= null) { // parse message retrieved from queue 7 45/68

79 string[] messageparts = msg.asstring.split(new char[] { ',' }); // remove message from queue _queue.deletemessage(msg); } else { System.Threading.Thread.Sleep(1000); } } catch (StorageClientException e) { Trace.TraceError("Exception when processing queue message. Message: '{0}'", e.message); Thread.Sleep(5000); } } } Tabelle 9: Verarbeiten von Queue Nachrichten Wichtig im Umgang mit Queues ist folgendes: Wird eine Nachricht mittels GetMessage() geholt, wird diese Nachricht nicht automatisch aus der Queue gelöscht. Es wird lediglich der DequeueCount der Nachricht inkrementiert, und diese Nachricht Steht für andere Queues für eine via NextVisibleTime definierbare Zeit nicht mehr zur Verfügung. Dies bedeutet der Entwickler muss sich darum kümmern das Nachrichten korrekt abgearbeitet und gelöscht werden. Man muss also diesen DeQueueCount überprüfen, und wenn der nicht 1 ist angemessen darauf reagieren. Hier kommt es auf die Art der Aktion darauf an. Es gibt Aktionen die kann man ein zweites Mal ausführen, und andere welche nicht in einem undefinierten Status bleiben dürfen. Ist dies der Fall, muss während dem abarbeiten der Status persistiert werden, damit man weiss wo es ein Problem gab, und man reagieren kann. 46/68

80 3.4.2 Umsystem einbinden #10 Was bei einer On-Premise Anwendung mit einer einfachen Schnittstelle gelöst werden kann, braucht für Azure ein bisschen mehr Aufwand. Es geht darum ein Umsystem, z.b. SAP welches On-Premise betreiben wird von der Cloud heraus anzusprechen. Abbildung 17: Umsystem Szenario In diesem Bespiel soll aus Azure heraus eine Person in SAP erfasst werden. Folgende, nicht abschliessende Liste zeigt Möglichkeiten diese Anforderung zu realisieren: Proprietäre Schnittstelle Webservice installiert On-Premise, welcher von Azure her zugänglich ist. FTP, Azure AppFabric Eine Proprietäre Schnittstelle sollte heutzutage aus verschiedenen Gründen wie grösserer Aufwand, oder wenige zu Verfügung stehenden Experten nicht realisiert werden. Ein Webservice bedingt Firewall/Netzwerk Konfiguration auf der Seite des Kunden, und ist daher auch nicht erste Wahl. Komplett verbindungslose verfahren wie ein von beiden Seiten zugänglicher FTP oder Server erfüllt eventuell nicht die Anforderungen an Aspekte wie Geschwindigkeit, Sicherheit oder Verfügbarkeit. Die Azure AppFabric hilft beim Verbinden von Applikationen und Services welche in der Azure Cloud oder On-Premise betreiben werden. Die AppFabric stellt einen Service Bus für die Verbindung über Netzwerk und Organisationsgrenzen hinaus zur Verfügung. Der Service Bus erlaubt es einer On- Premise betreiben WCF Applikation über eine Öffentlich zugängliche Adresse verfügbar zu machen. Dies kann helfen um verschieden Applikationen Kommunizieren zu lassen, ohne sich dabei über Netzwerke, NAT oder Firewall Gedanken zu machen. 47/68

81 Ein weiterer Teil der Azure AppFabric ist Federated Access Control, welcher es ermöglicht Benutzer zu Authentisieren. Auf diese Access Control wird aber nicht weiter eingegangen. Abbildung 18: Azure AppFabric Service Bus Umsetzung einer Schnittstelle mit Azure AppFabric Service-Komponente: Um die On-Premise Schnittstelle von überall her verfügbar zu machen, wird im Intranet ein Service gestartet welcher sich bei einem vorher erstellten AppFabric Service Bus anmeldet. Die Initialisierung der Kommunikation funktioniert zweistufig. Erst wird versucht mit nettcprelaybinding über Port mit der Azure AppFabric zu kommunizieren. Funktioniert dies nicht, wird die Kommunikation über http und Port 80 aufgebaut. In der Praxis hat sich jedoch gezeigt, dass dies nicht in jedem Fall funktioniert. So ist es im Moment nicht möglich einen solchen AppFabric Service Bus aus dem Glaux Soft AG Intranet zu registrieren 8, da die eingesetzte Firewall offensichtlich auch ausgehenden Verkehr kontrolliert und blockt. Nachtrag zu dem Verbindungsproblem: Wir haben das mit unserem Partner für Netzwerk analysiert, und die Probleme treten nur auf wenn auf der Checkpoint Firewall Version 70 das Monitoring aktiviert ist. Sobald das Traffic Monitoring deaktiviert wird, funktionieren der Verbindungsaufbau und die Kommunikation. Grund ist offensichtlich das Kommunikationsprinzip welches einen nicht endenden Stream erzeugt, und immer kleine Pakete zum Client überträgt. Die Firewall will aber erst den gesamten Stream erhalten, damit auf Potentielle Viren überprüft werden kann. Dieses Problem wurde mit einem Update der Checkpoint Firewall auf Version 71 gelöst /68

82 Als erstes definiert man ein Interface welches definiert wie und mit welchen Datenstrukturen der Service aufgerufen werden soll. Dies ist analog zu einem WCF Service. using System.Runtime.Serialization; using System.ServiceModel; namespace AppFabricCommon { [ServiceContract(Name = "PersonContract", Namespace = "http://samples.microsoft.com/servicemodel/relay/")] public interface IPersonContract { [OperationContract] bool IsAlive(); [OperationContract] void SavePerson(Person person) ; } [DataContract] public class Person { public int Id { get; set; } public string FirstName { get; set; } public string LastName{ get; set; } } } Tabelle 10: AppFabric Interface welches von Client und Server Verwendet wird. Danach wird der Service Bus mit dem eben erstellten Interface initialisiert, und auf der Azure App- Fabric registriert. Sobald host.open() ausgeführt wird, wird eine Verbindung zur Azure App-Fabric hergestellt, und diese exponiert dann den Service im Internet. static void Main(string[] args) { Console.Title = "AppFabric Person Service"; Console.WriteLine(".net version " + Environment.Version); //You can use the following line to force AppFabric to communicate over http ServiceBusEnvironment.SystemConnectivity.Mode = ConnectivityMode.Http; const string servicenamespacedomain = "TestAppFabric42"; const string issuername = "owner"; const string issuersecret = "a0mnywea4uwxyavnxdvm8qxru3pm/26bwui63fy/hm0="; // create the credential object for the endpoint TransportClientEndpointBehavior sharedsecretservicebuscredential = new TransportClientEndpointBehavior(); sharedsecretservicebuscredential.credentialtype = TransportClientCredential- Type.SharedSecret; sharedsecretservicebuscredential.credentials.sharedsecret.issuername = issuername; sharedsecretservicebuscredential.credentials.sharedsecret.issuersecret = issuersecret; // create the service URI based on the service namespace Uri address = ServiceBusEnvironment.CreateServiceUri("sb", servicenamespace- Domain, "PersonService"); // create the service host reading the configuration ServiceHost host = new ServiceHost(typeof(PersonService), address); 49/68

83 // create the ServiceRegistrySettings behavior for the endpoint IEndpointBehavior serviceregistrysettings = new ServiceRegistrySettings(DiscoveryType.Public); //host.addserviceendpoint("iechoservice", serviceregistrysettings); // add the Service Bus credentials to all endpoints specified in configuration foreach (ServiceEndpoint endpoint in host.description.endpoints) { endpoint.behaviors.add(serviceregistrysettings); endpoint.behaviors.add(sharedsecretservicebuscredential); } host.open(); Console.WriteLine("Service address: " + address + Environment.NewLine + Service- BusEnvironment.SystemConnectivity.Mode); Console.WriteLine("Press [Enter] to exit"); Console.ReadLine(); } } // close the service host.close(); Tabelle 11: AppFabric Service Bus Start Client: Den Client kann man dann wie einen gewöhnlichen WCF Client implementieren. Einzig um die ServiceUri und das TransportClientEndpointBehavior zu erstellen werden Komponenten des AppFabric SDK benötigt. Dieser Client kann dann von einem Beliebigen Rechner ausgeführt werden, und verbindet sich Via Azure AppFabric auf den Server der irgendwo in einem Intranet läuft. Für die Entwicklung eines Client ist es nicht nötig über Viel Azure Wissen zu verfügen. Auch hier gibt es im Moment allerdings Probleme den Client ohne weiteres auszuführen. Ist das App- Fabric SDK nicht installiert, fehlt in der.net Framework Machine.Config Datei ein Eintrag welcher nettcprelaybinding registriert. Auch in dem Offiziellen Microsoft Forum 9 gibt es bisslang noch keine Lösung für das Problem. Als Workaround muss man Momentan das AppFabric SDK auf dem Rechner installieren. static void Main(string[] args) { try { const string servicenamespacedomain = "TestAppFabric42"; const string issuername = "owner"; const string issuersecret = "a0mnywea4uwxyavnxdvm8qxru3pm/26bwui63fy/hm0="; // create the service URI based on the service namespace Uri serviceuri = ServiceBusEnvironment.CreateServiceUri("sb", service- NamespaceDomain, "PersonService"); // create the credentials object for the endpoint 9 50/68

84 TransportClientEndpointBehavior sharedsecretservicebuscredential = new TransportClientEndpointBehavior(); sharedsecretservicebuscredential.credentialtype = TransportClientCredential- Type.SharedSecret; sharedsecretservicebuscredential.credentials.sharedsecret.issuername = issuername; sharedsecretservicebuscredential.credentials.sharedsecret.issuersecret = issuersecret; // create the channel factory loading the configuration ChannelFactory<IPersonContract> channelfactory = new ChannelFactory<IPersonContract>("RelayEndpoint", new EndpointAddress(serviceUri)); // apply the Service Bus credentials channelfactory.endpoint.behaviors.add(sharedsecretservicebuscredential); // create and open the client channel IPersonContract channel = channelfactory.createchannel(); ((ICommunicationObject)channel).Open(); "kaderli" }); Console.WriteLine("Server is alive: {0}", channel.isalive()); channel.saveperson(new Person() { FirstName = "manuel", Id = 1, LastName = Console.WriteLine("New Person created"); Console.ReadLine(); } ((ICommunicationObject)channel).Close(); channelfactory.close(); } catch (Exception ex) { Console.WriteLine(ex.ToString()); Console.ReadLine(); } Tabelle 12: App Fabric Client Implementation Fazit Umsystem Einbinden: Es ist mit relative wenig Aufwand möglich eine Unidirektionale oder auf Bidirektionale Schnittstelle für die Azure Cloud zu realisieren. Einzig wenn die Netzwerk/Firewall Einstellungen eines Unternehmens sehr restriktiv sind, und ausgehende Verbindungen nach Inhalt oder Art filtern, kann es sein das Keine Kommunikation aufgebaut werden kann. In diesem Fall müssen dann wie bei einem Konventionellen Webservice die Netzwerkeinstellungen angepasst werden. Ein weiterer Punkt, welcher bei zeitkritischen Anwendungen wie einer Telefonier-Integration berücksichtigt werden muss, ist das bei der Verwendung der AppFabric als Service Bus immer eine gewisse Netzwerk-Latenz vorhanden sein wird. Weiter ist zu berücksichtigen, dass man selber für die Verfügbarkeit und die Performance der Schnittstelle verantwortlich ist. Die Azure AppFabric stellt nur den Service Bus, nicht aber den eigentlichen Service zur Verfügung. 51/68

85 Probleme beim Testen Um das Verhalten der AppFabric zu dokumentieren, wurde eine Testinstallation erstellt. Der verbindungsaufbau mit Azure funktionierte unter folgenden Umständen nicht: Innerhalb des GlauxSoft Netzwerk Geschützt mit einer CheckPoint Firewall Version 70 Während Fiddler 10 am Laufen ist. Die Firewall wie auch Fiddler analysieren den Content welcher über das Netzwerk versendet wird. Die Verbindung zur AppFabric wird mit einem nicht endenden Stream aufrechterhalten. Dies gibt Konflikte mit solchen Content Filtern, da diese den Stream erst fertig lesen wollen, und ihn erst dann an den Client zurückgeben. Nach einem Update der Firewall auf Version 71 tritt dieses Problem nicht mehr auf. Offensichtlich ist dieses Problem bekannt, und wird von Netzwerk-Herstellern in neuen Versionen Berücksichtigt. Es wurde auch ein Eintrag zu diesem Problem im Azure Forum 11 gestellt. Dieser Eintrag endete allerdings in einem Monolog, da dieses Problem zuvor offensichtlich noch niemand hatte. 3.5 Evidence Toolset Migration #8 Das evidence Framework besitzt ein Toolset mit welchem das evidence Datenbank Repositoy konfiguriert und verwaltet wird. Dieses Toolset besteht insbesondere aus folgenden Komponenten: Name Beschreibung EvidenceDBInstaller Wird verwendet um die Struktur und die Daten in eine existierende Datenbank zu installieren. EvidenceRepositoryUpdater Wird verwendet um ein bestehendes Repository auf eine neu Version zu aktualisieren, ohne dabei aber Daten zu verlieren. EvidenceDesignStudio Wird zum Erstellen und Verwalten der Repository Struktur verwendet. Tabelle 13: Toolset Überblick Da all diese Tools via tabular data streem(tds) direkt mit der SQL Datenbank Kommunizieren, ist es theoretisch möglich diese ohne Änderungen mit einer Azure SQL Datenbank zu verwenden. Prak /68

86 tisch ist es allerdings so, dass kleine Unterschiede zwischen einer SQL Datenbank und der Azure Datenbank existieren. All diese Toolsets verwenden ANSI SQL. Es werden keine Triggers, Stored Procedures,.net Erweiterungen oder sonstige SQL Server Spezialitäten verwendet. Daher muss einzig geklärt werden welche SQL Befehle auf Azure nicht funktionieren, und wie diese geändert werden können Von Evidence Verwendetet Datentypen Folgende Datentypen werden von Evidence für Repository und Runtime-Daten verwendet: Nvarchar Datetime Int Image Ntext Float Bit Text All diese Datentypen werden auch von SQL Azure unterstützt Migration einer bestehenden Datenbank Eine Bestehende evidence Datenbank auf funktioniert relativ Problemlos. Man kann mittels SQL Enterprise Manager ein SQL Script einer Datenbank für SQL Azure erstellen /68

87 Abbildung 19: Enterprise Manager Azure SQL Script Das einzige Problem bei der SQL Server 2008R2 CTP Version ist, dass beim SQL Script generieren nicht berücksichtigt wird das SQL Azure nicht mit Tabellen ohne clustered index umgehen kann. Somit funktionieren die so generierten Scripts nicht ohne Anpassungen. Abhilfe schafft hier das Tool SQL Azure Migration Wizard von der Codeplex Website 13 Dieses Tool analysiert die Probleme und Passt die SQL Scripts entsprechend an. Es ist zu erwarten das in einer Späteren Version des SQL Enterprise Manager dieser dieselbe Funktionalität bieten wird /68

88 Abbildung 20: SQL Azure Migration Wizard 55/68

89 3.5.3 Vorgehen Es gibt zwei Arten wie man vorgehen kann um diese Tools zu migrieren. Analyse der Unterschiede von Azure SQL zu SQL Server Trial and Error Die Analyse welche Unterschiede existieren ist sehr aufwändig, und offensichtlich auch nicht zu 100 Protzen möglich, da nicht alles Lückenlos Dokumentiert ist 14. Die praktikablere Lösung scheint Trial and Error zu sein. Das bedeutet man verbindet ein Tool mit einer SQL Azure Datenbank und analysiert bei welchem SQL Befehlen Fehler auftreten. Diese werden dann gelöst, und der nächste Versuch gestartet. Eine Möglichkeit dieses Vorgehen noch zu optimieren bietet wieder das Tool SQL Azure Migration Wizard, welches es ermöglicht ein SQL Trace File zu analysieren. Um das zu erreichen Führt man eine Aktion auf der Datenbank aus und erstellt davon mittels dem SQL Enterprise Manager ein Trace File. Dieses Trace File wird dann vom SQL Azure Migration Wizard analysiert, und man bekommt eine Detaillierte Auflistung von Befehlen welche auf SQL Azure nicht funktionieren werden. Hier ist nun eine nicht vollständige Liste mit SQL Befehlen welche angepasst werden müssen, damit das Toolkit für SQL Azure lauffähig wird: Es darf keine Tabellen ohne Index geben 15 Es darf keine System Tabellen verwendet werden 16. Sysconstaints/sysforeignkey/sysobjects Es darf keine System Stored Procedure verwendet werden: Sp_indexes/sp_addlogin Fazit Migration auf SQL Azure Eine Migration auf SQL Azure ist möglich, der Aufwand darf allerdings nicht unterschätzt werden. Für viele Befehle muss ein funktionierender SQL Azure Befehl gefunden werden, der auch was die Performance angeht akzeptabel ist. Da Systemtabellen auf SQL Azure nicht existieren, müssen befehle welche diese verwenden angepasst werden. Diese Informationen werden verwendet um generische abfragen zusammenzustellen. Diese Informationen müssen in einer Azure Implementation selbst in eigenen Tabellen verwaltet werden, damit der generische Ansatz der Abfragegenerierung weiterhin funktioniert /68

90 Wenn man diese Anpassungen macht, ist es naheliegend den gesamten Datenlayer des evidence Applikations-Servers Anzupassen. Aktuell werden mit if/else Befehlen im Sourcecode verschiedene SQL Abfragen für die diversen SQL Server Versionen, bzw. für Oracle zusammengestellt. Wird eine Migration auf SQL Azure gemacht, sollte der Datenlayer von evidence grundsätzlich bereinigt und optimiert werden. 57/68

91 3.6 Evidence Repository Konzept #2 Dieses Kapitel befasst sich mit ähnlichen Problemen wie das Kapitel Evidence Toolset Migration. Im vorherigen Kapitel wurde erläutert welche Anpassungen nötig sind um eine evidence Datenbank auf SQL Azure zu installieren und mit den evidence Tools zu verwalten. Hier geht es nun darum welche Änderungen an der Datenbank nötig sind damit der Applikationsserver zusammen mit einer Azure SQL Datenbank funktioniert. Um dies zu analysieren werden SQL Befehle welchen von einem evidence Applikationsserver abgesetzt werden auf SQL Azure Kompatibilität geprüft. Mittels SQL Profiler werden alle SLQ Befehle welche von Unit Tests auf einen evidence Applikations-Server aufgerufen werden in ein Trace File gespeichert. Dieses wird dann mit dem SQL Azure Migration Wizard analysiert. Eine Analyse von SQL Befehle des evidence Applikationsserver hat ergeben, dass alles Funktioniert. Dies ist natürlich nicht abschliessend, gibt aber einen Indikator der Aufzeigt das die Grundlegenden Funktionen(Login/CRUD/Berechtigungsverwaltung/Profilverwaltung/Abfragen/Reporting) ohne Anpassungen funktionieren 58/68

92 3.7 Kommunikation Konzept #3 Die jetzigen Client-Anwendungen kommunizieren via.net Remoting mit dem bestehenden evidence Applikations-Server. Momentan wird der Kommunikations-Kanal unabhängig von dieser Diplomarbeit auf WCF umgebaut. Damit ist bereits eine sehr gute Grundlage geschaffen, um den Applikations-Server in Azure zu Betreiben. In Kapitel Azure Informationen werden die Kommunikations-Möglichkeiten von Windows Azure beschrieben. Als einzige Voraussetzung muss dann der Applikationsserver dann als Worker-Role gestartet werden, damit die WCF Endpoints selbst verwaltet werden können. Die Grundlagen einer Worker-Role sind im Kapitel Scheduling und Asynchrone Tasks beschrieben. Grundsätzlich kann man die Worker-Role für diesen Anwendungsfall als eine Art Service-Starter benutzen, und dann beliebige WCF Service Starten. 59/68

93 3.8 Deployment und Maintenance Konzept #9 Ein evidence Projekt besteht aus diversen Komponenten, wovon einige vom evidence Framework gestellt werden, und andere Projektspezifisch sind. Die Datenbank besteht aus einem Repository(Strukturdaten) und Runtime-Daten(Laufzeitdaten). Beide können bei jeder Kundenspezifischen Installation verschieden aufgebaut sein, basieren aber immer auf einer evidence Framework Repository Version. Ähnlich wie die Datenbank besteht auch die eigentliche Applikation(Client und Server) einerseits aus evidence Framework Komponenten, und andererseits aus Projektspezifischen Komponenten(dll/exe). Windows Azure bietet mit dem in Kapitel Staging und Production beschriebenen Ansatz eine Möglichkeit um eine Web oder Worker Role zu aktualisieren. Dies funktioniert allerdings nur für den Fall, dass bei einem Webservice das API entweder nicht verändert wurde, oder nur erweitert wurde. Mit diesem Ansatz kann man ohne Unterbruch neue Versionen in Azure verteilen. Es gibt allerdings in Zusammenhang mit API und Datenbank Änderungen Situationen in welchen kein Unterrichtsfreies Update durchgeführt werden kann. Es muss also unterschieden werden ob mit dem Update ein Fehler in der Business Logik behoben werden soll, oder ob strukturelle Änderungen am API, bzw. an der Datenbank vorgenommen werden. Im Falle von strukturellen Änderungen muss man ein Update in einem Zeitfenster einplanen, und die Applikation unerreichbar machen. 60/68

94 3.9 Azure Kosten Hier geht es darum die Infrastrukturkosten für eine evidence Installation in der Azure Cloud abzuschätzen. Die Schätzung bezieht sich auf eine CRM Installation mit ca. 30 Benutzern. Die Kosten pro Jahr belaufen sich auf ca Dollar. Diese Zahlen müssen sobald vorhanden mit den effektiven Werten verglichen und evtl. angepasst werden. Abbildung 21: Azure Kosten Diese Zahlen sind gegen ein On Premise Hosting bei einem grossen Anbieter mit ähnlichen SLA absolut konkurrenzfähig, beziehungsweise günstiger. Noch besser wird es wenn man grössere Installationen machen kann, bzw. eine Installation Multiplizieren kann. 61/68

95 3.10 Offene Fragen evidence zu Azure Migration Folgende Punkte waren nicht Teil der Master Thesis, müssen aber im Falle eines Umbaus noch berücksichtigt werden. Offene Fragen Beschreibung Azure Tauglichkeit von momentan verwendeten 3th Party Komponenten Aspose(Word/Excel/Pdf erstellung) Chillkat( Versand) Active Reports(Reporting) Projektspezifische Komponenten Alle Komponenten müssen getestet warden. Security Verschlüsselung der Datenübertragung und der Daten selbst, sowie authentisierungs-möglichkeiten. Beides ist möglich, muss aber noch näher analysiert werden. Backup Backup erstellen/einspielen von Applikationsdaten und Nutzdaten. Ist möglich, muss aber noch getestet werden. Verhalten bei Nicht-Verfügbarkeit Sollte die Azure Cloud, oder das Internet ausfallen sind die evidence Applikation und die Daten nicht mehr verfügbar. Wie muss damit umgegangen werden? Com/System32 Com, bzw. System32 Aufrufe müssen eliminiert werden, und mit.net Funktionalität ersetzt werden. Daten Layer Wird der Daten Layer für Azure angepasst, macht es Sinn diesen komplett neu aufzubauen, um eine Saubere Trennung aller Unterstützten Datenbanken zu erreichen. Dies ist heute im Code mit if/else Bedingungen gelöst. Tabelle 14: Offene Fragen 62/68

96 4 Prototype 4.1 Anforderungen Die Anforderungen an den Prototyp sind in dem von Beat Kiener geschriebenen Dokument #2 BeschreibungPrototypMasterthesisKaderli.pdf beschrieben. Kurz zusammengefasst geht es darum alle relevanten Aspekte von Azure in einem Prototyp zusammenzufassen, und zu testen. Abbildung 22: Überblick Architektur Prototyp 63/68

97 4.2 Umsetzung Der Prototyp wird mit einem einfachen Modell umgesetzt. cmp Design Model AzureClient ILogonService IPerson Service AzureWorkerRole «use» AzureServ ice «use» AzureServ er «use» «use» AzureCommon «use» AzureDataAccess Abbildung 23: Prototyp Modell AzureService: sind die WCF Service mit welchen der Client Kommuniziert. Diese beinhalten keine Funktionalität, sondern sind nur für die Kommunikation zuständig. Die effektive Logik wird in der AzureServer Komponente umgesetzt. AzureServer: ist WCF und Azure unabhängig, und kann daher mit den in Visual Studio eingebauten Unit Tests getestet werden. In dieser Komponente ist auch die gerammte Session Management Funktionalität. AzureCommon: beinhaltet die Rückgabe Typen, sowie Typen welche auch vom Client verwendet werden. AzureDataAccess: bietet die Schnittstelle zu SQL Azure. Der Zugriff erfolgt über den.net SqlClient. AzureWorkerRole: ist in diesem Prototyp ein Scheduler, welcher jede Minute eine Operation auf persistierten Objekten durchführt. 64/68

98 AzureClient: ist der Client mit welchem die Funktionalität getestet wird. Abbildung 24: Client Prototyp 4.3 Erfahrungen Um eine Applikation für Azure zu bauen ist ein Grundsätzliches Verständnis der Azure Plattform Voraussetzung. Ist diese Voraussetzung erfüllt, kann eine Applikation für Azure ähnlich schnell entwickelt werden wie eine normale Umgebung. Lösungsneutrale Teile wie zum Beispiel das Session Management oder der Daten Zugriff sollten einmal unter Berücksichtigung aller Eventualitäten gelöst werden. Kann man auf solche Komponenten aufbauen entfällt der grösste Teil des Aufwands welcher durch die Azure Plattform verursacht wird. Das verwendete Modell beinhaltet einen WCF Service welcher keine Logik verwendet, und nur als Durchlauferhitzer dient. Dies wurde aufgrund der Testbarkeit gemacht. Es ist nicht klar ob dies eine optimale Lösung ist. Eine weitere interessante Erfahrung mit diesem Prototyp ist, dass es nicht möglich ist zwei Web Rollen auf einer Instanz und demselben Port laufen zu lassen. Hat man diese Anforderung wenn man z.b. eine Website und ein WCF Service hat, muss eine Web Rolle mit Port 80 und die zweite mit 65/68

99 Port 8080 betrieben werden. Da andere Ports für die Web Rollen nicht zur Verfügung stehen, können pro Instanz maximal zwei Web Rollen betrieben werden. Datum Werte wurden in diesem Prototyp mit dem Datentyp String umgesetzt. Es wurde das Format yyyymmddhhmmss verwendet. Erst wenn mit dem Datum Berechnungen gemacht werden, wird es Konvertiert. Auch hier ist nicht klar ob dies eine Optimale Lösung ist. 4.4 Probleme Das grösste Problem bei diesem Prototyp bestand im Deployment. Aus unerklärlichen Gründen Funktionierte das Deployment der Worker Rolle nach einiger Zeit nicht mehr. Dieses Problem scheint bekannt zu sein 17, allerdings wird keine Lösung dafür angeboten. Da auch ein erfolgreiches Deployment einer kleinen Anwendung 20 Minuten dauert, ist es sehr Langwierig das Problem zu Lokalisieren. Auch mit einer Hilfeseite 18 von Microsoft ist es nicht gelungen das Problem für eine Existierende Worker-Rolle zu lösen. Es mit einem kompletten neu Aufsetzten der Lösung funktionierte das Deployment schlussendlich. 10:36:45 - Preparing... 10:36:45 - Connecting... 10:36:47 - Uploading... 10:36:51 - Creating... 10:37:46 - Starting... 10:38:28 - Initializing... 10:38:28 - Instance 0 of role AzureWorkerRole is initializing 10:45:57 - Instance 0 of role AzureWorkerRole is busy 10:46:31 - Instance 0 of role AzureWorkerRole is initializing 10:47:39 - Instance 0 of role AzureWorkerRole is busy 10:48:14 - Instance 0 of role AzureWorkerRole is initializing 10:49:23 - Instance 0 of role AzureWorkerRole is busy 10:49:58 - Instance 0 of role AzureWorkerRole is initializing 10:51:06 - Instance 0 of role AzureWorkerRole is busy 10:51:41 - Instance 0 of role AzureWorkerRole is initializing 10:55:07 - Warning: Instance 0 of role AzureWorkerRole appears to be cycling and unable to start. 10:56:15 - Instance 0 of role AzureWorkerRole is stopped 10:56:15 - Warning: Instance 0 of role AzureWorkerRole appears to be cycling and unable to start. 11:11:38 - Warning: Instance 0 of role AzureWorkerRole appears to be cycling and unable to start. 11:12:48 - Instance 0 of role AzureWorkerRole is busy 11:13:22 - Instance 0 of role AzureWorkerRole is initializing 11:13:22 - Warning: Instance 0 of role AzureWorkerRole appears to be cycling and unable to start. 11:14:31 - Instance 0 of role AzureWorkerRole is busy Tabelle 15: Fehler bei Deployment 17 DE/?query=%22Is%20busy%22&rq=meta:Search.MSForums.ForumID%282a0dd604-c492-42e8-87e9- ad1d0f85537b%29+site:microsoft.com&rn=windows+azure+forum /68

100 5 Anhang 5.1 Tabellenverzeichnis Tabelle 1: Vor und Nachteile evidence goes Azure...7 Tabelle 2: Session Blob Storage API Tabelle 3: Laden von Session Werten via Blob Storage Tabelle 4: Speichern von Session Werten via Blob Storage Tabelle 5:Zeitmessung Blob Storage Tabelle 6: Default Worker-Role Tabelle 7: Einfache Scheduler Implementation Tabelle 8: Einstellen einer Nachricht in die Queue Tabelle 9: Verarbeiten von Queue Nachrichten Tabelle 10: AppFabric Interface welches von Client und Server Verwendet wird Tabelle 11: AppFabric Service Bus Start Tabelle 12: App Fabric Client Implementation Tabelle 13: Toolset Überblick Tabelle 14: Offene Fragen Tabelle 15: Fehler bei Deployment Abbildungsverzeichnis Abbildung 1: Microsoft Azure Cloud Plattform...5 Abbildung 2: evidence Framework...6 Abbildung 3: evidence Application Framework...6 Abbildung 4: MMC Azure Plugin...9 Abbildung 5: Production und Staging Abbildung 6: Ablauf Übergang Staging zu Production wenn Clients verbunden sind Abbildung 7: Staging und Production, Zugriff auf verschiedene Versionen Abbildung 8: Staging und Production, Zugriff auf dieselbe Version, nachdem Staging gestoppt wurde 13 Abbildung 9: Web/Worker Role in Visual Studio Abbildung 10: WCF in Development Fabric debuggen Abbildung 11: Azure Storage Konzept Abbildung 12: SQL Azure Firewall Einstellungen Abbildung 13: Sessionstate in WCF Web Role mit Blob Storage Abbildung 14: Azure Load-Balancer Test Abbildung 15: Azure Load-Balancer Abbildung 16: Worker-Role Sequenz Diagram Abbildung 17: Umsystem Szenario Abbildung 18: Azure AppFabric Service Bus Abbildung 19: Enterprise Manager Azure SQL Script Abbildung 20: SQL Azure Migration Wizard /68

101 Abbildung 21: Azure Kosten Abbildung 22: Überblick Architektur Prototyp Abbildung 23: Prototyp Modell Abbildung 24: Client Prototyp /68

102 goes Azure

103 Wer präsentiert?

104 Manuel Kaderli

105 Glaux Soft AG Bern

106

107

108

109 Kann evidence in der AzureCloud betrieben werden?

110 Was ist evidence?

111 Applikation Framework

112

113 Datengetriebene Anwendungen

114

115

116

117

118

119

120

121

122

123 Was ist Azure?

124

125

126 Glaux Soft / 25

127 Glaux Soft / 26

128 Glaux Soft / 27

Diplomarbeit: evidence goes Azure

Diplomarbeit: evidence goes Azure 0 Diplomarbeit: evidence goes Azure Pflichtenheft Projekt: Thema: Version: 1.1 evidence goes Azure evidence in der Cloud betreiben _MasterThesis.docx Abstract: Den.net basierenden Applikationsserver evidence

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

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

GeoShop Netzwerkhandbuch

GeoShop Netzwerkhandbuch Technoparkstrasse 1 8005 Zürich Tel.: 044 / 350 10 10 Fax.: 044 / 350 10 19 GeoShop Netzwerkhandbuch Zusammenfassung Diese Dokumentation beschreibt die Einbindung des GeoShop in bestehende Netzwerkumgebungen.

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

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

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

Ruben Deyhle 11.02.2011 Proseminar Konzepte für Daten- und Prozess-Management. Cloud Computing mit Windows Azure

Ruben Deyhle 11.02.2011 Proseminar Konzepte für Daten- und Prozess-Management. Cloud Computing mit Windows Azure Ruben Deyhle 11.02.2011 Proseminar Konzepte für Daten- und Prozess-Management Cloud Computing mit Windows Azure 2 Ablauf Charakterisierung Aufbau von Windows Azure Compute-, Storage- und Datenbank-Dienst

Mehr

Whitepaper Externe Speicherung von Binary Large Objects (BLOBs) mit SharePoint 2007 sowie SQL Server 2005 / 2008

Whitepaper Externe Speicherung von Binary Large Objects (BLOBs) mit SharePoint 2007 sowie SQL Server 2005 / 2008 Externe Speicherung von Binary Large Objects (BLOBs) mit SharePoint 2007 sowie SQL Andreas Glaser, 23. September 2008 Teufenerstrasse 19 CH 9001 St.Gallen t [+41] 71 228 67 77 f [+41] 71 228 67 88 info@namics.com

Mehr

Mobile Backend in. Cloud. Azure Mobile Services / Websites / Active Directory /

Mobile Backend in. Cloud. Azure Mobile Services / Websites / Active Directory / Mobile Backend in Cloud Azure Mobile Services / Websites / Active Directory / Einführung Wachstum / Marktanalyse Quelle: Gartner 2012 2500 Mobile Internet Benutzer Desktop Internet Benutzer Internet Benutzer

Mehr

SQL Azure Technischer Überblick. Steffen Krause Technical Evangelist Microsoft Deutschland GmbH http://blogs.technet.com/steffenk

SQL Azure Technischer Überblick. Steffen Krause Technical Evangelist Microsoft Deutschland GmbH http://blogs.technet.com/steffenk SQL Azure Technischer Überblick Steffen Krause Technical Evangelist Microsoft Deutschland GmbH http://blogs.technet.com/steffenk Haftungsausschluss Microsoft kann für die Richtigkeit und Vollständigkeit

Mehr

Installationsanleitung MS SQL Server 2005. für Sage 50 Ablage & Auftragsbearbeitung. Sage Schweiz AG D4 Platz 10 CH-6039 Root Längenbold

Installationsanleitung MS SQL Server 2005. für Sage 50 Ablage & Auftragsbearbeitung. Sage Schweiz AG D4 Platz 10 CH-6039 Root Längenbold Installationsanleitung MS SQL Server 2005 für Sage 50 Ablage & Auftragsbearbeitung Sage Schweiz AG D4 Platz 10 CH-6039 Root Längenbold Inhaltsverzeichnis 1. GRUNDSÄTZLICHES... 3 2. SQLExpress Installationsanleitung

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

Systemvoraussetzungen Windows Server 2008 Windows Server 2008 R2

Systemvoraussetzungen Windows Server 2008 Windows Server 2008 R2 Systemvoraussetzungen Windows Server 2008 Windows Server 2008 R2 Basis: HiScout 2.5 Datum: 17.06.2015 14:05 Autor(en): HiScout GmbH Version: 1.1 Status: Freigegeben Dieses Dokument beinhaltet 13 Seiten.

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

Cloud-Computing Seminar (CLCP) Universität Heidelberg

Cloud-Computing Seminar (CLCP) Universität Heidelberg Fikret Kaplan Cloud-Computing Seminar Universität Heidelberg SS2009 1/35 Cloud-Computing Seminar (CLCP) Universität Heidelberg Fikret Kaplan Universität Heidelberg kaplan.fikret@gmail.com 25.5.2009 Fikret

Mehr

BETRIEB UND ENTWICKLUNG MIT DER MICROSOFT CLOUD

BETRIEB UND ENTWICKLUNG MIT DER MICROSOFT CLOUD BETRIEB UND ENTWICKLUNG MIT DER MICROSOFT CLOUD VM Role, Azure Services, SharePoint Online TechSummit Cloud 2011 28.03. 08.04.2011 Holger Sirtl Architect Evangelist, Microsoft Deutschland GmbH SCHICHTEN

Mehr

KURZANLEITUNG CLOUD BLOCK STORAGE

KURZANLEITUNG CLOUD BLOCK STORAGE KURZANLEITUNG CLOUD BLOCK STORAGE Version 1.12 01.07.2014 SEITE _ 2 INHALTSVERZEICHNIS 1. Einleitung......Seite 03 2. Anlegen eines dauerhaften Block Storage...Seite 04 3. Hinzufügen von Block Storage

Mehr

Session Storage im Zend Server Cluster Manager

Session Storage im Zend Server Cluster Manager Session Storage im Zend Server Cluster Manager Jan Burkl System Engineer, Zend Technologies Agenda Einführung in Zend Server und ZSCM Überblick über PHP Sessions Zend Session Clustering Session Hochverfügbarkeit

Mehr

Technische Beschreibung: EPOD Server

Technische Beschreibung: EPOD Server EPOD Encrypted Private Online Disc Technische Beschreibung: EPOD Server Fördergeber Förderprogramm Fördernehmer Projektleitung Projekt Metadaten Internet Foundation Austria netidee JKU Linz Institut für

Mehr

Mobile Agenten am Beispiel JADE (Java Agent DEvelopment Framework) Vorstellung in der Übung zu Konzepte Verteilter Systeme

Mobile Agenten am Beispiel JADE (Java Agent DEvelopment Framework) Vorstellung in der Übung zu Konzepte Verteilter Systeme Mobile Agenten am Beispiel JADE (Java Agent DEvelopment Framework) Vorstellung in der Übung zu Konzepte Verteilter Systeme Agenda Mobile Agenten allgemein JADE - Java Agent DEvelopment Framework Anwendungsfall

Mehr

Dateisysteme mit Plugin-Funktion

Dateisysteme mit Plugin-Funktion Dateisysteme mit Plugin-Funktion Basierend auf Reiser 4 unter Linux http://llugb.amsee.de/logo.gif Ausgearbeitet und vorgetragen von Michael Berger 1/23 Agenda Die Idee Dateisysteme mit Plugin-Funktion

Mehr

MySQL Community Server 5.1 Installationsbeispiel

MySQL Community Server 5.1 Installationsbeispiel MySQL Community Server 5.1 Installationsbeispiel Dieses Dokument beschreibt das Herunterladen der Serversoftware, die Installation und Konfiguration der Software. Bevor mit der Migration der untermstrich-datenbank

Mehr

Spezifikationen und Voraussetzung

Spezifikationen und Voraussetzung Projekt IGH DataExpert Yellowbill Adapter Spezifikationen Voraussetzungen Datum : 22.08.2013 Version : 1.0.0.2 22.08.2013 Seite 1 von 7 Inhaltsverzeichnis 1 Einleitung...3 2 Architektur...3 2.1 Grundsätze

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

Hinweise zu A-Plan 2009 SQL

Hinweise zu A-Plan 2009 SQL Hinweise zu A-Plan 2009 SQL Für Microsoft Windows Copyright Copyright 2008 BRainTool Software GmbH Inhalt INHALT 2 EINLEITUNG 3 WAS IST A-PLAN 2009 SQL? 3 WANN SOLLTE A-PLAN 2009 SQL EINGESETZT WERDEN?

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

Howto. Konfiguration eines Adobe Document Services

Howto. Konfiguration eines Adobe Document Services Howto Konfiguration eines Adobe Document Services (ADS) Inhaltsverzeichnis: 1 SYSTEMUMGEBUNG... 3 2 TECHNISCHE VERBINDUNGEN ZWISCHEN DEN SYSTEMEN... 3 2.1 PDF BASIERENDE FORMULARE IN DER ABAP UMGEBUNG...

Mehr

Marketing Update. Enabler / ENABLER aqua / Maestro II

Marketing Update. Enabler / ENABLER aqua / Maestro II Marketing Update Enabler / ENABLER aqua / Maestro II Quartal 01/2013 1 Kommentar des Herausgebers Liebe Kunden und Partner, dieser Marketing Update gibt Ihnen einen kurzen Überblick über die aktuell verfügbaren

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

2. Sie sind der Administrator Ihres Netzwerks, das den SBS 2011 Standard ausführt.

2. Sie sind der Administrator Ihres Netzwerks, das den SBS 2011 Standard ausführt. Arbeitsblätter Der Windows Small Business Server 2011 MCTS Trainer Vorbereitung zur MCTS Prüfung 70 169 Aufgaben Kapitel 1 1. Sie sind der Administrator Ihres Netzwerks, das den SBS 2011 Standard ausführt.

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

Merkblatt: HSM. Version 1.01. Systemvoraussetzungen, Setup und Trouble Shooting. pdfsupport@pdf-tools.com

Merkblatt: HSM. Version 1.01. Systemvoraussetzungen, Setup und Trouble Shooting. pdfsupport@pdf-tools.com Merkblatt: HSM Version 1.01 Systemvoraussetzungen, Setup und Trouble Shooting Kontakt: pdfsupport@pdf-tools.com Besitzer: PDF Tools AG Kasernenstrasse 1 8184 Bachenbülach Schweiz www.pdf-tools.com Copyright

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

Cloud! dotnet Usergroup Berlin. Sein oder nicht sein!?! Robert Eichenseer robert.eichenseer@conplement.de

Cloud! dotnet Usergroup Berlin. Sein oder nicht sein!?! Robert Eichenseer robert.eichenseer@conplement.de dotnet Usergroup Berlin Cloud! Sein oder nicht sein!?! Robert Eichenseer robert.eichenseer@conplement.de conplement AG Südwestpark 92 90449 Nürnberg http://www.conplement.de/roberteichenseer.html 1 conplement

Mehr

Zend PHP Cloud Application Platform

Zend PHP Cloud Application Platform Zend PHP Cloud Application Platform Jan Burkl System Engineer All rights reserved. Zend Technologies, Inc. Zend PHP Cloud App Platform Ist das ein neues Produkt? Nein! Es ist eine neue(re) Art des Arbeitens.

Mehr

MVB3. Einrichten eines Servers für MVB3 ab Version 3.5. Admin-Dokumentation. Inhalt V3.05.001

MVB3. Einrichten eines Servers für MVB3 ab Version 3.5. Admin-Dokumentation. Inhalt V3.05.001 V3.05.001 MVB3 Admin-Dokumentation Einrichten eines Servers für MVB3 ab Version 3.5 Inhalt Organisatorische Voraussetzungen... 1 Technische Voraussetzungen... 1 Konfiguration des Servers... 1 1. Komponenten

Mehr

Live aus der Cloud. im Kundeneinsatz. Michael Flum Business Development Manager

Live aus der Cloud. im Kundeneinsatz. Michael Flum Business Development Manager Live aus der Cloud im Kundeneinsatz Michael Flum Business Development Manager IT Computing Power ist billige Massenware! 1 GB/h 1 Server/M 1 Instance/M $0,11 (1 19,99 (2 42,52 (3 (1 Preis für Europa

Mehr

4D Server v12 64-bit Version BETA VERSION

4D Server v12 64-bit Version BETA VERSION 4D Server v12 64-bit Version BETA VERSION 4D Server v12 unterstützt jetzt das Windows 64-bit Betriebssystem. Hauptvorteil der 64-bit Technologie ist die rundum verbesserte Performance der Anwendungen und

Mehr

After fire and the wheel, cloud is the new game changer.

After fire and the wheel, cloud is the new game changer. Strategie Leistungsumfang Einstiegspunkte Status Ein- Aussichten After fire and the wheel, cloud is the new game changer. Montreal Gazette, November 2011 Microsoft's Plattform Strategie You manage You

Mehr

KURZANLEITUNG CYBERDUCK MIT CLOUD OBJECT STORAGE

KURZANLEITUNG CYBERDUCK MIT CLOUD OBJECT STORAGE KURZANLEITUNG CYBERDUCK MIT CLOUD OBJECT STORAGE Version 1.12 01.07.2014 SEITE _ 2 INHALTSVERZEICHNIS 1. Einleitung...Seite 03 2. Zugriff auf Cloud Object Storage mit Cyberduck...Seite 04 3. Neuen Container

Mehr

Spezifikationen und Voraussetzung

Spezifikationen und Voraussetzung Projekt IGH DataExpert Paynet Adapter Spezifikationen Voraussetzungen Datum : 21.07.08 Version : 1.0.0.2 21.07.2008 Seite 1 von 7 Inhaltsverzeichnis 1 Einleitung... 3 2 Architektur... 3 2.1 Grundsätze

Mehr

Selectron Fleet Diagnosis

Selectron Fleet Diagnosis Selectron Fleet Diagnosis Roland Krummenacher Senior Software Engineer Selectron Fleet Diagnosis Die Selectron Fleet Diagnosis ermöglicht es, eine Ferndiagnose eines Zugs im laufenden Betrieb zu erstellen.

Mehr

R im Enterprise-Modus

R im Enterprise-Modus R im Enterprise-Modus Skalierbarkeit, Support und unternehmensweiter Einsatz Dr. Eike Nicklas HMS Konferenz 2014 Was ist R? R is a free software environment for statistical computing and graphics - www.r-project.org

Mehr

Migrationsanleitung von 2.0 auf 2.1

Migrationsanleitung von 2.0 auf 2.1 Die wichtigste Neuerung von 2.0 auf 2.1 aus Sicht der Anwendungs- Migration ist die Verwendung von Maven. Mit Maven holt sich die Anwendung alle notwendigen Bibliotheken in den jeweils angegebenen Versionen

Mehr

Von 0 zur Private Cloud in 1h

Von 0 zur Private Cloud in 1h Von 0 zur Private Cloud in 1h - oder wie baue ich mir eine Demoumgebung Bernhard Frank Technical Evangelist Microsoft Deutschland GmbH Carsten Rachfahl MVP Virtual Machine Rachfahl IT Solutions Wieviele

Mehr

DDBAC-SDK unter Linux (mit Wine) Installationsanleitung

DDBAC-SDK unter Linux (mit Wine) Installationsanleitung DDBAC-SDK unter Linux (mit Wine) Installationsanleitung Installation von Wine Einleitung Übersicht Titel Thema Datei DDBAC-SDK unter Linux (mit Wine) Installationsanleitung DDBAC_Wine_Installation.doc

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

:: Anleitung First Connection 1cloud.ch ::

:: Anleitung First Connection 1cloud.ch :: :: one source ag :: Technopark Luzern :: D4 Platz 4 :: CH-6039 Root-Längenbold LU :: :: Fon +41 41 451 01 11 :: Fax +41 41 451 01 09 :: info@one-source.ch :: www.one-source.ch :: :: Anleitung First Connection

Mehr

Jörg Neumann Acando GmbH

Jörg Neumann Acando GmbH Jörg Neumann Acando GmbH Jörg Neumann Principal Consultant bei der Acando GmbH MVP Windows Platform Development Beratung, Training, Coaching Buchautor, Speaker Mail: Joerg.Neumann@Acando.com Blog: www.headwriteline.blogspot.com

Mehr

TimePunch Server v1.7

TimePunch Server v1.7 TimePunch TimePunch Server v1.7 Benutzerhandbuch 06.04.2015 TimePunch KG, Wormser Str. 37, 68642 Bürstadt Dokumenten Information: Dokumenten-Name Benutzerhandbuch, TimePunch Server v1.7 Revisions-Nummer

Mehr

A-Plan 2010 SQL. Hinweise zur SQL-Version von A-Plan. Copyright. Warenzeichenhinweise

A-Plan 2010 SQL. Hinweise zur SQL-Version von A-Plan. Copyright. Warenzeichenhinweise A-Plan 2010 SQL Hinweise zur SQL-Version von A-Plan Copyright Copyright 1996-2010 braintool software gmbh Kein Teil dieses Handbuches darf ohne ausdrückliche Genehmigung von braintool software gmbh auf

Mehr

Sind Cloud Apps der nächste Hype?

Sind Cloud Apps der nächste Hype? Java Forum Stuttgart 2012 Sind Cloud Apps der nächste Hype? Tillmann Schall Stuttgart, 5. Juli 2012 : Agenda Was sind Cloud Apps? Einordnung / Vergleich mit bestehenden Cloud Konzepten Live Demo Aufbau

Mehr

.NET-Networking 2 Windows Communication Foundation

.NET-Networking 2 Windows Communication Foundation .NET-Networking 2 Windows Communication Foundation Proseminar Objektorientiertes Programmieren mit.net und C# Fabian Raab Institut für Informatik Software & Systems Engineering Agenda Grundproblem Bestandteile

Mehr

Windows Server 2012 R2

Windows Server 2012 R2 Windows Server 2012 R2 Eine Übersicht Raúl B. Heiduk (rh@pobox.com) www.digicomp.ch 1 Inhalt der Präsentation Die wichtigsten Neuerungen Active Directory PowerShell 4.0 Hyper-V Demos Fragen und Antworten

Mehr

Softwareanforderungen für Microsoft Dynamics CRM Server 2015

Softwareanforderungen für Microsoft Dynamics CRM Server 2015 Softwareanforderungen für Microsoft Dynamics CRM Server 2015 https://technet.microsoft.com/de-de/library/hh699671.aspx Windows Server-Betriebssystem Microsoft Dynamics CRM Server 2015 kann nur auf Computern

Mehr

Powermanager Server- Client- Installation

Powermanager Server- Client- Installation Client A Server Client B Die Server- Client- Funktion ermöglicht es ein zentrales Powermanager Projekt von verschiedenen Client Rechnern aus zu bedienen. 1.0 Benötigte Voraussetzungen 1.1 Sowohl am Server

Mehr

estos XMPP Proxy 5.1.30.33611

estos XMPP Proxy 5.1.30.33611 estos XMPP Proxy 5.1.30.33611 1 Willkommen zum estos XMPP Proxy... 4 1.1 WAN Einstellungen... 4 1.2 LAN Einstellungen... 5 1.3 Konfiguration des Zertifikats... 6 1.4 Diagnose... 6 1.5 Proxy Dienst... 7

Mehr

Tapps mit XP-Mode unter Windows 7 64 bit (V2.0)

Tapps mit XP-Mode unter Windows 7 64 bit (V2.0) Tapps mit XP-Mode unter Windows 7 64 bit (V2.0) 1 Einleitung... 2 2 Download und Installation... 3 2.1 Installation von WindowsXPMode_de-de.exe... 4 2.2 Installation von Windows6.1-KB958559-x64.msu...

Mehr

Collax Web Application

Collax Web Application Collax Web Application Howto In diesem Howto wird die Einrichtung des Collax Moduls Web Application auf einem Collax Platform Server anhand der LAMP Anwendung Joomla beschrieben. LAMP steht als Akronym

Mehr

Userhandbuch. Version B-1-0-2 M

Userhandbuch. Version B-1-0-2 M Userhandbuch Version B-1-0-2 M Inhaltsverzeichnis 1.0 Was bietet mir SERVRACK?... 3 1.1 Anmeldung... 3 1.2 Passwort vergessen?... 3 1.3 Einstellungen werden in Realtime übernommen... 4 2.0 Die SERVRACK

Mehr

Whitepaper. Produkt: combit Relationship Manager / address manager. FILESTREAM für Microsoft SQL Server aktivieren

Whitepaper. Produkt: combit Relationship Manager / address manager. FILESTREAM für Microsoft SQL Server aktivieren combit GmbH Untere Laube 30 78462 Konstanz Whitepaper Produkt: combit Relationship Manager / address manager FILESTREAM für Microsoft SQL Server aktivieren FILESTREAM für Microsoft SQL Server aktivieren

Mehr

TimeSafe Leistungserfassung

TimeSafe Leistungserfassung Keep your time safe. TimeSafe Leistungserfassung Adressimport 1/8 Inhaltsverzeichnis Inhaltsverzeichnis... 2 1 Allgemeines... 3 1.1 Adressen in der TimeSafe Leistungserfassung... 3 1.2 Organisationen und/oder

Mehr

Application Performance Management. Auch eine Frage des Netzwerkes?

Application Performance Management. Auch eine Frage des Netzwerkes? Application Performance Management Auch eine Frage des Netzwerkes? Agenda Architektur von Webanwendungen Lange Applikationsantwortzeiten Application Performance Management (APM) Netzwerkbasiertes APM Serverbasiertes

Mehr

Hinweise zur Installation. CP-Suite

Hinweise zur Installation. CP-Suite Hinweise zur Installation CP-Suite Standard Hard- und Softwareempfehlungen Je nach Anwendung der Software (Strukturgröße, Anzahl der Anwender, Berechnungen innerhalb der Struktur, etc.) kann die notwendige

Mehr

Softwareentwicklung mit Enterprise JAVA Beans

Softwareentwicklung mit Enterprise JAVA Beans Softwareentwicklung mit Enterprise JAVA Beans Java Enterprise Edition - Überblick Was ist J2EE Java EE? Zunächst mal: Eine Menge von Spezifikationen und Regeln. April 1997: SUN initiiert die Entwicklung

Mehr

Lerox DB/2 Datenbankreferenz in QlikView für IBM System AS/400, iseries i5, System i

Lerox DB/2 Datenbankreferenz in QlikView für IBM System AS/400, iseries i5, System i Lerox DB/2 Datenbankreferenz in QlikView für IBM System AS/400, iseries i5, System i Inhaltsverzeichnis Überblick... 3 Die QlikView Applikation im Kontext... 4 Technische Rahmenbedinungen... 5 Funktionelle

Mehr

SINT Rest App Documentation

SINT Rest App Documentation SINT Rest App Documentation Release 1.0 Florian Sachs 08.04.2014 Inhaltsverzeichnis 1 REST Service 3 1.1 Application................................................ 3 1.2 Konfiguration...............................................

Mehr

Visual Studio LightSwitch 2011

Visual Studio LightSwitch 2011 1 Visual Studio LightSwitch 2011 Vereinfachte Softwareentwicklung im Eiltempo W3L AG info@w3l.de 2012 2 Agenda Motivation Softwareentwicklung im Eiltempo Was ist LightSwitch? Merkmale Zielgruppe LightSwitch

Mehr

Agilo [1] ist ein auf Trac [2] basierendes Scrum [3] Tool. Im Folgenden soll eine kurze Überischt gegeben werden, wie Agilo benutzt wird.

Agilo [1] ist ein auf Trac [2] basierendes Scrum [3] Tool. Im Folgenden soll eine kurze Überischt gegeben werden, wie Agilo benutzt wird. AGILO HOWTO Agilo [1] ist ein auf Trac [2] basierendes Scrum [3] Tool. Im Folgenden soll eine kurze Überischt gegeben werden, wie Agilo benutzt wird. ROLLEN IM TEAM In Scrum hat jedes Teammitglied eine

Mehr

IKONIZER II Installation im Netzwerk

IKONIZER II Installation im Netzwerk Der IKONIZER II ist netzwerkfähig in allen bekannten Netzwerken. Da jedoch etwa 95% der Installationen lokal betrieben werden, erfolgt diese grundsätzlich sowohl für das Programm wie auch für den lizenzfreien

Mehr

OP-LOG www.op-log.de

OP-LOG www.op-log.de Verwendung von Microsoft SQL Server, Seite 1/18 OP-LOG www.op-log.de Anleitung: Verwendung von Microsoft SQL Server 2005 Stand Mai 2010 1 Ich-lese-keine-Anleitungen 'Verwendung von Microsoft SQL Server

Mehr

Collaboration Manager

Collaboration Manager Collaboration Manager Inhalt Installationsanleitung... 2 Installation mit Setup.exe... 2 Security Requirements... 3 Farmadministrator hinzufügen... 3 Secure Store Service... 3 Feature-Aktivierung... 5

Mehr

Um asynchrone Aufrufe zwischen Browser und Web Anwendung zu ermöglichen, die Ajax Hilfsmittel DWR ist gebraucht.

Um asynchrone Aufrufe zwischen Browser und Web Anwendung zu ermöglichen, die Ajax Hilfsmittel DWR ist gebraucht. Technisches Design Inhalt Design Übersicht Menü und DispatcherServlet DWR Servlet Viewer Servlets Controllers Managers Sicherheit Anwendung Architektur Component Diagram Deployment Diagram Komponente Sequence

Mehr

HANDBUCH - EWL Installation

HANDBUCH - EWL Installation HANDBUCH - EWL Installation Copyright 2008 Inhaltsverzeichnis 1. Allgemeine Informationen... 3 2. Installation... 4 2.1. Neuinstallation... 4 2.2. Einrichtung... 5 2.3. EWL Server Einstellungen nachträglich

Mehr

Normfall 7.2. Whitepaper. Erstellen eines Normfall Projektspeichers auf Basis einer vorhandenen Installation von:

Normfall 7.2. Whitepaper. Erstellen eines Normfall Projektspeichers auf Basis einer vorhandenen Installation von: Normfall 7.2 Whitepaper Erstellen eines Normfall Projektspeichers auf Basis einer vorhandenen Installation von: Microsoft SQL Server 2008 R2/2012/2014 2014 Normfall GmbH Alle Rechte vorbehalten. Vorbemerkungen

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

JobServer Installationsanleitung 08.05.2013

JobServer Installationsanleitung 08.05.2013 JobServer sanleitung 08.05.2013 Der JobServer ist ein WCF Dienst zum Hosten von Workflow Prozessen auf Basis der Windows Workflow Foundation. Für die wird das Microsoft.NET Framework 3.5 und 4.0 vorausgesetzt.

Mehr

Pflichtenheft Programmanwendung "Syntax Tool"

Pflichtenheft Programmanwendung Syntax Tool Projekt: Syntax Tool Autor: Michael Rattun Home: www.mrattun.de Letzte Änderung: 27.10.2011 1 SEITE Syntax Tool Inhaltsverzeichnis Inhaltsverzeichnis 1. Zielbestimmung... 3 1.1 Muss-Kriterien (Freeware)...

Mehr

Multivariate Tests mit Google Analytics

Multivariate Tests mit Google Analytics Table of Contents 1. Einleitung 2. Ziele festlegen 3. Einrichtung eines Multivariate Tests in Google Analytics 4. Das JavaScript 5. Die Auswertung der Ergebnisse Multivariate Tests mit Google Analytics

Mehr

.NET. Kay Herzam 31.1.2012. User Group Bern. http://www.herzam.com kay@herzam.com @kherzam. Follow @dnugbe on twitter http://www.dnug-bern.ch/rss.

.NET. Kay Herzam 31.1.2012. User Group Bern. http://www.herzam.com kay@herzam.com @kherzam. Follow @dnugbe on twitter http://www.dnug-bern.ch/rss. .NET User Group Bern Kay Herzam 31.1.2012 http://www.herzam.com kay@herzam.com @kherzam Follow @dnugbe on twitter http://www.dnug-bern.ch/rss.aspx DNUG Bern Regionalsponsoren DNUG Bern Sachsponsoren Heutiges

Mehr

WSUS 3.0 - Was ist neu in der nächsten WSUS-Generation?

WSUS 3.0 - Was ist neu in der nächsten WSUS-Generation? WSUS 3.0 - Was ist neu in der nächsten WSUS-Generation? Michael Kalbe Infrastructure Architect Microsoft Deutschland GmbH Agenda Rückblick auf WSUS 2.0 WSUS 3.0 Ziele Funktionen Demo Erweiterungen Weitere

Mehr

Installation DataExpert-Server

Installation DataExpert-Server Projekt IGH DataExpert Installation DataExpert-Server Datum: 05.04.2015 Version: 2.0.1.0 Inhaltsverzeichnis 1 Einleitung... 2 2 Voraussetzungen für die Installation von DataExpert 2.0... 3 3 Installation

Mehr

Zustandsgebundene Webservices

Zustandsgebundene Webservices Zustandsgebundene Webservices Präsentation ausgewählter Problemstellungen der Informatik Markus Oertel oer@uni-paderborn.de Universität Paderborn 25. September 2005 Zustandsgebundene Webservices Seite

Mehr

TimePunch SQL Server Datenbank Setup

TimePunch SQL Server Datenbank Setup TimePunch TimePunch SQL Server Datenbank Setup Benutzerhandbuch 26.11.2013 TimePunch KG, Wormser Str. 37, 68642 Bürstadt Dokumenten Information: Dokumenten-Name Benutzerhandbuch, TimePunch SQL Server Datenbank

Mehr

SRH Hochschule Heidelberg

SRH Hochschule Heidelberg SRH Hochschule Heidelberg Fachbereich Informatik Vertriebssysteme / CRM Johannes Dipl. Inf. (FH) Hoppe Johannes Hoppe MSP WCF Vorlesung 25.03.2009 90 Minuten, 8 Teilnehmer Dipl. Inf. (FH) Johannes Hoppe

Mehr

.NET. Roland Krummenacher. www.bbv.ch roland.krummenacher@bbv.ch. User Group Bern. Follow dnugbe on twitter http://www.dnug-bern.ch/rss.

.NET. Roland Krummenacher. www.bbv.ch roland.krummenacher@bbv.ch. User Group Bern. Follow dnugbe on twitter http://www.dnug-bern.ch/rss. .NET User Group Bern Roland Krummenacher www.bbv.ch roland.krummenacher@bbv.ch Follow dnugbe on twitter http://www.dnug-bern.ch/rss.aspx DNUG Bern Regionalsponsoren Über Roland Krummenacher Seit 2002 in

Mehr

Systemvoraussetzungen CMIAXIOMA Release 15.0

Systemvoraussetzungen CMIAXIOMA Release 15.0 Systemvoraussetzungen CMIAXIOMA Release 15.0 CMIAXIOMA Release 15.0 Seite 2/12 Inhaltsverzeichnis 1 Allgemeines... 4 1.1 Support Lifecycle Policy... 4 1.2 Test Policy... 4 1.3 Systemübersicht... 5 2 Softwarevoraussetzungen...

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

MSXFORUM - Exchange Server 2003 > Installationsanleitung Exchange 2003

MSXFORUM - Exchange Server 2003 > Installationsanleitung Exchange 2003 Page 1 of 12 Installationsanleitung Exchange 2003 Kategorie : Exchange Server 2003 Veröffentlicht von webmaster am 18.02.2005 Diese Anleitung ist eine "step by step" Leitfaden zur Installation eines Exchange

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

Beschreibung Mobile Office

Beschreibung Mobile Office Beschreibung Mobile Office 1. Internet / Netz Zugriff Für die Benutzung von Mobile Office ist lediglich eine Internet oder Corporate Netz Verbindung erforderlich. Nach der Verbindungsherstellung kann über

Mehr

Systemvoraussetzungen CustomX. Customer Relationship Management

Systemvoraussetzungen CustomX. Customer Relationship Management Systemvoraussetzungen CustomX Customer Relationship Management ThinX networked business services August 2005 Inhaltsverzeichnis ThinX networked business services Inhaltsverzeichnis 1 Einleitung 3 2 Webserver

Mehr

Bitte beachten Sie beim Update einer Client / Server Version die Checkliste zum Update

Bitte beachten Sie beim Update einer Client / Server Version die Checkliste zum Update Hinweise zum Update Es gibt verschiedene Möglichkeiten ein pixafe System zu aktualisieren, die vorliegenden Hinweise helfen dabei neue Versionen zu finden und diese zu installieren. Dabei werden verschiedene

Mehr

BLECHCENTER Plus. Installationsanweisung. Hilfe für Anwender

BLECHCENTER Plus. Installationsanweisung. Hilfe für Anwender Hilfe für Anwender IBE Software GmbH; Friedrich-Paffrath-Straße 41; 26389 Wilhelmshaven Fon: 04421-994357; Fax: 04421-994371; www.ibe-software.de; Info@ibe-software.de Vorwort Installationen von Programmen

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

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