Office Programmierung im .Net Zeitalter

Slides:



Advertisements
Ähnliche Präsentationen
Copyright © The OWASP Foundation Permission is granted to copy, distribute and/or modify this document under the terms of the OWASP License. The OWASP.
Advertisements

Vorlesung: 1 Betriebliche Informationssysteme 2003 Prof. Dr. G. Hellberg Studiengang Informatik FHDW Vorlesung: Betriebliche Informationssysteme Teil3.
Smart(e) Software entwickeln mit Microsoft Office System 2003 Dirk Primbs Technologieberater Microsoft Deutschland GmbH Developer Platform.
Daten fließen lassen XML in Microsoft Office 2003 Lorenz Goebel Frank Fischer
Zusammenarbeit in Office mit den SharePoint Technologien Michael Carpi
SQL Server 2005.NET Integration Sebastian Weber Developer Evangelist Microsoft Deutschland GmbH.
Design- und Entwicklungswerkzeuge
Office XP und XML Web Services Dariusz Parys.NET Strategy & Developer Group
Was bedeutet XML in Office-Applikationen für Systemadministratoren? Ruprecht Dröge MCSE MCSD MCT Microsoft Pre Sales Consultant.
SPS / WSS Entwicklung Martin Saternus Technical Student Consultant Microsoft Deutschland GmbH
Datenbankzugriff im WWW (Kommerzielle Systeme)
NATURAL Web-Integration 1 / 27/28-Feb-98 TST NATURAL Web-Integration Arbeitskreis NATURAL Süd Theo Straeten SAG Systemhaus GmbH Technologieberater Stuttgart.
Stefanie Selzer - Pascal Busch - Michael Kropiwoda
XINDICE The Apache XML Project Name: Jacqueline Langhorst
Microsofts XML-Strategie aus Sicht des Endanwenders Klaus Rohe Developer Platform & Strategy Group Microsoft Deutschland GmbH.
Oracle WebServer - Einführung. © Prof. T. Kudraß, HTWK Leipzig Oracle Web Application Server HTML WebServer ® File system Static HTML PL/SQL Packages.
Text-Retrieval mit Oracle Vortrag von Andreas Mück & David Diestel.
Vorlesung: 1 Betriebliche Informationssysteme 2003 Prof. Dr. G. Hellberg Studiengang Informatik FHDW Vorlesung: Betriebliche Informationssysteme Teil2.
PKJ 2005/1 Stefan Dissmann Zusammenfassung Bisher im Kurs erarbeitete Konzepte(1): Umgang mit einfachen Datentypen Umgang mit Feldern Umgang mit Referenzen.
Introducing the .NET Framework
Erstellen von WebServices mit Visual FoxPro 9.0
Uwe Habermann WPF Avalon Formulare aus VFP verwenden Venelina Jordanova
Uwe Habermann Venelina Jordanova VFP Code in Silverlight Anwendungen ausführen.
WebCast: Managed Smart Tags mit VSTO Jens Häupel.NET Technologieberater Microsoft Deutschland GmbH
Integration in Office 2003 Visual Studio Tools für Office 2.0
Microsoft Office Information Bridge Framework Jens Häupel.NET Technologieberater Developer Platform & Strategy Group Microsoft Deutschland GmbH.
MSDN Webcast: VB.NET für Einsteiger und Umsteiger, Teil 10 Die erste, eigene Klassenbibliothek (Level 100) Presenter: Daniel Walzenbach Technologieberater.
Anwendungen entwickeln für Office 2007
YouTube5 .0 Projektpräsentation
20:00.
University of Applied Sciences Übung Objektorientierte Programmierung II Dipl.-Inf. (FH) Markus Vogler.
Silverlight Eine Einführung. Agenda 1.Was ist Silverlight? 2.Die Silverlight Philosophie 3.Vorstellung des Szenarios 4.Einführendes Beispiel 5.Konzepte.
Marcel Gnoth, OFF4 - IBF 1.5 Information Bridge Framework 1.5 verbindet Web Services und Office System 2003.
Entwicklung verteilter Anwendungen I, WS 13/14 Prof. Dr. Herrad Schmidt WS 13/14 Kapitel 12 Folie 2 Web Services (1)
Best Practices in der Datenbank-programmierung
Kostenlose Alternative zu Microsoft Office
SQL Server 2005 CLR-Integration
SOFTWARE- UND WEB-LÖSUNGEN
Smarte und verbundene Dokumente mit Office 2003 und .NET entwickeln
Michael Köster User Experience Specialist Microsoft Corporation.
Consulting and Solutions.NET Vortragsreihe – Vorstellung der Referenten Happy Arts Software Markus Kämmerer IT-Erfahrung seit 1987,
© 2005 Avanade Inc. All rights reserved. The Avanade name and logo are registered trademarks in the US and other countries. Office als Applikationsplattform.
Basiswissen für Partner und interessierte Kunden Technologie.
Developer Day Office APPs entwicklen Simon Amrein Trivadis AG Die ersten Schritte in eine neue Office-Welt.
Reiner Ganser Solution Architect 1stQuad Solutions GmbH Presentation Subtitle.
3/28/2017 8:11 PM Visual Studio Tools für Office { Rapid Application Development für Office } Jens Häupel Platform Strategy Manager Microsoft Deutschland.
Windows Presentation Foundation WS 2013/14 Prof. Dr. Herrad Schmidt
Windows Presentation Foundation, Vorlesung Wintersemester 2013/14 Prof. Dr. Herrad Schmidt WS 13/14 Kapitel 2 Folie 2 XAML (1) s.a.
Entwicklung verteilter Anwendungen I, WS 13/14 Prof. Dr. Herrad Schmidt WS 13/14 Kapitel 1 Folie 2 Microsoft.NET Framework: Quelle:
Entwicklung verteilter Anwendungen I, WS 13/14 Prof. Dr. Herrad Schmidt WS 13/14 Kapitel 5 Folie 2 ADO.NET s.a:
Windows Presentation Foundation, Vorlesung Wintersemester 2013/14 Prof. Dr. Herrad Schmidt WS 13/14 Kapitel 9 Folie 2 ADO.NET (1) Klassen für Zugriffe.
… und was man damit machen kann.
Oliver Spritzendorfer Thomas Fekete
Office Business Anwendungen mit SharePoint Fabian Moritz | MVP Office SharePoint Server.
Office in Java 2. Info-Point Urs Frei.
MINDREADER Ein magisch - interaktives Erlebnis mit ENZO PAOLO
Datenanbindung in Webapplikationen
Warum IIS? Best of Microsoft Webserver
MSDN TechTalk Anwendungen integrieren in Microsoft Dynamics CRM 4.0.
Software Architektur für on-premise und die Cloud Lösungen
prof. dr. dieter steinmannfachhochschule trier © prof. dr. dieter steinmann Folie 1 vom Montag, 30. März 2015.
->Prinzip ->Systeme ->Peer – to – Peer
Web und Mobile Apps Programmieren Marco Jakob Kurzvortrag OSS an Schulen
1 Medienpädagogischer Forschungsverbund Südwest KIM-Studie 2014 Landesanstalt für Kommunikation Baden-Württemberg (LFK) Landeszentrale für Medien und Kommunikation.
Ralf M. Schnell Technical Evangelist Microsoft Deutschland GmbH
Microsoft.NET - Plattform Kurzer Überblick Vergleich mit Java Von Thomas Zahn Januar 2001.
Application Infrastructure Technologies Extending OnPremise EAI to the Cloud Wilfried Mausz BSc. dataformers GmbH Lothar Mausz dataformers.
Campus Bern Patrick Mäschli, Software Architect
SOFTWARE- UND WEB-LÖSUNGEN
 Präsentation transkript:

