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

Windows Azure für Java Architekten. Holger Sirtl Microsoft Deutschland GmbH

Windows Azure für Java Architekten. Holger Sirtl Microsoft Deutschland GmbH Windows Azure für Java Architekten Holger Sirtl Microsoft Deutschland GmbH Agenda Schichten des Cloud Computings Überblick über die Windows Azure Platform Einsatzmöglichkeiten für Java-Architekten Ausführung

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

MICROSOFT WINDOWS AZURE

MICROSOFT WINDOWS AZURE Cloud Computing à la Microsoft MICROSOFT WINDOWS AZURE Karim El Jed netcreate OHG Agenda Was ist Cloud Computing? Anwendungsszenarien Windows Azure Platform Alternativen Was ist Cloud Computing? Was ist

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

Marketing Update. Enabler / ENABLER aqua / Maestro II

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

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

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

MySQL Community Server 5.6 Installationsbeispiel (Ab 5.5.29)

MySQL Community Server 5.6 Installationsbeispiel (Ab 5.5.29) MySQL Community Server 5.6 Installationsbeispiel (Ab 5.5.29) Dieses Dokument beschreibt das Herunterladen der Serversoftware, die Installation und Konfiguration der Software. Bevor mit der Migration der

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

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

Systemvoraussetzungen Windows Server 2008 Windows Server 2008 R2 Windows Server 2012 Windows Server 2012 R2

Systemvoraussetzungen Windows Server 2008 Windows Server 2008 R2 Windows Server 2012 Windows Server 2012 R2 Systemvoraussetzungen Windows Server 2008 Windows Server 2008 R2 Windows Server 2012 Windows Server 2012 R2 Basis: HiScout 3.0 Datum: Autor(en): HiScout GmbH Version: 1.3 Status: Freigegeben Dieses Dokument

Mehr

NTCS Synchronisation mit Exchange

NTCS Synchronisation mit Exchange NTCS Synchronisation mit Exchange Mindestvoraussetzungen Betriebssystem: Mailserver: Windows Server 2008 SP2 (x64) Windows Small Business Server 2008 SP2 Windows Server 2008 R2 SP1 Windows Small Business

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

Microsoft Azure für Java Entwickler

Microsoft Azure für Java Entwickler Holger Sirtl Microsoft Deutschland GmbH Microsoft Azure für Java Entwickler Ein Überblick Agenda Cloud Computing Die Windows Azure Platform Anwendungen auf Windows Azure Datenspeicherung mit SQL Azure

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

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

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

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

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

Projekt Weblog :: Integration

Projekt Weblog :: Integration Projekt Weblog :: Integration Die Implementation des Formhandling Frameworks wird nun im Projekt Weblog integriert. Dafür stehen 2 Möglichkeiten zur Auswahl. Sie haben Ihre eigene Implementation der Actions,

Mehr

Überblick über die Windows Azure Platform

Überblick über die Windows Azure Platform Überblick über die Windows Azure Platform Präsentator: Holger Sirtl Kontakt: http://blogs.msdn.com/hsirtl Copyright 2011 Microsoft Corporation. Alle Rechte vorbehalten. MSDN Webcasts: http://www.msdn-online.de/webcasts

Mehr

Technote - Installation Webclient mit Anbindung an SQL

Technote - Installation Webclient mit Anbindung an SQL Technote - Installation Webclient mit Anbindung an SQL Installation Webclient mit Anbindung an SQL Ferrari electronic AG; Heiko Miersch; Chris Helbing OfficeMaster ist Copyright 2012 von Ferrari electronic

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

PMI Munich Chapter 21.04.2008

PMI Munich Chapter 21.04.2008 Projektmanagement im Rahmen einer IT-Infrastruktur- Standardisierung mit internationalen Teams Christoph Felix PMP, Principal Project Manager, Microsoft Deutschland PMI Munich Chapter 21.04.2008 Agenda

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

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

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

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

