Jens HäupelSr. Application Development ManagerMicrosoft Deutschland GmbH These postings are provided "AS IS" with no warranties, and confer no rights. Use of included code samples are subject to the terms specified at Microsoft - Information on Terms of Use
Jetzt ist es raus. Die Office Developer Conference 2008 findet vom 10.-13. Februar 2008 im sonnigen San Jose (Kalifornien) statt. Diesmal gibt es keine gesponsorte Anmeldung mehr, sondern man kann sich gleich über die Webseite registrieren.
Damit gibt es im Februar-März-Zeitraum einen wahren Kongferenz-Regen:
10. - 13. Februar 2008:
Office Developer Conference 2008 in San José
Zielgruppe: Entwickler von Lösungen auf Basis des Office Systems (VSTO, OBA, MOSS, WSS, WebParts, Workflows, etc.), die mit Visual Studio entwickeln
Early Bird Registration: Bis 30.11.2007 sparen Sie 200 US Dollar
19. - 21. Februar 2008:
Der deutsche Launch zu Visual Studio, Windows Server und SQL Server 2008, zusammen mit der deutschen SharePoint Konferenz
25. - 28. Februar 2008:
BASTA! Spring Edition in Frankfurt
03. - 06.März 2008:
SharePoint Conference 2008 in Seattle
Zielgruppe: IT-PROs und Lösungsentwickler außerhalb von VisualStudio (SharePoint Designer)
Melden Sie sich rechtzeitig an. Wir sehen uns auf einer der genannten Konferenzen.
ODF kommt ab vom eigentlichen Weg (nämlich ein einfach zu verwendender Standard für Dokumentenformate zu sein), nur um mit Microsoft zu konkurrieren, meint Gary Edwards, Mitbegründer der Open Document Foundation.
The eventual vehicle for converting document formats into an interoperable standard, Edwards continued, "must integrate into existing processes and infrastructure as a value-added service and not as a new - disconnected but collaborative - process. The conversion process must fit into existing MSOffice-bound workgroup-workflow business processes. And that means a high fidelity 'round trip' capable lossless conversion process."
Dies ist ja heutzutage mittels ODF nocht nicht erreicht und aufgrund der Beschränkung der Funktionalität auch nicht erreichbar (zumindest mit der derzeit vorliegenden Spezifikation).
Er nennt die Aufgabe, Dokumente müssen interoperabel sein mit dem Microsoft Desktop, und wendet sich in Zukunft in Richtung CDF (Compound Document Format).
It turns out that one of the key arguments ODF format advocates had been making against OOXML - that it was designed around Microsoft Office first and foremost - turned around and bit them.
Open Stack:
CDF and Grand Convergence
Das Board der Open Source Initiative (OSI) bestätigte, dass die Microsoft Public License (Ms-PL) und die Microsoft Reciprocal License (Ms-RL) den 10 Kriterien der Open Source Definition entspricht und somit darf unter diesen Lizenzen veröffentliche Software offiziell die Bezeichnung Open Source tragen.
Hier geht's zum Artikel...
Wußten Sie eigentlich, dass Microsoft eine Plattform rund um Bewerbungen betreibt, die sich mit Microsoft-Technologien beschäftigen? Nein? Dann schauen Sie mal hier:
Das Portal ist für Microsoft Partner-Unternehmen, die hier Stellenausschreibungen veröffentlichen können ebenso geeignet wie für Bewerber, die einen Job im Bereich der vielen Microsoft-Technologien suchen.
Oder aber Sie suchen Trainings, um Ihre Mitarbeiter weiterzubilden. Auch dann ist dieses Portal von Hilfe, vermittelt es doch Trainingsangebote von offiziellen Microsoft-Trainingspartnern. Direkter geht's nicht mehr. Jetzt sind Sie dran. Nutzen Sie es.
Microsoft und AIT veranstalten gemeinsam die Roadshow „Perfekt organisiert!“
Basierend auf fundierter Praxiserfahrung von mehreren Jahren Team System Expertise hat Microsoft gemeinsam mit der AIT (Applied Informations Technologies AG) Ihnen eine Abendveranstaltung der besonderen Art zusammengestellt. Lernen Sie wie Projektmanagement und -steuerung in professionellen Händen aussieht und wie der Visual Studio Team Foundation Server in praktischen Projektszenarien wirklich funktioniert.
Lassen Sie sich davon überzeugen wie auch Ihre Softwareentwicklung in Zukunft "Perfekt organisiert" werden kann und minimieren Sie Ihre Projektrisiken:
Direkt anmelden unter: www.aitag.com/tfsseminar
Im Blog von Scott Guthrie ist es zu lesen: Microsoft veröffentlicht den Source Code für die .NET Framework Bibliotheken!
Außerdem wird Visual Studio 2008 integrierten Debugging Support für diese Bibliotheken beinhalten, d.h. ein "Step into" auf einer Methode der Baseclass Libraries lädt diese herunter und geht in den Sorce Code deselben.
Das sollte Entwickler einen besser Einblick in die Funktionsweise der .NET Klassenbibliotheken geben und so in einigen Fällen sicherlich auch dazu beitragen, Fehler zu vermeiden. Natürlich darf man die Komplexität des Codes nicht unterschätzen, stecken da doch einige Millionen Zeilen Code drin.
Zum Artikel
Nachdem der Haufen Arbeit nach meiner 1-monatigen Auszeit nun ziemlich aufgearbeitet ist, habe ich auch mal wieder etwas Zeit, über nichttechnische Themen zu schreiben. Im August haben wir unsere beiden Kinder bei den Großeltern abgeladen und sind für ein paar Tage nach Paris geflogen. Mit Fotoausrüstung natürlich. Da das Wetter am Tage nicht so toll war, habe ich die meisten Fotos nach dem Sonnenuntergang geschossen. Die Pyramide im Louvre ist dabei ein tolles Fotoobjekt, aber ein wenig groß, um einen Gesamteindruck zu bekommen. Also mehrere Fotos gemacht (hatte mein Mini-Stativ mit) und später zusammengestückelt.
Das Zusammenstückeln erwies sich als nicht so einfach. Canon Image Sticher hatte seine liebe Mühe mit der perspektivischen Verzerrung bei 28 mm Brennweite und man konnte ganz deutlich die Bildränder sehen. Links und rechts war an der Pyramide jeweils ein Knick zu finden, ebenso wie am Dach der Gebäude. Photoshop CS machte es dann schon besser, aber mit wesentlich mehr Aufwand. Fündig wurde ich dann bei ... hmm, das darf ich noch nicht verraten. Jedenfalls ging es super einfach: Bilder markieren, Modus einstellen, done. Das Ergebnis sieht man hier.
VSTO 2008 wird all die Funktionalität von VSTO 2.0 und 2005 SE vereinen und dazu die noch fehlenden Stücke auffüllen.
Aus dem Blick des Visual Studio-Entwicklers sieht das dann so aus, jeweils für Office 2003 und 2007:
Ziel dabei ist es, die Forderung von Anwendern nach modernen Arbeitsplätzen zu erfüllen, in denen der Zugriff auf benötigte Informationen nur einen Klick entfernt ist. Und zwar im Office-Programm, mit dem am meisten gearbeitet wird, anstatt in vielen kleinen (oder auch großen und unüberschaubaren) Tools mit vielen Copy & Paste Operationen dazwischen. Stichwort: Office Business Applikationen. Damit entwickelt sich Office zur Entwicklungsplattform und zum Dreh- und Angelpunkt unserer Vision von Software + Services. Die Software ist in diesem Fall Ihre Anwendung (i.d.R. ein Teil eines Full Clients), welche auf der Plattform Office läuft (und natürlich die Vorteile und Funktionalität der Hostanwendung nutzt) und welche Services konsumiert, die wiederum von Serversystemen wie z.B. SAP zur Verfügung gestellt werden.
Folgende Kernfunktionalität wird zur Verfügung gestellt:
VSTO stellt damit eine RAD (Rapid Application Development) Plattform für professionelle Office-Entwickler dar. Noch nie war es so einfach, mit VB oder C# Office-Anwendungen zu entwickeln. Visuelle Designer für Ribbon und Outlook Form Regions erlauben schellste Erstellung der Oberfläche. Das Hinzufügen von TaskPanes (Aufgabenleisten, sowohl per Dokument als auch per Applikation) beschränkt sich auf eine Zeile Code. Sie können .NET Erweiterungen (Funktionen, Methoden) schreiben und diese in VBA nutzen und umgekehrt.
SharePoint Workflow Support (Designer der Workflow Foundation für SharePoint) reduziert die Anzahl der notwendigen Schritten auf 3, was die Entwicklungszeit drsatisch reduziert. An Content Control in Word können .NET Datenquellen gebunden werden, ohne eine Zeile Code schreiben zu müssen.
Und zu guter letzt bekommen wir 100%iges ClickOnce Deployment mit automatischen Updates (konfigurierbar), was uns gleichzeitig von der Notwendigkeit befreit, CAS Policies ausrollen zu müssen. Statt dessen wird die Solution mit einem digitalen Zertifikat signiert und auf den Zielmaschinen eine sog. Trusted Chain aufgebaut (Zertifikat in Trusted Publishers, Zertifikat des Herausgebers in Trusted Root).
Das Beste von allem: Es gibt keine solchen Versionsverknotungen und Mißverständnissen von bei früheren Versionen. VSTO 3.0 ist in Visual Studio (ab Professional Edition) enthalten.
Desweiteren laufen lösungen, die mit VSTO 2.0 oder 2005 SE geschrieben wurden, auch weiterhin unter der Runtime von VSTO 2008.
Links:
VSTO Help Search
VSTO Forum
VSTO Developer Center
VSTO 2005 SE
Visual Studio 2008 Beta 2 Download
Es existiert eine große Kluft zwischen Programm-Logik, die in einer Hochsprache geschrieben wurde und den Daten, mit denen wir arbeiten. Je mehr Daten wir zu verarbeiten haben, umso weiter ist die Entfernung von unserem Programm.
In Hochsprachen wie C# oder VB benutzen wir spezialisierte Datentypen, Objekte, Methodenaufrufe und hochgradig optimierte Compiler, während beim Datenzugriff alles auf ein paar Strings reduziert wird, die die SQL-Abfragen beinhalten. Wir werfen all die Vorteile über Bord, wenn wir sie am nötigsten brauchen.
Als Programmierer in diesem Dilemma müssen wir fit sein in zwei total unterschiedlichen Paradigmen (Syntax von SQL und der bevorzugten Programmiersprache) und zwei unterschiedlichen Typsystemen. Wir konvertieren also ständig Daten zwischen zwei verschiedenen Domänen. Wir sind gezwungen, ständig in zwei verschiedenen Richtungen zu denken. Diese Unstimmigkeit ist Ursache für menschliche Fehler und verschwendete Zeit.
Ist das ein Angriff auf SQL? Nein, das soll es nicht sein. SQL ist sehr ausdrucksstark, wenn es darum geht, große Mengen von Daten zu filtern, organisieren oder irgendwie aufzubereiten.
Aber wie wäre es, wenn wir diese Ausdrucksstärke von SQL näher an unsere Programm-Logik bringen könnten? Wenn wir diese konzeptuelle Distanz verringern könnten? Und an dieser Stelle kommen wir zu LINQ (Language Intergrated Query). LINQ bringt diese beiden Welten zusammen.
LINQ arbeitet (lokal im Speicher) gegen alles, was IEnumerable implementiert, sowie in Remote-Szenarien gegen das IQueryable Interface. Im ersten Fall werden direkt die Ojekte manipuliert, im letzten wird ein im Speicher abgebildetes Objektmodell in eine Abfragesprache umgesetzt, welche das Ziel verstehen kann (SQL bei LINQ to SQL)
Hier noch eine Auflistung der neuen Sprachfeatures, die in LINQ aufgehen. Unten sieht man schön die Extension Methods, in die die Query Expression aufgelöst wird.
Fazit:
Object == Data: LINQ behandelt Daten und Objekte gleich, die riesige Distanz wurde erheblich verringert.
Imperativ --> Deklarativ: Statt dem Compiler Schritt für Schritt zu sagen, wie er etwas tun soll, sagen wir nur noch, was wir am Ende erwarten
Und das funktioniert gegen Objekte, relationale Daten und XML
Links und Code-Beispiele:
The LINQ Projecthttp://msdn2.microsoft.com/en-us/netframework/aa904594.aspx
.NET Language-Integrated Query for XML Datahttp://msdn2.microsoft.com/en-us/library/bb308960.aspx
Scott Guthrie's Blog:http://weblogs.asp.net/scottgu/archive/2007/05/19/using-linq-to-sql-part-1.aspxhttp://weblogs.asp.net/scottgu/archive/2007/05/29/linq-to-sql-part-2-defining-our-data-model-classes.aspxhttp://weblogs.asp.net/scottgu/archive/2007/06/29/linq-to-sql-part-3-querying-our-database.aspxhttp://weblogs.asp.net/scottgu/archive/2007/07/11/linq-to-sql-part-4-updating-our-database.aspxhttp://weblogs.asp.net/scottgu/archive/2007/07/16/linq-to-sql-part-5-binding-ui-using-the-asp-linqdatasource-control.aspxhttp://weblogs.asp.net/scottgu/archive/2007/08/16/linq-to-sql-part-6-retrieving-data-using-stored-procedures.aspxhttp://weblogs.asp.net/scottgu/archive/2007/08/23/linq-to-sql-part-7-updating-our-database-using-stored-procedures.aspxhttp://weblogs.asp.net/scottgu/archive/2007/08/27/linq-to-sql-part-8-executing-custom-sql-expressions.aspxhttp://weblogs.asp.net/scottgu/archive/2007/09/07/linq-to-sql-part-9-using-a-custom-linq-expression-with-the-lt-asp-linqdatasource-gt-control.aspx
Denn dann werden wir den größten Launch Event aller Zeiten hinlegen. 3 Tage voller technischer Sessions und vieler Informationen rund um
Dazu gibt es exklusiv für die Teilnehmer Vollversionen unserer neuen Produktversionen (NFR - Not for Resale). Melden Sie sich also gleich an, denn die Kapazitäten sind begrenzt.
Parallel dazu gibt es ebenfalls in Frankfurt die deutsche SharePoint Konferenz 2008. Der Link zur Anmeldung ist der gleiche.
Wir sehen uns in Frankfurt.
... wie Downloads, Webcasts, Channel9 Videos, Demos, Labs, Whitepapers, ... findet man hier.
Sehr hilfreich.
Nach der Standardisierung des Open XML Formats durch die ECMA im letzten Jahr hat die ISO (bzw. deren stimmberechtigte Mitglieder) Open XML an die Initiatoren zurückgegeben. Dazu gab es eine Liste von Kommentaren, die aussagen, dass sich das Stimmverhalten der kommantarabgebenden Nationen ändern könnte, wenn der Inhalt dieser Kommentare adressiert wird, sprich Änderungen am Format vorgenommen werden.
Die Auszählung ergab 53% positive (>=66,66% nötig) und 26 % negative Stimmen (<=25% nötig).
Eine grafische Aufbereitung des Ergebnisses ist hier zu finden. Das ISO Press Release hier.
Eine Annahme eines Antrags auf Standardisierung erfordert mind. zwei drittel Ja-Stimmen (Je Land eine Stimme) der sog. "P Members" (Members participating in ISO/IEC JTC 1) und nicht mehr als 25% Nein-Stimmen insgesamt.
Was heißt das nun? Open XML bleibt vorerst eine technische Spezifikation, da der sog. FastTrack Prozeß ohne die erforderliche Zustimmung blieb. Microsoft hat nun bis voraussichtlich März 2008 Zeit, die Kommentare einzuarbeiten und die resultierenden Änderungen erneut vor zu legen (Ballot Resolution Period).Es hat sich gezeigt, daß Open XML eine breite Unterstützung erfährt und wir sind optimistisch, daß im März die Entscheidung zugunsten von Open XML ausfällt.
Was heißt das jetzt technisch gesehen? Es wird wohl gewisse Änderungen am Format geben, die nach efolgreicher Annahme als Standard im nächsten Jahr in schon bestehende Anwendungen eingearbeitet werden müssen. Die bestehenden Konverter werden beide Versionen lesen, aber nur noch die neue schreiben können müssen. Die ECMA wird die Änderungen ebenfalls aufnehmen müssen. Was genau erfolgen wird, werden die nächsten Monate zeigen.
Ich finde es schade, dass dieses Thema so sehr in einen politischen Schlagabtausch ausartete und nicht auf sachlich technischer Ebene geführt wird.
Anmerkung: Ich weiß, das dieses Ergebnis Open XML Opponenten zum frohlocken verleitet. Daher die Bitte, pubertäre Äußerungen dazu in den Kommentaren zu diesem Post zu unterlassen. Ich werde nur konstruktive Kommentare veröffentlichen.
In der Ausgabe 10.07 des dot.net Magazins wurde leider von den Redakteuren des Verlags ein Teil meines Artikels (Office Lösungen auf der Basis von VSTO 2007 richtig paketieren und ausliefern) "verschlimmbessert". Da heißt es auf Seite 25 in Spalte 3, der Windows Installer könne die Registry-Einträge automatisch nach HKLM umsetzen, wenn er die Installation für alle Benutzer erkennt. --- Fast. Man muß ihm das nur sagen. Außerdem ist wohl die Einschränkung bzgl. Add-Ins für alle Benutzer und Office 2007 unter den Tisch gefallen.
Korrekt sollte es so heißen:
Noch mehr Hilfe kommt bei den Registry-Einträgen für Add-Ins (Abb. 1). Ja, es müssen leider noch welche geschrieben werden, weil Office in guter alter COM-Technologie programmiert worden ist und Erweiterungen auch in eben dieser erwartet. Aber keine Angst, um COM Interop braucht sich dank VSTO niemand mehr zu kümmern. Nur die Kommunikation mit Office, also welches Add-In für welches Programm bereit steht, lesen die Office-Programme aus der Registry – so wie auch ClassID, ProgID usw. Die gesamte Arbeit nimmt einem der automatisch ablaufende Wizard ab. Nun könnte allerdings eine Frage aufkommen: Alle Einträge stehen unter HKCU. Was ist bei einer per Machine Installation? Muß dann alles selbst eingetragen werden? Nein. Man kann den gesamten Registry-Baum von HKCU nach „Machine/User Hive“ verschieben, was dazu führt, daß je nach ALLUSERS Property die Einträge entweder in HKCU oder HKLM geschrieben werden. So einfach ist es aber nicht.Während Office 2003 noch systemweite VSTO Add-Ins erlaubt, werden diese von Office 2007 nicht mehr geladen. Office 2007 setzt das Flag für das Ladeverhalten (LoadBehavior) solcher Add-Ins zurück auf 0. Der Grund dafür ist in erhöhten Sicherheitsstandards zu suchen. Da der normale Anwender keinen Schreibzugriff auf HKLM hat, kann er auch das Ladeverhalten des Add-Ins nicht beeinflussen und damit auch nicht wählen, ob er es verwenden will oder nicht. Shared Add-Ins (COM Add-Ins, die direkt gegen IDTExtensibility2 gehen) sind davon nicht betroffen.Office 2007 arbeitet enger mit VSTO zusammen als alle Versionen vorher und lädt VSTO-Add-Ins schneller, wenn es einen Manifest Key in der Registry findet. VSTO 2.0 hat 2 Keys: ManifestLocation und ManifestName, VSTO 2005 SE nur noch einen: Manifest. So kann Office auch zwischen beiden VSTO-Versionen unterscheiden.
Desweiteren sind Launch Conditions keine Benutzerdefinierten Aktionen sondern Startbedingungen.
Wenn ich im August keinerlei Fragen beantwortet oder auch sonst nicht reagiert habe, dann liegt das nicht daran, dass ich von allem die Nase voll hatte und allein und ohne Wasser eine Durchquerung der nächstbesten Wüste vorgenommen habe. Ich wollte mir dagegen einfach Zeit für meine Familie und besonders für meine beiden Kinder Katrina und Marc nehmen. In meinem Job ist man doch hin und wieder unterwegs und oftmals muss die Familie darunter leiden.
Somit hatte ich viel Zeit für kingerechte (Mega-) Spiel-Parks, Ausflüge und einfach Blödsinn mit den Kindern machen. Es war zwar nur ein Monat (es ist schließlich auch eine finanzielle Frage), aber ich kann es allen empfehlen, die in einer ähnlichen Situation sind. Die Zeit, wenn die Kinder noch klein sind, geht viel zu schnell vorbei. Und dann hat man alles verpaßt.
Auf jeden Fall bin ich jetzt wieder im Lande und werde mich auch weiterhin um .NET-Themen kümmern.Vielleicht sieht man sich ja auf der Basta in Mainz.
Folgende neue Downloads sind ab sofort verfügbar:
Visual Studio 2008 Beta 2 bringt das .NET Framework 3.5 und die Möglichkeit, das Target Framework einzeln auszuwählen (2.0, 3.0, 3.5). Dazu noch innovative Sprach Features wie LINQ (Language Integrated Query Framework), Support für AJAX-Style Applications und natürlich integrierte Anwendungsentwicklung für Office 2003 und 2007 (VSTO 2008).
Visual Studio 2008 Express Editions Beta 2
Coding 4 Fun Developer Kit ist ein Toolkit für Entwickler, die Windows Vista Funktionalität nutzen wollen, aber den Aufwand der direkten Windows APIs scheuen. Es werden folgende Klassen bzw.Beispiele geboten:
Bluetooth (Serial Port, File Transfer and Object Push)Windows Contacts API (Windows Vista’s Contacts data store nutzen + support für Import / Export von vCards, Suchen nach Kontakten )Messaging (SMTP und POP3)Power Management (Reboot, Hibernate, Lock Computer; Batteriestatus)Windows Desktop SearchWindows Vista Picture Acquisition (Bilder + Videos von angeschlossenen Geräten holen)Preview Handler (File Types auflösen, Handler bauen) Sound Recorder (Audio aufnehmen und abspielen mit Windows Vista's APIs)RSS ScreenSaver SampleP2P Picture Share Sample
Hatten Sie schon einmal das Bedürfnis, Visual Studio ohne die ganzen Sprachen, die da integriert sind, als Plug-In-Umgebung für eigene Tools nutzen zu wollen? Ging nicht. Also doch Eclipse. Nein, das muß nicht mehr sein. Visual Studio 2008 wird seine Shell kostenfrei und lizenzgebührenfrei im Visual Studio SDK zur Verfügung stellen, um genau so etwas zu erlauben. Das nennt sich dann Visual Studio Shell.
In Verbindung mit Domain Specific Languages (DSL) ein willkommenes Werkzeugt, um separate Tools zur Modellierung und Analyse, aber auch solche zur Integration in Visual Studio zu bauen. Schauen Sie selbst.
HP glaubt an die Wahlfreiheit der Anwender und ist für die Standardisierung von Open XML. Das Statement ist auf der Enterprise Business Webseite von HP zu finden.
"In the current vote on OOXML at JTC 1, HP is supporting an affirmative vote in those national standards bodies in which HP is active."
Office als Plattform - das zumindest erzählt Microsoft (ich auch) schon seit längerem. Doch welche Technologien zählen denn zur Office-Entwicklungsplattform? Antwort: Viele. Eine genauere Antwort gibt ein jetzt veröffentlichtes Architekturdiagramm:
Sind die Augen nicht mehr so gut wie früher? Der Link hinter dem Bild führt zum Download einer Visio- bzw. XPS-Datei. (Letztere kann unter Windows Vista direkt im Browser betrachtet werden, für XP und Windows Server 2003 gibt es ein XPS Essentials Pack).
Es wird ja immer behauptet, Windows sei viel unsicherer als andere Betriebssysteme der Gegenwart. Schon aus historischen, prinzipiellen und anderen hier nicht genannten Gründen. Security Experte Jeff Jones über den Vergleich:
"Einer Analyse zufolge hat sich Windows Vista sicherheitstechnisch in den ersten sechs Monaten mehr als wacker geschlagen – und damit im Vergleich mehrere Linux-Distributionen und Mac OS X schlecht aussehen lassen ...". Aus der Studie: Vista sicherer als ... von Heise.
Aber Vista ist trotzdem schlechter als Linux und MacOS. Schon aus Prinzip. Oder?
Tom Robertson, General Manager, Interoperability and Standards and Jean Paoli, General Manager, Interoperability and XML Architecture in einem offenen Brief über Interoperabilität, Anwenderbedürfnisse und Weiterentwicklung von Formaten.
Ein paar Key Messages daraus:
Oftmals wird das Thema reduziert auf genau das: Microsoft gegen IBM und SUN Microsystems. Was soll das? Seit wann schadet ein Mehr an Auswahl dem Anwender? Wieso soll es nur einen geben können, wenn der eine nicht einmal alle Szenarien abdeckt? Wollen Sie wissen, was Damir Tomicic, Managing Director von Axinom (Entwicklung von IT Solutions, Services und Consulting) zu offenen Standards und Flexibilität und dem, was die Industire wirklich braucht, sagt dann lesen Sie hier weiter.
Wer ist der größte Pioneer der Programmiersprachen? Bill Gates? Nikolaus Wirth? Für mich ist und war es immer Anders Hejlsberg, dessen Name für Turbo Pascal, Delphi und C# steht. Die neueste Erfindung trägt den Namen Language Integrated Query Framework, oder kurz LINQ. Mit LINQ wird der Abstand zwischen dem Umgang mit Daten und der eigentlichen Programmiersprache wieder kleiner und gerade in Bezug auf XML, speziell Open XML, ist es sehr gut zu gebrauchen, um den Umgang mit den Daten einfacher und verständlicher zu machen.
Ein Beispiel: Wenn wir dieses XML Document erzeugen müßten:
<worksheet xmlns="http://schemas.openxmlformats.org/spreadsheetml/2006/main">
<sheetData>
<row r="1">
<c r="A1" t="inlineStr">
<is>
<t>Sample Text</t>
</is>
</c>
</row>
</sheetData>
</worksheet>
dann könnte das - getan mit dem XML DOM - etwa so aussehen:
const string spreadsheetML = @"http://schemas.openxmlformats.org/spreadsheetml/2006/main";
XmlDocument xDocWS = new XmlDocument();
XmlElement tagWorksheet = xDocWS.CreateElement("worksheet", spreadsheetML);
xDocWS.AppendChild(tagWorksheet);
XmlElement tagSheetData = xDocWS.CreateElement("sheetData", spreadsheetML);
tagWorksheet.AppendChild(tagSheetData);
XmlElement tagRow = xDocWS.CreateElement("row", spreadsheetML);
tagRow.SetAttribute("r", GetRowNumber(cellAddress));
tagSheetData.AppendChild(tagRow);
XmlElement tagCell = xDocWS.CreateElement("c", spreadsheetML);
tagCell.SetAttribute("r", cellAddress);
tagCell.SetAttribute("t", "inlineStr");
XmlElement tagIS = xDocWS.CreateElement("is", spreadsheetML);
tagCell.AppendChild(tagIS);
XmlElement tagText = xDocWS.CreateElement("t", spreadsheetML);
tagText.InnerText = cellValue;
tagIS.AppendChild(tagText);
tagRow.AppendChild(tagCell);
Der hierarchische Aufbau geht völlig verloren und damit auch schnell der Überblick. Man muß immer darauf achten, was man wo anhängt. Mit LINQ to XML wird es dagegen viel übersichlicher:
XNamespace ns = @"http://schemas.openxmlformats.org/spreadsheetml/2006/main";
XDocument xdocWS =
new XDocument(
new XElement(ns + "worksheet",
new XElement(ns + "sheetData",
new XElement(ns + "row",
new XAttribute("r", "1"),
new XElement(ns + "c",
new XAttribute("r", "A1"),
new XAttribute("t", "inlineStr"),
new XElement(ns + "is",
new XElement(ns + "t", "Sample Text")
)
);
Der hierarchische, geschachtelte Aufbau fällt sofort ins Auge und die Tatsache, daß Attribute in einem Zug angelegt und mit einem Wert versehen werden können, erspart viel Zeit. Auch der Umgang mit Namespaces wird einfacht.
LINQ wird im .NET Framework 3.5 (Visual Studio Codename "ORCAS") enthalten sein. Es lohnt sich, schon jetzt einen Blick darauf zu werfen.
In den letzten Wochen habe ich ein paar Code Clips zur Open XML Programmierung mit .NET aufgenommen. Code Clips sind kommentierte "Visual Studio Videos" mit wenigen bis gar keinen Powerpoint Folien (Ausnahme: Code Clip 1 - Vorstellung Open XML Format). Seit ein paar Tagen sind diese nun online auf MSDN-Solve verfügbar.
Folgende Themen sind hier abrufbar: Das Microsoft Office Open XML-Format
Überblick über die Architektur des Open XML Dateiformats. 22:51 Minuten Wie kann ich die Dokumenteigenschaften eines Office 2007 Dokuments auslesen und verändern? 21:49 Minuten Wie kann ich in einem Word Dokument eingebettete Bilder auslesen? 20:48 Minuten
Wie kann ich in einem Word Dokument referenzierte Bilder auslesen? 10:07 Minuten Wie kann ich ein Word 2007 Dokument programmatisch und ohne Zuhilfenahme von Word erzeugen? 22:04 Minuten Wie kann ich Word Content Controls an XML Datenquellen binden? 24:47 Minuten Wie kann ich den Custom XML Data Store mit Hilfe des .NET Frameworks auslesen? 21:09 Minuten Wie kann ich den Inhalt eines Word 2007 Dokuments auslesen? 12:23 Minuten Wie erzeuge ich ein Excel 2007 Dokument ohne Zuhilfenahme von Excel? (Teil 1 von 4) 18:43 Minuten Wie erzeuge ich ein Excel 2007 Dokument ohne Zuhilfenahme von Excel? (Teil 2 von 4) 14:58 Minuten Wie erzeuge ich ein Excel 2007 Dokument ohne Zuhilfenahme von Excel? (Teil 3 von 4) 17:54 Minuten Wie erzeuge ich ein Excel 2007 Dokument ohne Zuhilfenahme von Excel? (Teil 4 von 4) 08:12 Minuten
Viel Spaß beim Anschauen.
Gestern abend (MEZ) wurde auf der TechEd 2007 in Orlando das Microsoft Open XML SDK der Öffentlichkeit präsentiert. Es handelt sich um ein Set von Klassen und Methoden rund um System.IO.Packaging, welches es dem Open XML Entwickler leichter machen soll, Daten aus Open XML Dateien zu extrahieren, die Dateien zusammenzubauen oder zu erweitern. In der Online Dokumentation ist besonders der How do I Part zu erwähnen, der Code-Beispiele zum besten gibt.
Was muss man tun, um das SDK verwenden zu können?
Einfach - nach dem Installieren desselben, versteht sich - eine Referenz auf Microsoft.Office.DocumentFormat.OpenXml setzen und den Namespace Microsoft.Office.DocumentFormat.OpenXml.Packaging inkludieren. Dann kann's los gehen. Hier ein Beispiel, wie aus Powerpoint-Präsentationen die Notizen ausgelesen werden können:
private const string drawingML = "http://schemas.openxmlformats.org/drawingml/2006/main";
public static void GetCommentsFromPPTDocument(string filePath)
{
XmlDocument xmlComments = new XmlDocument();
using (PresentationDocument docPPT = PresentationDocument.Open(filePath, false))
PresentationPart mainPart = docPPT.PresentationPart;
foreach (SlidePart sp in mainPart.SlideParts)
NotesSlidePart notesPart = sp.NotesSlidePart;
if (notesPart != null)
xmlComments.Load(notesPart.GetStream());
XmlNameTable nt = new NameTable();
XmlNamespaceManager nsmgr = new XmlNamespaceManager(nt);
nsmgr.AddNamespace("a", drawingML);
string notes = string.Empty;
foreach (XmlNode xn in xmlComments.SelectNodes("//a:r", nsmgr))
notes += (xn.SelectSingleNode("a:t", nsmgr).InnerText);
}
if (notes != string.Empty)
MessageBox.Show(notes);
Das sieht doch schon ein ganzen Stück einfacher aus als vorher. Okay, es werden noch keine Absatzwechsel berücksichtigt, aber das kann jeder selbst tun. Wir sehen aber auch, dass man ohne XML-Wissen nicht weiter kommt, bekommt man doch ein XMLDocument zurück, was noch nach dem gewünschten Inhalt durchsucht werden will. Aber dank XPath geht das relativ flott vonstatten.