Office Programmierung im .Net Zeitalter Herzlich Willkommen meine Damen und Herren zum Oktober TechTalk. Geschäftsdaten intelligent mit Dokumenten verbinden

Kurze Vorstellung Dipl. Inf. Marcel Gnoth, MCSD (marcel@gnoth.net) Bis Sep. 05 bei der Berliner NTeam GmbH Ab Jan. 06 bei Avanade Deutschland Autor dotnetpro, dotnet-magazin, Developerworld, MSDN SQL Server 2005 Buch, Galileo Computing, Feb ‘06 Sprecher BASTA! + SQLCON SQL Server Days (28.-29. Nov. 05 in München) Themen VB6, COM, SQL Server, .Net Verteilte nachrichtenbasierte Informationssysteme MS Message Queueing, SQL Server Service Broker Office System 2003 Integration Reisen in ferne Länder: www.gnoth.net/reise.htm 

Agenda Office Entwicklung – Überblick Kurzer Ausflug zu den Research Services Office Dokumente und XML Visual Studio Tools für Office (VSTO 2.0) Smart Tags Information Bridge Framework (IBF 1.5) SmartTags

Office Entwicklung – Überblick Programmierung im .NET Zeitalter

Office als Client Mehr als 400 Mio Officeinstallationen Für sehr viele Menschen ist Office das Hauptwerkzeug im Büro Wie kann Ihnen das Arbeiten leichter gemacht werden? Weniger neuen Features für den Anwender Bessere Integration in die Unternehmens IT

Probleme im Büroalltag für Anwender... Anwender muss Informationen in verschiedenen Systemen zusammensuchen Outlook, SharePoint, CRM, in HR, in SAP, SQL Server, Oracle, ... Anwender muss in der Lage sein, diese Systeme zu bedienen, auch wenn er/sie nur selten damit arbeitet Schneller Zugriff auf Infos Keine Unterstützung bei der Dateneingabe Viel manuelle Tipparbeit Keine Validierung Austausch zwischen den verschiedenen Systemen könnte für den Anwender leichter sein. Nur Copy & Paste Oder abtippen 

Probleme im Büroalltag für IT ... Office Dokumente sind Freitext Nutzer kann fehlerhafte, unstrukturierte Eingaben machen schlechte Datenqualität Elektronische Verarbeitung der Informationen aufwendig Formulare mit Word und Excel erstellen InfoPath ist noch nicht weit verbreitet Prüfen des Inhalts Dokumentformat properitär Austausch mit anderen heterogenen Systemen schwierig Elektronische Verarbeitung (auf Servern) aufwendig Office Installation auf dem Server unerwünscht Verteilung von Office Lösungen Sicherheit

Wege zur Lösung Taskpane / Aufgabenbereich Formulare zur Dateneingabe Nachschlageergebnisse Informationen / Aktionen XML-Dateiformat und XML-Schemata Offenes Dateiformat Kein Freitext mehr Kontextbezogener Zugriff auf TaskPane Serververarbeitung von Dokumenten Smart Tags Aktionen und Infos zu einem selektierten Bereich Webservice Zugriff Nachschlagewerke, Datenaustausch

Big View - Technologieübersicht BizTalk Server Share Point VBA und Webservice Toolkit Office Automation Zugriff auf Webservices keine Programmierung für die TaskPane SQL Server Nachschlagen von Informationen Übernehmen von Daten in das Dokument Zwei einfache Webservices Research Service Nachschlagen von Informationen Interaktion mit LOB Apps TaskPane Datenaustausch Information Bridge Framework XML Dateiformat und Schemata Formulare Prüfen der Daten Serververarbeitung Datenaustausch Kontextsensitive Unterstützung Erkennen von Texten Aufrufen von Aktionen Smart Tags Programmierung der Taskpane Dokumente auf Server verarbeiten Dateninseln für Offline Zugriff Datenaustausch VSTO 2.0

Nachschlagewerke für das eigene Unternehmen Research Services Nachschlagewerke für das eigene Unternehmen

Research Services (RS) – Überblick Recherche von Informationen über Webservices Word, Excel, PPT, Outlook, Publisher, OneNote, Visio, IE Anzeige der Ergebnisse in der TaskPane Übernahme von Daten in das Dokument Office enthält RS Thesaurus und Übersetzung Wörterbuch, Enzyklopädie, Web Suche, Aktienkurse SharePoint durchsuchen Kommerzielle Anbieter Factiva, eLibrary, Gale, WorldLingo

Research Beispiele

Eigene Research Services entwickeln Beliebige Sprache, beliebige Plattform für Webservice SOAP Response muß Schemata entsprechen Zwei Methoden Register (oder Registry-Keys direkt schreiben) Query MS Werkzeuge RS - SDK RS - Development Extras (RSDE) Simple Smart Tag Actions Insert, Copy, NewQuery, Hyperlink

RS – Schemata

RS – Development Extras (RSDE) Separater Download Research Services Class Library (RSCL) OO-Wrapper für SDK Schemata Erleichtert Programmierung Mit Quellcode RSCL Wizard Neuer Projekttyp Viele Samples Research Services Tracing and Validation Tool (RSTV) zum debuggen