Datenbanken II Speicherung und Verarbeitung großer Objekte (Large Objects [LOBs])

Datenbanken II Speicherung und Verarbeitung großer Objekte (Large Objects [LOBs]) Datenbanken II Speicherung und Verarbeitung großer Objekte (Large Objects [LOBs]) Hochschule für Technik, Wirtschaft und Kultur Leipzig 06.06.2008 Datenbanken II,Speicherung und Verarbeitung großer Objekte

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

Uwe Baumann artiso Solutions ubaumann@artiso.com

Uwe Baumann artiso Solutions ubaumann@artiso.com Uwe Baumann artiso Solutions ubaumann@artiso.com Upgrade Strategien Data/Application Tier Anpassung von Process Templates Build Test/Lab Performance TFS Version Control Workitem Tracking Build Verwaltung

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

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

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

Wie setzt Swisscom Solaris 11 ein

Wie setzt Swisscom Solaris 11 ein Wie setzt Swisscom Solaris 11 ein Fritz Wittwer Swisscom Enterprise Customers Bern / Schweiz Marcel Hofstetter St. Gallen / Schweiz Schlüsselworte Oracle Solaris 11, Virtualisierung, SPARC, T5, LDom, Solaris

Mehr

Microsoft Azure Fundamentals MOC 10979

Microsoft Azure Fundamentals MOC 10979 Microsoft Azure Fundamentals MOC 10979 In dem Kurs Microsoft Azure Fundamentals (MOC 10979) erhalten Sie praktische Anleitungen und Praxiserfahrung in der Implementierung von Microsoft Azure. Ihnen werden

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

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

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

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

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

Erfahren Sie mehr zu LoadMaster für Azure

Erfahren Sie mehr zu LoadMaster für Azure Immer mehr Unternehmen wechseln von einer lokalen Rechenzentrumsarchitektur zu einer öffentlichen Cloud-Plattform wie Microsoft Azure. Ziel ist es, die Betriebskosten zu senken. Da cloud-basierte Dienste

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

ARTS Server 3.5. Produktbeschreibung. Uptime Services AG

ARTS Server 3.5. Produktbeschreibung. Uptime Services AG Uptime Services AG Brauerstrasse 4 CH-8004 Zürich Tel. +41 44 560 76 00 Fax +41 44 560 76 01 www.uptime.ch ARTS Server 3.5 Produktbeschreibung Uptime Services AG Inhaltsverzeichnis 1 Einleitung... 2 2

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

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

Inhalt. 1 Übersicht. 2 Anwendungsbeispiele. 3 Einsatzgebiete. 4 Systemanforderungen. 5 Lizenzierung. 6 Installation.

Inhalt. 1 Übersicht. 2 Anwendungsbeispiele. 3 Einsatzgebiete. 4 Systemanforderungen. 5 Lizenzierung. 6 Installation. Inhalt 1 Übersicht 2 Anwendungsbeispiele 3 Einsatzgebiete 4 Systemanforderungen 5 Lizenzierung 6 Installation 7 Key Features 8 Funktionsübersicht (Auszug) 1 Übersicht MIK.starlight bietet individuelle

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

Enterprise Application Integration Erfahrungen aus der Praxis

Enterprise Application Integration Erfahrungen aus der Praxis Enterprise Application Integration Erfahrungen aus der Praxis Teil 4: EAI und.net, EAI und J2EE Tutorial NODs 2002, Wolfgang Keller and Generali 2001, 2002, all rights reserved 1 Überblick EAI und....net

Mehr

Message Oriented Middleware am Beispiel von XMLBlaster

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

Mehr

Informatives zur CAS genesisworld-administration

Informatives zur CAS genesisworld-administration Informatives zur CAS genesisworld-administration Inhalt dieser Präsentation Loadbalancing mit CAS genesisworld Der CAS Updateservice Einführung in Version x5 Konfigurationsmöglichkeit Sicherheit / Dienstübersicht

Mehr

SharePoint 2016 was kommt auf uns zu? SharePoint & Office 365 Community Zentralschweiz

SharePoint 2016 was kommt auf uns zu? SharePoint & Office 365 Community Zentralschweiz SharePoint 2016 was kommt auf uns zu? SharePoint & Office 365 Community Zentralschweiz Inhalt Wo liegt der Fokus von SharePoint 2016? Experiences Infrastruktur SharePoint Migration auf 2016 Wie sehen die

Mehr

smis_secure mail in der srg / pflichtenheft /

smis_secure mail in der srg / pflichtenheft / smis_secure mail in der srg / pflichtenheft / Dok.-Nr: Version: 1.1 PH.002 Status: Klassifizierung: Autor: Verteiler: Draft Erik Mulder, Thanh Diep Erik Mulder, Thanh Diep Pflichtenheft, Seite 2 / 2 Änderungskontrolle

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

MOC 50466A: Windows Azure-Lösungen mit Microsoft Visual Studio 2010

MOC 50466A: Windows Azure-Lösungen mit Microsoft Visual Studio 2010 MOC 50466A: Windows Azure-Lösungen mit Microsoft Visual Studio 2010 Kompakt-Intensiv-Training Diese Schulung bereitet Sie optimal auf die MOC-Zertifzierung vor. Windows Azure ist das Microsoft-Betriebssystem

Mehr

SMC Integrationsserver 5.0 Versionsinformationen

SMC Integrationsserver 5.0 Versionsinformationen SMC Integrationsserver 5.0 Versionsinformationen SMC IT AG Pröllstraße 24 86157 Augsburg Tel. (0821) 720 62-0 Fax. (0821) 720 62-62 smc-it.de info@smc-it.de Geschäftsstelle Ettlingen Pforzheimer Straße

Mehr

Inhalt. 1 Übersicht. 2 Anwendungsbeispiele. 3 Einsatzgebiete. 4 Systemanforderungen. 5 Lizenzierung. 6 Installation.

Inhalt. 1 Übersicht. 2 Anwendungsbeispiele. 3 Einsatzgebiete. 4 Systemanforderungen. 5 Lizenzierung. 6 Installation. Inhalt 1 Übersicht 2 Anwendungsbeispiele 3 Einsatzgebiete 4 Systemanforderungen 5 Lizenzierung 6 Installation 7 Key Features 8 Funktionsübersicht (Auszug) 1 Übersicht MIK.bis.webedition ist die Umsetzung

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

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

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

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

Whitepaper Walkyre Enterprise Resource Manangement

Whitepaper Walkyre Enterprise Resource Manangement Whitepaper Walkyre Enterprise Resource Management Seite 1 Whitepaper Walkyre Enterprise Resource Manangement Stand 15.11.2004 Inhalt 1. Hinweis... 2 2. Grundsätzliches zur Funktionalität... 3 3. Der Walkyre-Client...

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

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

Benutzerverwaltung mit ASP.NET Membership

Benutzerverwaltung mit ASP.NET Membership Benutzerverwaltung mit ASP.NET Membership Dieser Artikel soll zeigen, wie man ASP.NET Membership einsetzt, um Benutzer einer Web Anwendung zu authentifizieren. Es werden sowohl Grundlagen wie die Einrichtung

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

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

Kapitel 33. Der xml-datentyp. In diesem Kapitel: Der xml-datentyp 996 Abfragen aus xml-datentypen 1001 XML-Indizierung 1017 Zusammenfassung 1023

Kapitel 33. Der xml-datentyp. In diesem Kapitel: Der xml-datentyp 996 Abfragen aus xml-datentypen 1001 XML-Indizierung 1017 Zusammenfassung 1023 Kapitel 33 Der xml-datentyp In diesem Kapitel: Der xml-datentyp 996 Abfragen aus xml-datentypen 1001 XML-Indizierung 1017 Zusammenfassung 1023 995 996 Kapitel 33: Der xml-datentyp Eine der wichtigsten

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