Deployment / Registry Installation durch Anwender Eingabe der URL Installation durch Admin Verwenden einer .reg - Datei HKEY_CURRENT_USER\Software\Microsoft\... …Office\11.0\Common\Research HKEY_LOCAL_MACHINE\Software\Microsoft\... …Office\11.0\Common\Research

Demo Research Services

Fazit Research Services Einfache Recherche aus Office Applikationen heraus Kombinieren mit Volltextsuche des SQL Servers Dynamisches Update WS können auf jedem System gehostet werden! SELECT ProductName, QuantityPerUnit FROM Products WHERE CONTAINS(ProductName, ' FORMSOF (INFLECTIONAL, dry) ')

XML – Schemata und Office Dokumente Schluss mit dem Freitext

Big View - Technologieübersicht Office Automation Zugriff auf Webservices keine Programmierung für die TaskPane BizTalk Server Share Point VBA und Webservice Toolkit Nachschlagen von Informationen Übernehmen von Daten in das Dokument Zwei einfache Webservices SQL Server Research Service Nachschlagen von Informationen Interaktion mit LOB Apps TaskPane Datenaustausch Information Bridge Framework XML Dateiformat und Schemata Formulare Prüfen der Daten Serververarbeitung Datenaustausch Kontextsensitive Unterstützung Erkennen von Texten Aufrufen von Aktionen Smart Tags Programmierung der Taskpane Dokumente auf Server verarbeiten Dateninseln für Offline Zugriff Datenaustausch VSTO 2.0

XML in Office Offenes XML-Dateiformat Verknüpfen der Dokumente mit einem XML-Schema GUI-Integration über Aufgabenbereich (auch Outlook ein bisschen) Excel Limitationen Features and limitations of XML Spreadsheet format http://office.microsoft.com/en-us/assistance/HP010733621033.aspx

Freitext

Freitext

Inhalt als XML <ConferenceReport> <Date>3/24/2004</Date> <Summary> <Keyword>XML Conference (Europe)</Keyword> <Abstract>Role of XML on the Desktop</Abstract> </Summary> <Attendees> <Attendee Name="John" Doe”> <Department>Health Agency</Department> <Potential> <Sales>100</Sales> <Growth>25%</Growth> <Remarks>The team comprises great innovators</Remarks> <ToDo>Contact their IT Manager</ToDo> </Potential> </Attendee> <Attendee Name="Judith" Jones”> <Department>Finance Agency</Department> </Attendees> <Conclusion>Organize another European tour </Conclusion> </ConferenceReport>

Formatierungen

Formatierung als XML WordML Eigenes Schema HTML ähnlich Keine verschachtelten Tags <w:p> <w:r> <w:rPr> <w:b /> </w:rPr> <w:t>John Doe</w:t> </w:r> <w:i /> <w:t>Health Agency</w:t> </w:p>

Dokumente und XML-Schemata Selbstdefinierte (Geschäfts-) Schemata Datenorientiert Kunde, Auftrag, Mitarbeiter, ... Erlauben Zerlegung des Dokumentes in Datenelemente MS-Referenz-Schemata Präsentationsorientiert Fett, Kursiv, Tabelle, Zelle, ... WordprocessingML, SpreadsheetML Erzeugen und verändern von Officedokumenten auf dem Server ohne Office WordprocessingML Transform Inference Tool Austausch mit heterogenen Systemen

Hello World - etwas schöner <?mso-application progid="Word.Document"?> <w:wordDocument xmlns:w="http://schemas.microsoft.com/office/word/2003/wordml" xmlns:v="urn:schemas-microsoft-com:vml" xmlns:w10="urn:schemas-microsoft-com:office:word" xmlns:sl="http://schemas.microsoft.com/schemaLibrary/2003/core" xmlns:aml="http://schemas.microsoft.com/aml/2001/core" xmlns:wx="http://schemas.microsoft.com/office/word/2003/auxHint" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:dt="uuid:C2F41010-65B3-11d1-A29F-00AA00C14882" w:macrosPresent="no" w:embeddedObjPresent="no" w:ocxPresent="no" xml:space="preserve"><o:DocumentProperties><o:Title>Hello World</o:Title><o:Author>John Peltonen</o:Author><o:LastAuthor>John Peltonen</o:LastAuthor><o:Revision>1</o:Revision><o:TotalTime>0</o:TotalTime><o:Created>2004-02-18T04:15:00Z</o:Created><o:LastSaved>2004-02-18T04:15:00Z</o:LastSaved><o:Pages>1</o:Pages><o:Words>1</o:Words><o:Characters>12</o:Characters><o:Company>3SHARP</o:Company><o:Lines>1</o:Lines><o:Paragraphs>1</o:Paragraphs><o:CharactersWithSpaces>12</o:CharactersWithSpaces><o:Version>11.5604</o:Version></o:DocumentProperties><w:fonts><w:defaultFonts w:ascii="Times New Roman" w:fareast="Times New Roman" w:h-ansi="Times New Roman" w:cs="Times New Roman"/></w:fonts><w:styles><w:versionOfBuiltInStylenames w:val="4"/><w:latentStyles w:defLockedState="off" w:latentStyleCount="156"/><w:style w:type="paragraph" w:default="on" w:styleId="Normal"><w:name w:val="Normal"/><w:rPr><wx:font wx:val="Times New Roman"/><w:sz w:val="24"/><w:sz-cs w:val="24"/><w:lang w:val="EN-US" w:fareast="EN-US" w:bidi="AR-SA"/></w:rPr></w:style><w:style w:type="character" w:default="on" w:styleId="DefaultParagraphFont"><w:name w:val="Default Paragraph Font"/><w:semiHidden/></w:style><w:style w:type="table" w:default="on" w:styleId="TableNormal"><w:name w:val="Normal Table"/><wx:uiName wx:val="Table Normal"/><w:semiHidden/><w:rPr><wx:font wx:val="Times New Roman"/></w:rPr><w:tblPr><w:tblInd w:w="0" w:type="dxa"/><w:tblCellMar><w:top w:w="0" w:type="dxa"/><w:left w:w="108" w:type="dxa"/><w:bottom w:w="0" w:type="dxa"/><w:right w:w="108" w:type="dxa"/></w:tblCellMar></w:tblPr></w:style><w:style w:type="list" w:default="on" w:styleId="NoList"><w:name w:val="No List"/><w:semiHidden/></w:style></w:styles><w:docPr><w:view w:val="print"/><w:zoom w:percent="100"/><w:displayBackgroundShape/><w:doNotEmbedSystemFonts/><w:proofState w:grammar="clean"/><w:attachedTemplate w:val=""/><w:defaultTabStop w:val="720"/><w:punctuationKerning/><w:characterSpacingControl w:val="DontCompress"/><w:optimizeForBrowser/><w:validateAgainstSchema/><w:saveInvalidXML w:val="off"/><w:ignoreMixedContent w:val="off"/><w:alwaysShowPlaceholderText w:val="off"/><w:compat><w:breakWrappedTables/><w:snapToGridInCell/><w:wrapTextWithPunct/><w:useAsianBreakRules/><w:dontGrowAutofit/></w:compat></w:docPr> <w:body><wx:sect><w:p><w:r><w:t>Hello World!</w:t></w:r></w:p> <w:sectPr><w:pgSz w:w="12240" w:h="15840"/><w:pgMar w:top="1440" w:right="1800" w:bottom="1440" w:left="1800" w:header="720" w:footer="720" w:gutter="0"/><w:cols w:space="720"/><w:docGrid w:line-pitch="360"/></w:sectPr></wx:sect> </w:body> </w:wordDocument> Namespace Declarations Document Properties Section Properties

Save ‘Data Only’ or Transform XML und Word Plain XML vs Word XML: Word Your XML Save ‘Data Only’ or Transform Microsoft Corp. Microsoft Corp. Database 2/21/2003 Strong Buy Strong Buy 2/21/2003 Transform Open/Save WYSIWYG Web Page WordML Microsoft Corp. 2/21/2003 Microsoft Corp. Strong Buy 2/21/2003 Transform Strong Buy

XML in Word-Formularen

XML - Schema Validierung Bei der Eingabe Platzhalter bei der Eingabe Dokumente schützen

Microsoft Office System 2003 Demo Word – XML – Excel

Fazit XML-Format eröffnet viele neue Wege Formulare in Word oder Excel Verarbeiten von Dokumenten ohne Office WordprocessingML Transform Inference Tool Schemavalidierung Datenaustausch Formulare in Word oder Excel InfoPath bietet mehr, ist aber nicht überall nötig Ablage im SharePoint Automatisch in DB eintragen Kontextsensitive Unterstützung für den Anwender folgt …

Smarte Dokumente Der klassische Weg

Was ist ein smartes Dokument ? Dokument ist mit einem XML Schema verknüpft Abhängig von der Cursorposition im Dokument passen sich Funktionen der Taskpane an SmartTags erkennen Text im Dokument Anwender kann Informationen und Aktionen für den erkannten Text abrufen Offline Funktionalität

Klassischer Weg: ISmartDocument COM Schnittstelle Von .NET aus unangenehm, wegen COM-Interop viel Late Binding Schnittstelle ist sehr altmodisch Steuerelemente werden über Index angesprochen Vertigo Wrapper für COM-ISmartDocument Kostenlos, mit Quellcode, nicht supported http://vertigosoftware.com/wrapper Neue Projekttypen in VS.Net Kapselt das ISmartDocument Interface Objektorientiert Programmierung einfacher Weniger Flexibilität

VSTO

Big View - Technologieübersicht Office Automation Zugriff auf Webservices keine Programmierung für die TaskPane BizTalk Server Share Point VBA und Webservice Toolkit Nachschlagen von Informationen Übernehmen von Daten in das Dokument Zwei einfache Webservices SQL Server Research Service Nachschlagen von Informationen Interaktion mit LOB Apps TaskPane Datenaustausch Information Bridge Framework XML Dateiformat und Schemata Formulare Prüfen der Daten Serververarbeitung Datenaustausch Kontextsensitive Unterstützung Erkennen von Texten Aufrufen von Aktionen Smart Tags Programmierung der Taskpane Dokumente auf Server verarbeiten Dateninseln für Offline Zugriff Datenaustausch VSTO 2.0

Office Professional Edition 2003 VSTO Roadmap Version 2005 Visual Studio projects for Word and Excel Document-centric customizations Word and Excel hosted in VS IDE View controls ActionsPane Schema-based programming model Server-accessible data island Managed SmartTags Version 2003 Visual Studio .NET 2003 Visual Studio 2005 Office Professional Edition 2003

Überblick VSTO Strategisches Tool für Office Entwicklung Office Applikationen haben COM-API VSTO soll Interop erleichtern VSTO 1.0 Nur eine dünne Schicht über der COM API VSTO 2.0 Word und Excel Vorlagen und Designer für VS.Net Outlook Add-ins InfoPath Toolkit Gedacht für professionelle Entwickler VS.Net .Net Framework Wird nicht VBA ersetzen (Für Enduser)

Features VSTO 2.0 Integrierte Designer für VS Voller Zugriff auf .NET Framework, Web Services, ADO .NET, integriertes Debugging Databinding, Data Cache (Offlinedata) Unterstützt managed Controls (Microsoft und Drittanbieter) Neue VSTO “Host” Controls Managed Document Actions Pane & Smart Tags Schemabasiertes Programmiermodell CLR-basiertes Sicherheitsmodell

Designer, Controls und die ActionsPane Word und Excel in Visual Studio

Neue Designer 1. Drag+Drop onto Designer 2. Designer-generated managed classes 3. First-class managed citizens

Controls Managed Controls (WinForms-Controls) Spezielle Host Controls Erweitern OO-Modelle, DataBinding Host Controls in Excel Chart, ListObject NamedRange, XMLMappedRange Host Controls in Word Bookmark XMLNode, XMLNodes Steuerelemente können dynamisch hinzugefügt und gelöscht werden Ermöglicht interaktive Dokumente, Controls werden abhängig vom Anwenderverhalten erzeugt und entfernt Dim txtData As Microsoft.Office.Tools.Excel.Controls.TextBox txtData = Me.Controls.AddTextBox(10, 10, 100, 100, "txtData") txtData.Text = "Hallo"

Programmierbare TaskPane 1. Design a UserControl 2. Add control behaviour 3. Add the control to the ActionsPane