Einführung in die Cross-Plattform Entwicklung Web Services mit dem Intel XDK

Einführung in die Cross-Plattform Entwicklung Web Services mit dem Intel XDK Einführung in die Cross-Plattform Entwicklung Web Services mit dem Intel XDK Einführung Dieses Hands-on-Lab (HOL) macht den Leser mit dem Intel XDK und dem Zugriff auf Web Services vertraut. Der Web Service

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

Konzepte zur Datenhaltung für Webseiten in einem Web-Content- Management-System

Konzepte zur Datenhaltung für Webseiten in einem Web-Content- Management-System Konzepte zur Datenhaltung für Webseiten in einem Web-Content- Management-System Web-Content-Management-Systeme () dienen dazu, komplexe Websites zu verwalten und den Autoren einzelner Webseiten möglichst

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

Inhalt. 1 Übersicht. 2 Anwendungsbeispiele. 3 Einsatzgebiete. 4 Systemanforderungen. 5 Lizenzierung. 6 Installation.

Inhalt. 1 Übersicht. 2 Anwendungsbeispiele. 3 Einsatzgebiete. 4 Systemanforderungen. 5 Lizenzierung. 6 Installation. Inhalt 1 Übersicht 2 Anwendungsbeispiele 3 Einsatzgebiete 4 Systemanforderungen 5 Lizenzierung 6 Installation 7 Key Features 8 Funktionsübersicht (Auszug) Seite 2 von 14 1. Übersicht MIK.starlight bietet

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

Nach Ihrer erstmaligen Anmeldung sollten Sie Ihr Passwort ändern. Dazu klicken Sie bitte auf Ihren Namen.

Nach Ihrer erstmaligen Anmeldung sollten Sie Ihr Passwort ändern. Dazu klicken Sie bitte auf Ihren Namen. 1 Passwort ändern Nach Ihrer erstmaligen Anmeldung sollten Sie Ihr Passwort ändern Dazu klicken Sie bitte auf Ihren Namen Abb 1-1 Erstmaliger Anmeldung Danach erscheint ein PopUp indem Sie Ihr Passwort

Mehr

HERZLICH WILLKOMMEN SHAREPOINT 2013 - DEEP DIVE FOR ADMINS 11.09.2012 IOZ AG 2

HERZLICH WILLKOMMEN SHAREPOINT 2013 - DEEP DIVE FOR ADMINS 11.09.2012 IOZ AG 2 11.09.2012 IOZ AG 1 HERZLICH WILLKOMMEN SHAREPOINT 2013 - DEEP DIVE FOR ADMINS 11.09.2012 IOZ AG 2 AGENDA Über mich Architekturänderungen Systemvoraussetzungen Migration Fragen 11.09.2012 IOZ AG 3 ÜBER

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

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

Entwicklung von Web-Anwendungen auf JAVA EE Basis

Entwicklung von Web-Anwendungen auf JAVA EE Basis Entwicklung von Web-Anwendungen auf JAVA EE Basis Java Enterprise Edition - Überblick Prof. Dr. Bernhard Schiefer Inhalt der Veranstaltung Überblick Java EE JDBC, JPA, JNDI Servlets, Java Server Pages

Mehr

SZENARIO BEISPIEL. Implementation von Swiss SafeLab M.ID mit Citrix. Redundanz und Skalierbarkeit

SZENARIO BEISPIEL. Implementation von Swiss SafeLab M.ID mit Citrix. Redundanz und Skalierbarkeit SZENARIO BEISPIEL Implementation von Swiss SafeLab M.ID mit Citrix Redundanz und Skalierbarkeit Rahmeninformationen zum Fallbeispiel Das Nachfolgende Beispiel zeigt einen Aufbau von Swiss SafeLab M.ID

Mehr