ActionsPane Programmierung ActionsPane wird sichtbar, wenn Steuerelemente hinzugefügt werden Docking der TaskPane Nicht nur links, auch recht, oben und unten Stackorder der Controls Globals.ThisWorkbook.ActionsPane.Controls.Add (New DateTimePicker) Globals.ThisWorkbook.ActionsPane.StackOrder = Microsoft.Office.Tools.StackStyle.FromTop

Controls und ActionsPane Microsoft Office System 2003 Demo Controls und ActionsPane

Daten reisen mit dem Dokument Data-Island Daten reisen mit dem Dokument

Data Cache / Data Islands Dokumente können mit Daten befüllt werden Auf Server oder Client Data Caching erzeugt ein “Data Island” im Dokument Daten sind verfügbar, auch wenn der Client offline ist Klasse ServerDocument bietet Zugriff ohne Office Skalierbar und gut für ASP.NET geeignet VSTO Data-Caching unterstützt Alle Public Properties mit dem Cached-Attribut Klasse muss vom XMLSerializer serialisierbar sein

Dateninseln auf dem Client VSTO Assembly Data Island Web Services Schemas Client VSTO Runtime .NET Framework LoB Data Microsoft Office Professional 2003 Windows Client Deployment Server

Dateninseln auf dem Servers Data Cache Data Island VSTO ServerDocument Assembly Server-side Assembly Server .NET Framework Windows Server

Dateninseln im Dokument - Code Im Dokument “Sonntag”, Blatt “Tabelle1”: Auf dem Server ohne Office füllen <Cached()> Public derKunde As DI_Kunde_Lib.CKunde Dim dataHostItem1 As CachedDataHostItem = _ srvDoc.CachedData.HostItems("Sonntag.Tabelle1") Dim dataItem1 As CachedDataItem = _ dataHostItem1.CachedData("derKunde") If dataItem1.Xml Is Nothing Then Dim derKunde As New ClassLibrary1.CKunde derKunde.Name = "Marcel1" derKunde.Bestellung = "Bier1" dataItem1.SerializeDataInstance(derKunde) srvDoc.Save() srvDoc.Close() End If

Microsoft Office System 2003 Demo Data Islands

Kontextbezogene Hilfe Microsoft Office System 2003 VSTO - Smart Tags Kontextbezogene Hilfe

Was sind SmartTags? Erkennt Text in Dokumenten Bietet Aktionen dafür an Smart Tag Action Button Lila gepunktete Linie: Smart Tag Kennzeichnung

Entwicklung von Smart Tags Smart Tag COM-API Alle Möglichkeiten des .Net Frameworks Programmierung (COM-Interface) ISmartTagRecognizer, ISmartTagAction C#, VB.NET, C++ oder VB6 .Net Applikationen verwenden COM Interop und VSTO Loader Benötigen Setup (Einträge in die Registry) HKEY_CURRENT_USER\Software\Microsoft\Office\Common\Smart Tag\Recognizers SmartTags sind systemweit aktiv in allen SmartTag fähigen Applikationen und Dokumenten Microsoft Office Smart Tag List (MOSTL) Für “einfache” Smart Tags C:\Programme\Gemeinsame Dateien\Microsoft Shared\Smart Tag\LISTS\1031 Leichte Entwicklung und Deployment

Managed SmartTags mit VSTO und IBF VSTO bringt eigene Klassen mit Microsoft.Office.Tools.Word.SmartTag und … Action Microsoft.Office.Tools.Excel.SmartTag und … Action Sehr einfache Managed Entwicklung Aber nur lokal im Dokument gültig, werden im Dokument registriert, nicht systemweit Reicht aber in sehr vielen Fällen aus, ist sogar besser IBF-Client installiert ein generisches SmartTag Spezielle managed IBF-SmartTags implementieren SmartTags sind in allen IBF-fähigen Anwendungen gültig Siehe IBF-Teil

VSTO SmartTag Klassen SmartTag Objekt Konstruktor Parameter Excel: Microsoft.Office.Tools.Excel.SmartTag Word: Microsoft.Office.Tools.Word.SmartTag Namespace ist wichtig, es gibt auch Microsoft.Office.Interop.Word.SmartTag Konstruktor Parameter SmartTag Typ Caption Dim myTag As SmartTag = New SmartTag _ ("www.gnoth.net#office", "Product Info")

Recognizer initialisieren Recognizer erkennt Texte Terms Collection Statische Strings Achtung, nicht zu viele verwenden Expressions Collection Reguläre Ausdrücke myTag.Terms.Add("Tofu") myTag.Terms.Add("Halumi") myTag.Expressions.Add( _ New System.Text.RegularExpressions.Regex _ ("[A-Z]{1}[0-9]{3}"))

Aktionen hinzufügen Menüeinträge für SmartTag-Kontextmenü Action-Objekte erstellen Excel: Microsoft.Office.Tools.Excel.Action Word: Microsoft.Office.Tools.Word.Action Caption-Property setzen Zum Actions-Array des SmartTags hinzufügen Dim theAction As Action = New Action("Hole es Dir") myTag.Actions = New Action() {theAction}

Ereignisse einer Action BeforeCaptionShow Click AddHandler theAction.Click, New _ ActionClickEventHandler(AddressOf theAction_Click) AddHandler theAction.BeforeCaptionShow, New _ BeforeCaptionShowEventHandler(AddressOf _ theAction_BeforeCaptionShow) Sub theAction_Click(..., ByVal e As ActionEventArgs) Dim txtW As New TextBox txtW.Text = e.Text Globals.ThisDocument.ActionsPane.Controls.Add(txtW) End Sub

SmartTag mit Dokument verknüpfen VSTO-SmartTags sind nur in Dokumenten aktiv, mit denen sie verknüpft sind VstoSmartTags Collection Excel: ThisWorkbook class Word: ThisDocument class 'in Public Class ThisDocument Me.VstoSmartTags.Add(myTag)

Microsoft Office System 2003 Demo VSTO SmartTag

Verteilung und Sicherheit von VSTO-Anwendungen Microsoft Office System 2003 VSTO - Deployment Verteilung und Sicherheit von VSTO-Anwendungen

Sicherheit in VBA VBA-Code in Dokumenten kann geblockt werden Low, Medium, & High security modes AuthentiCode Signaturen für Code Authentifizierung Codeausführung: Alles oder nichts Anwender treffen „mutige“ Entscheidungen „Dumm, aber glücklich!“ 