Leistungsbeschreibung tengo desktop

Leistungsbeschreibung tengo desktop 1/5 Inhalt 1 Definition 2 2 Leistung 2 3 Optionale Leistungen 3 4 Systemanforderungen, Mitwirkungen des Kunden 3 4.1 Mitwirkung des Kunden 4 4.1.1 Active Directory Anbindung 4 4.1.2 Verwaltung über das

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

Symbio system requirements. Version 5.1

Symbio system requirements. Version 5.1 Symbio system requirements Version 5.1 From: January 2016 2016 Ploetz + Zeller GmbH Symbio system requirements 2 Content 1 Symbio Web... 3 1.1 Overview... 3 1.1.1 Single server installation... 3 1.1.2

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

Benutzerzertifikate für Java Webstart

Benutzerzertifikate für Java Webstart Benutzerzertifikate für Java Webstart Benutzerdokumentation Wien 5. Dezember 2011 Florian Bruckner, Florian Heinisch 3kraft IT GmbH & Co KG Wasagasse 26/2 1090 Wien Österreich Tel: +43 1 920 45 49 Fax

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

Die Alternative zum Web-Form Modell

Die Alternative zum Web-Form Modell Marc André Zhou Solution Architect www.dev -sky.net www.just -sp.net Die Alternative zum Web-Form Modell dotnet Cologne 03.05.2013 Agenda Web Forms vs. MVC ASP.NET MVC Features Web API ODATA Eine ASP.NET

Mehr

opsi-401-releasenotes-upgrade-manual

opsi-401-releasenotes-upgrade-manual opsi-401-releasenotes-upgrade-manual Stand: 01.05.2011 uib gmbh Bonifaziusplatz 1b 55118 Mainz Tel.:+49 6131 275610 www.uib.de info@uib.de i Inhaltsverzeichnis 1 Einführung 1 2 Neuerungen in opsi 4.0.1

Mehr

Lizenzierung von SQL Server 2014

Lizenzierung von SQL Server 2014 Lizenzierung von SQL Server 2014 SQL Server 2014 bietet zwei Lizenzoptionen: das Core-basierte Lizenzmodell, dessen Maßeinheit die Anzahl der Prozessorkerne und damit die Rechenleistung der Server-Hardware

Mehr

1 Application Compatibility Toolkit (ACT) 5.6

1 Application Compatibility Toolkit (ACT) 5.6 1 Application Compatibility Toolkit (ACT) 5.6 Systemvoraussetzungen: SQL Server 2005/2008 (auch Express) ACT 5.6 besteht aus zwei Tools: Der Compatibility Manager ermittelt Informationen, die Auswirkungen

Mehr

INFORMATION MONITOR HSM SOFTWARE GMBH CLIENT-INSTALLATION

INFORMATION MONITOR HSM SOFTWARE GMBH CLIENT-INSTALLATION INFORMATION MONITOR HSM SOFTWARE GMBH CLIENT-INSTALLATION Allgemein Infomon bietet die Architektur für das Informations-Monitoring in einer Windows- Topologie. Die Serverfunktionalität wird in einer IIS-Umgebung

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

Mobiles Einkaufen & Bezahlen mit Smartphones und Oracle CRM on Demand

Mobiles Einkaufen & Bezahlen mit Smartphones und Oracle CRM on Demand Mobiles Einkaufen & Bezahlen mit Smartphones und Oracle CRM on Demand Thorwald Schubert ec4u expert consulting ag Karlsruhe Schlüsselworte: Oracle Fusion Middleware, Titanium, HTML5, PayPal, Google Wallet,

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

Workbooster File Exchanger Command Line Tool

Workbooster File Exchanger Command Line Tool Thema Technische Benutzerdokumentation - WBFileExchanger Workbooster File Exchanger Command Line Tool Letzte Anpassung 18. Januar 2014 Status / Version Finale Version - V 1.1 Summary Erstellung Diese technische

Mehr