Code Access Security (CAS) VSTO erzeugt normale .Net Assemblies CAS muß auf dem Client konfiguriert sein Caspol.exe oder .Net Framework Konfiguration Assembly Location Assembly Strong Name Keine Entscheidung des Anwenders Kein „Makro aktivieren J/N“ Caspol.exe -ag All_Code -url "file://C:/Smart Doc Files/*" FullTrust -n NorthwindSmartDocDemo

Dokumenten Sicherheit Dokument auf freigegebener Netzressource UNC SharePoint Dem Dokument muss vertraut werden Office Document Membership Condition http://msdn2.microsoft.com/en-us/library/9w6bd8f1(en-US,VS.80).aspx http://forums.microsoft.com/msdn/ShowPost.aspx?PostID=13696 Msosec.dll Oder Full Trust für freigegebener Netzressource

Verknüpfung Dokument – Assembly Dokument -> Eigenschaften In VSTO 1.0 Pfad zum Assembly In VSTO 2.0 nur GUID des Runtime Storage Control In VSTO 2.0 ist Application Manifest im Dokument gespeichert Application Manifest verweist auf ein Deployment Manifest auf dem Server Dok. auf dem Client Auf dem Server Deployment Manifest Assembly Dokument Application Manifest

Self Updating Process manifest.xml Deploy.xml ExcelApp.dll 1.1 ExcelDoc.xls Deploy.xml <manifest> . . . curVersion=”1.1” . . . </manifest> <manifest> . . . curVersion=”1.0” . . . </manifest> <manifest> <deploy url=http:…/deploy.xml version=“1.1”/> <assembly Name=“ExcelApp.dll” updateURL= http://../ExcelApp.dll ExcelApp.dll 1.1 <manifest> <deploy url=http:…/deploy.xml version=“1.0”/> . . . ExcelApp.dll 1.0 manifest.xml <manifest> <deploy url=http://…/deploy.xml version=“1.0”/> <manifest> <deploy url=http:…/deploy.xml version=“1.1”/> <assembly Name=“ExcelApp.dll” updateURL= http://../ExcelApp.dll

Verteilungswerkzeuge Publish Wizard Erstellt Application und Deployment Manifeste Verteilt Lösung an einen bestimmten Ort (http://Server/...) ServerDocument Klasse Methoden und Properties für den Zugriff auf Manifeste MSI Files Manuell msbuild.exe /target:Publish /property:PublishDir =\\PublishSrv\PublishDir\ /property:UpdateUrl =\\DeploymentSrv\DeployDir\ C:\ExcelWorkbook1\ExcelWorkbook1.csproj

Offline Zugriff auf Assemblies Wie kann sichergestellt werden, das der Anwender auch offline mit den Assemblies arbeiten kann? Installation der Assemblies lokal auf dem Computer Internet Explorer Cache IntelliMirror Die Dokumente können auch ohne Verbindung zum Assembly bearbeitet werden

VSTO Client Requirements Office 2003 Professional Edition SP1 Oder Excel/Word/Outlook standalone editions .NET Framework 2.0 VSTO 2005 Runtime Office Primary Interop Assemblies (PIAs) Sicherheitseinstellungen

VSTO 2003 Demo Publish Wizard

Information Bridge Framework Office Dokumente mit verschiedenen LOB – Daten verknüpfen

Big View - Technologieübersicht Office Automation Zugriff auf Webservices keine Programmierung für die TaskPane BizTalk Server Share Point VBA und Webservice Toolkit Nachschlagen von Informationen Übernehmen von Daten in das Dokument Zwei einfache Webservices SQL Server Research Service Nachschlagen von Informationen Interaktion mit LOB Apps TaskPane Datenaustausch Information Bridge Framework XML Dateiformat und Schemata Formulare Prüfen der Daten Serververarbeitung Datenaustausch Kontextsensitive Unterstützung Erkennen von Texten Aufrufen von Aktionen Smart Tags Programmierung der Taskpane Dokumente auf Server verarbeiten Dateninseln für Offline Zugriff Datenaustausch VSTO 2.0

Find Customer Account Rep Warum IBF ? Emails und Dokumente beziehen sich auf Geschäftsentitäten (Kunde, Bestellung, ... ) Daten befinden sich in verschiedenen Systemen Es gibt keinen einfachen Weg diese Daten in Beziehung zu setzen Schulung der Anwender für die Systeme Copy & Paste ist einzige Integration Zugriff auf LoB Daten über Webservices Oder Assemblies Wenig Programmierung,deklarativer Ansatz Dafür gute XML-Kenntnisse erforderlich MS Word Task Pane Option1 Child Label Mary : Ford order is late. Please investigate. Find Orders Copy & Paste Find Customer Account Rep

Demo Was kann IBF

IBF-Architektur Ablauf eines IBF-Requests 2 1 4 5 3 Client Server CAS Interprets “Context” using Metadata Metadata Service 1 User selects “Show Details” from Smart Tag IBF Metadata Store 4 Returns data CRM Information Bridge Engine 3 Call Web Service to retrieve data Smart Tag Displays data in Taskpane 5 Other Data ERP Client Server Information Bridge Framework XML Web Services IBF (Metadata Service) .NET Framework SQL Server 2000 Microsoft Office Professional Edition .NET Framework Windows Client Windows 2003 Server Services

Installation Server Client Windows 2003 + IIS für IBF-Webservices SQL Server 2000 + MOIBF 1.0 Server Client Office 2003 (mit Primary Interop Assemblies !!!) Visual Studio 2003 MOIBF 1.5 Client (Anwender, Entwickler) MOIBF 1.5 Meta Data Designer (Entwickler) ACHTUNG: verträgt sich nicht gut mit VS2005!  http://msdn.microsoft.com/newsgroups/default.aspx?dg=microsoft.public.office.informationbridge&mid=f7163331-ecd1-4588-8395-558890ca41dd LOB – Webservices

IBF-Entwicklung Eine kleines Projekt

Eine IBF-Lösung - Übersicht IBF ist ein Framework für: Zugriff auf Webservices Zugriff auf Assemblies Anzeige von Informationen in der TaskPane Interaktion mit SmartTags Eigentlich keine Programmierung Alles XML-Metadaten (XML, XSD, XSLT, XPath) Ausnahmen SmartTag (Standardlösungen vorhanden) Evtl. UserControls (können vom Wizard generiert werden) Evtl. WinForms Evtl. Webservices für LOB-Zugriff Evtl. Office Automation

Vorgehen bei IBF Programmierung Gründliche Planung (Use Cases) Definition von Artefakten und Entitäten Ansichten (View) der Entitäten (Geschäftsobjekte) Referenzen (Reference) für Zugriff auf Entitäten Beziehungen (RelationShip) zwischen Entitäten Operationen (Operation) Webservices Nach Möglichkeit an IBF angepasst Metadaten mit VS 2003 erstellen Designer + Wizards SmartTag mit VS 2003 programmieren

IBF – Views Darstellung einer Entität Views in XML planen Mind. eine Default-View Mehrere Views für eine Entität möglich Views in XML planen <Customer xmlns="NTeam-Data"> <CustomerID></CustomerID> <CompanyName></CompanyName> <ContactName></ContactName> <ContactTitle></ContactTitle> <EMail></ EMail > <Region></Region> <Phone></Phone> </Customer> <BookView xmlns=" NTeam-Data"> <ISBN></ISBN> <Title></Title> <SuggestedPrice></SuggestedPrice> </BookView>

IBF – References Ähnlich einem Primärschlüssel Ermöglichen Zugriff auf Daten einer bestimmten Entität ViewLocator verwendet die Referenzen Mehrere Referenzen für eine Entität möglich Mind. eine Default-Referenz Kunde – KundenID Kunde – Email <CustomerID ID="ALFKI" xmlns=" NTeam-Data " /> <CustomerEmail Address="Chef@Alfki.de" xmlns="NTeam-Data" /> <BookIDReference ISBN=”0972317937” xmlns="NTeam-Data"/>

Erstellen von Geschäftsklassen Nur, wenn Sie die Webservices selber erstellen Für jede View und für jede Referenz eine Klasse erstellen Diese Klassen mit XML-Attributen versehen Werden vom XMLSerializer in das geplante XML serialisiert Diese Klassen dienen als Parameter für die zu erstellenden Webservices

Erstellen der Customer-Klasse Klasse Customer mit XML-Attributen für den XMLSerializer [XmlRoot("Customer",Namespace="Cust...",IsNullable=false)] [XmlType("Customer", Namespace="Customer-Data")] public class Customer { // Customer ID [XmlElement] public string CustomerID { get{return this._CustomerID;} set{this._CustomerID = value;} } // Company Name [XmlElement] public string CompanyName { get{return this._CompanyName;} set{this._CompanyName = value;} } ... }

Erstellen der CustomerID-Referenz Klasse Customer_ID mit XML-Attributen für den XMLSerializer Analoge Klassen für die anderen Referenzen (Email, …) //<CustomerID CustomerID="ANYCUSTOMERID" xmlns="Cust..."/> [XmlRoot("CustomerID", Namespace="CustomerID-Data", IsNullable=false)] [XmlType("CustomerID", Namespace="CustomerID-Data")] public class Customer_ID { // Fields private string _CustomerID; // Customer ID Attribute [XmlAttribute] public string CustomerID { get{return this._CustomerID;} set{this._CustomerID = value;} } }

Erstellen der Webservices Beliebige Webservices können eingesetzt und kombiniert werden Eigene Webservices für Datenzugriff Können für IBF optimiert erstellt werden Weniger Transformationen Drei Arten von Webmethoden Get, Put, Act

Get- und Put- Methoden Liefern Entitäten als View zurück Bekommen eine Referenz übergeben Aktualisieren eine Entität im LOB-System mit den View-Daten [WebMethod] public Customer GetCustomer(Customer_ID objCustomerID) { ... } [WebMethod] public void PutCustomer(Customer objCustomer) { ... }

Act-Methoden Operationen, die über das Lesen und Schreiben von Entitäten hinausgehen z.B. BestellStatus ändern [WebMethod] public void ChangeOrderStatus(OrderID orderID, OrderStatus status) { ... }

Test-Methoden Webservices haben komplexe Datentypen (Klassen) als Parameter (Referenzen,…) Können nicht direkt mit dem IE getestet werden Deshalb Testmethoden mit einfachen Parametern (String, Integer, …) Diese rufen dann die „echten“ Methoden mit ihren komplexen Parametern auf [WebMethod] public Customer GetCustomerTest(string strCustomerID) { ... }

Meta Data Explorer und Wizards Metadaten erzeugen Meta Data Explorer und Wizards

Arten von Metadaten MetadataScope = Ein Projekt der IBF Lösung Entity = Geschäftsobjekt View = eine Ansicht eines Geschäftsobjektes View Locator = Referenz auf Daten einer View Relationship Autoren und Bücher Operations = Befehle Port = Verbindung zur Außenwelt XML-Schemata XSL-Transformationen Scope Entity Entity 2 Entity Entity 1 View 1 Relationship View 2 View Locator View Locator Operation Instance Operation Instance Port Port

IBF-Projekt anlegen Neuer Projekttyp in Visual Studio .Net 2003 Enthält nur eine Datei: MSIBFMetadata.xml Metadata Explorer Bearbeiten der MetaDaten MetaData Guidance Wizards

Importieren von Meta Daten XML-Datei mit den MetaDaten ist leer Eine Vorlage aus dem Ressource Kit mit Standardmetadaten importieren MOIBF1.5_Reskit_Templates Microsoft.InformationBridge. Framework.UI.Information BridgeScope.Metadata.xml WSDL vom Webservice Mit Merge zusammenführen

Meta Data Explorer Bearbeiten der XML-Datei Zwei Gruppen von Metadaten Daten und Logik Webservice Zugriffe Operations, Entities Darstellung Regions Views GUI-Elemente in der TaskPane

Service Metadata Creation Wizard Views erstellen Service Metadata Creation Wizard

Entity, View und ViewLocator Über Meta Data Gudiance Window starten Mit Wizard Artefakte erstellen Entity = Customer View = Darstellung der Entity ViewLocator besorgt die Daten für die View

Meta Daten Import Service Metadata Creation Wizard Demo Meta Daten Import Service Metadata Creation Wizard

Region Creation Wizard Die Darstellung

Die GUI

Region Creation Wizard Erzeugt eine Region UserControl HTML Erzeugt eine Action Für die Darstellung der Region Bug bei nicht englischem .Net Wizard verwendet XSD.exe und prüft englische Textausgaben!!  Lösung: Ressource-Datei umbennen C:\Programme\Microsoft Visual Studio .NET 2003\SDK\v1.1\Bin\DE\xsd.resources.dll

Action Aktionen sind wie Prozeduren Verwenden Operation-Instanzen wie Befehle Parameter können zwischen den Befehlen übergeben werden

Aktionen testen ControlLib-Assembly mit StrongName versehen Full Trust für Assembly auf Maschinenebene einstellen Erwarten Input-Parameter wie im Schema der Referenz definiert <CustomerID ID="ALFKI" xmlns="CustomerID-Data" />

Aktionen testen Build & Execute Action Button Build & Execute Action Context Menu Item

Erstellen einer Region Testen der Action Demo Erstellen einer Region Testen der Action

Publishing Metadata Drei Orte für die Metadaten XML-Datei in Visual Studio Meta Data Cache auf dem Client Meta Data Server Office 2003 IBF Engine Metadata Cache Information Worker Solution Developer VS .NET Metadata Designer XML File Client side Server side Read Write SQL Server Metadata Services

Publish Metadata Dialog URL zum IBF-Write-WebService

Testen einer IBF Lösung Meta Data Projekt als Startprojekt der Solution Word-Prozeß wird gestartet VS.Net hängt sich an den Word-Prozeß Projekteigenschaften: MetaData / Action Debugger Mode MetaData oder Managed BreakPoints im SmartTag-, UserControl-Code BreakPoints im MetaData-Explorer Beim Debuggen werden MetaDaten des VS-Projektes (XML-Datei) verwendet Office Applikationen laden Daten direkt aus dem Cache Bei Problemen: IBF Settings Manager

IBF Settings Manager Systemsteuerung -> Verwaltung

Testen einer Anwendung Demo Testen einer Anwendung

Ein bisschen Code muss sein! IBF – Smart Tags Ein bisschen Code muss sein!

IBF Smart Tag Projekt IBF geht eigenen Weg bei SmartTags Dll Projekt, mit Strong Name, FullTrust ! Referenzen auf: Microsoft.InformationBridge.Framework.Interfaces Microsoft.InformationBridge.Framework.UI.Interop COM: Microsoft.Office.Interop.SmartTag (Microsoft Smart Tags 2.0 Type Library) IActionHandler Kontextmenü des SmartTag hat Standardeintrag: „Show Details“ Eigene Kontextmenüeinträge anlegen IRecognizer

IRecognizer IRecognizer.Initialize IRecognizer.Recognize Wird beim Start von Word aufgerufen Laden von Daten, die erkannt werden sollen Achtung: nicht zu viele laden! IRecognizer.Recognize Erkennen von Text, der von Word übergeben wird Word-Paragraph, Excel-Cell, Buchstabe oder Wort,… SmartTag wird in das Dokument eingebettet Spezielles XML-Element: ContextInformation muss IBF Schema entsprechen Enthält angaben über Scope, Entity, View,…

ContextInformation-Element Diese Informationen werden vom SmartTag in das Dokument eingebettet <ContextInformation xmlns="http://.../InformationBridge/2004/ContextInformation“ MetadataScopeName="NorthwindIBF3" EntityName="Customers ViewName="Customer_View" ReferenceSchemaName="Xsd.CustomerID (CustomerID-Data)"> <Reference> <CustomerIDReference <CustomerID CustomerID=“ALFKI" xmlns="CustomerID-Data" /> </CustomerIDReference> </Reference> </ContextInformation>

SmartTag mit IBF verknüpfen Normale SmartTags werden als COM-Komponente registriert HKEY_CURRENT_USER\Software\Microsoft\Office\Common\Smart Tag\Recognizers IBF Client installiert ein Generic SmartTag Word / Excel kommunizieren mit diesem IBF-SmartTags werden mit der MetaData-Solution verknüpft Werden dann von IBF Engine geladen Generisches SmartTag leitet Aufrufe an IBF-SmartTags weiter Ports und Operations GenericSmartTags: Pfad zum Assembly mit IBF-SmartTag GenericRecognizer: Namespace.Klasse des Recognizers LoadRecognizer-Operation verweist bereits auf GenericSmartTag-Port

Fazit Hohe Lernkurve Sehr gute XML, XSLT, XSD, … Kenntnisse ! Unterstützung für Entwickler kann noch ausgebaut werden Version 1.5 seit Februar 2005 Zugriff auf beliebige Webservices möglich Metadaten werden einfacher, wenn die Webservices sich „wohlverhalten“ VSTO 2.0 bietet ähnliche Funktionalität Leichter für Entwickler mit .Net Erfahrung Client braucht IBF Runtime Vorgefertigte IBF-Lösungen, z.B.: Mendocino Von SAP und Microsoft Zugriff auf SAP Daten vom Office aus http://www.sap.com/solutions/mendocino/index.epx

IBF - Ressourcen dotnet magazin 10/05 + 12/05 IBF Artikel The Code Project IBF 1.5 Walkthrough - Part 1 http://www.codeproject.com/csharp/IBFWalkthroughPart1.asp IBF 1.5 Walkthrough - Part 2: http://www.codeproject.com/csharp/IBFWalkthroughPart2.asp James Henry, Developing Business Intelligence Solutions Using Information Bridge and Visual Studio .NET, ISBN: 0972317937 IBF-MOC Kurs Ressource Kit NewsGroup: nntp://msnews.microsoft.com/

Microsoft Office System 2003 Fazit Und was nun ...?

Ergebnisse VBA bleibt VSTO 2.0 wird ein großer Schritt nach vorn IBF steckt ist noch jung, hat aber großes Potential Research Services: gutes Aufwand/Nutzen Verhältnis Formulare in Word oder InfoPath Je nach Schwerpunkt ISmartDocument ist aufwendig zu programmieren Wird mit VSTO 2.0 obsolet Office Dokumente gewinnen viel durch XML Unterstützung Verbessertes Deployment und Security

Ressourcen rund um Office und .NET Office Zealot: www.officezealot.com MSDN Office: http://msdn.microsoft.com/office/ News Groups http://forums.microsoft.com/msdn/ShowForum.aspx?ForumID=16 Redistributable Primary Interop Assemblies http://www.microsoft.com/downloads/details.aspx?FamilyId=3C9A983A-AC14-4125-8BA0-D36D67E0F4AD&displaylang=en Programming Office Applications Using Visual C# http://msdn.microsoft.com/office/understanding/vsto/articles/default.aspx?pull=/library/en-us/odc_vsto2005_ta/html/officevstocsharpdev.asp

Alles wird gut  Uff...