.NET-Bibliotheken aus PHP aufrufen

Bei meiner Arbeit standen wir kürzlich vor der Aufgabe, eine Windows-.NET-DLL-Funktion aus PHP anzusprechen. Interessanterweise ist die COM-Unterstützung bei allen geläufigen PHP-Versionen für Windows seit Version 4 bereits eingebaut. Auch eine .NET-Unterstützung ist vorgesehen, jedoch schlecht dokumentiert. Dieser Beitrag soll den aktuellen Stand unserer Bemühungen dokumentieren.

Voraussetzung
Nur der Zend Server Community Edition bringt im Moment ein PHP 5.3.5 mit aktivierter .NET-Unterstüzung mit: Die Extension com_dotnet ist enabled.
Weder XAMPP noch WAMP haben diese von sich aus einkompiliert.

Anforderungen an die DLL
Um eine .NET-DLL mit dieser Extension ansprechen zu können, muss sie folgende Anforderungen erfüllen:

  • Die .NET-Frameworkversion darf maximal 3.5 sein. .NET 4.0 funktioniert aktuell nicht.
  • Die DLL muss streng benannt und signiert sein (strongly named & signed)
  • Die Funktionen der DLL müssen COM accessible sein (Kann in den Assembly informations aktiviert werden.)
  • Die DLL muss sich im Global Assembly Cache/GAC befinden. Mit dem Kommandozeilenbefehl gacutil /i NAME.dll wird sie dort hin befördert.

Der letzte Punkt ist wahrscheinlich auch der Grund, warum PHP keine 4.0-DLLs schluckt: Im Gegensatz zum alten GAC unter c:/Windows/assembly befindet sich der neue GAC unter c:/Windows/Microsoft.NET/assembly. Je nach Frameworkversion landet die DLL automatisch im richtigen GAC, wird aber von PHP nur im ersteren gesucht.

Verwendung
Um eine .NET-Klasse aus einer DLL zu instanzieren, benötigt man den vollen Namen der Assembly und den kompletten Klassennamen. Ein Tool wie ILSpy hilft dabei, diesen herauszufinden und wie folgt zu verwenden:

$obj = new DOTNET('Voller.Assembly.Name, Version=1.0.0.0, Culture=neutral, PublicKeyToken=a8425bc35256e463', 'Voller.Assembly.Name.Klassenname');
 
echo $obj->MeineMethode();

Da mit dieser Extension immer eine Klasse instanziert wird, sind dementsprechend nur Klassenmethoden aufrufbar. Statische Klassen und Methoden funktionieren nicht und erzeugen nur kryptische Fehlermeldungen.

Ich hoffe, mit diesem Artikel anderen Benutzern dieser exotischen Kombination von Systemen etwas weitergeholfen zu haben. Kommentare und Anmerkungen sind herzlich willkommen.

Real artists ship.

Der Erfolg von Apple gründet in einer einfachen Tatsache: Apple-Produkte kann man kaufen.

Prominentestes und aktuellstes Beispiel ist das iPad: Apple hat im Januar 2010 ihre Idee eines Tablets vorgestellt. Als Reaktion hatte Microsoft damals ein Konzeptvideo ihrer Vision online gestellt: Das Courier.

Drei Monate später hat Apple bereits hundertausende iPads verkauft.

Und Microsoft? Sie haben das Courier-Projekt still und nur mit einer scheinheiligen Begründung abgebrochen.

Am gleichen Tag tauchen Gerüchte auf, dass HP ihr prominentes Tablet Slate ebenfalls in den Papiereimer befördert hat.

Die Existenz des Neofonie WePads wurde bis vor kurzem auch angezweifelt, diese scheinen sich aber wieder erholt zu haben.

Vom Google Chrome OS hört man seit Monaten nichts mehr.

„Real artists ship.“ ist eines der berühmtesten Zitate von Steve Jobs. Und nur wer Produkte verkauft, kann auch Produkte verkaufen. Das ist kein mythisches realitätsverzerrendes Feld, welches den Apple-Chef umgibt, sondern einfachste Marktwirtschaft.

Ergänzung: Zum gleichen Them publizierte Counternotions 2008 einen Artikel darüber weshalb Apple keine Konzeptstudien erstellt. Und verlinkt das letzte öffentliche Konzeptvideo von Apple aus 1987: Der Knowledge Navigator.

Hohe Ansprüche an Apple (Oder: Kein Copy & Paste für Windows Phone 7 Series)

Letzte Woche hat Microsoft bestätigt, dass die kommende Version ihres mobilen Betriebssystemes, Windows Phone 7 Series, über keine Copy & Paste-Funktionalität verfügt*.

Nachdem zahlreiche Blogs und Medien jahrelang auf das Apple iPhone eingeprügelt hatten, weil dieses bis zu einem Softwareupdate Anfangs 2009 ebenfalls kein Copy & Paste konnte, kommt nun Microsoft und verkündet dasselbe.

Die Reaktion? Keine**.

Ich habe drei Thesen hierzu:

  1. Niemand benutzt Copy & Paste. Diese Funktionalität tönt auf dem Papier zwar gut und wurde von uns Kunden gewünscht, aber nicht benötigt.
  2. Niemand interessiert sich für Windows Phone 7 Series.
  3. An Apple werden höhere Ansprüche gestellt, als an ale anderen Hersteller.

Ersteres glaube ich nicht. Persönlich benutze ich Copy & Paste auf meinem intensiv genutzten iPhone auch selten. Die Implementation ist aber derart unauffällig, dass das Interface keinen Platz durch zusätzliche Menus oder Knöpfe wegnimmt. Das iPhone OS muss dazu keinen Kompromiss eingehen und somit stört die Anwesenheit von Copy & Paste nicht.

Das Interesse an Microsoft neuestem Versuch ist da. Es sieht überraschend gut aus.

Also bleibt noch These Drei: Apple als revolutionäre Ideenschmiede wird derart bewundert, dass damit auch die Ansprüche an die Firma ins Unermessliche steigen. Liest man Artikel wie „Es lebe die Apple-Diktatur!“ der TA Media, so habe ich den Eindruck, dass uns Appleprodukte regelrecht aufgewungen werden. Und dass jede Einschränkung von seiten Apple direkt unser eigenes Leben einschränkt.

So ein Unsinn.

In den letzten Jahren hat sich einiges getan auf dem Mobiltelefoniemarkt: Mit Android, WebOS und Maemo sind würdige Konkurrenten aufgetreten (Drei Jahre später, aber immerhin). Das iPhone ist nicht mehr das einzige brauchbare Telefon am Markt.

Bei den iPods und bei den Laptops, bei den TV-Settopboxen und beim Online-Musikkauf, überall gibt es Konkurrenten welche ähnliches leisten und das meistens für weniger Geld.

Wir kaufen bei Apple ein, nicht weil wir müssen, sondern weil wir es uns leisten können.

* = Multitasking übrigens auch nicht.
** = Neuerdings.com, ich rede von dir!

Wo sind all die Windows-Entwickler?

Die Applikation ist bereits 15 Jahre alt und hat schon mehr als einen Technologiewechsel gesehen: Angefangen bei Delphi, besteht sie heute hauptsächlich aus Visual Basic-Code, sieht aber noch aus wie zu Windows 3.11-Zeiten.

Dieses Mal ist es an mir in den Code-Dschungel vorzustossen, aufzuräumen und sie schreiend und um sich schlagend ins nächste Jahrhundert zu schleppen. Für mich als Webentwickler ein besonders spannendes Projekt; habe ich doch noch nie nur eine Zeile Code für Windows geschrieben.

Kein Problem, sage ich mir, und schicke als erstes eine Mail in die Runde meiner IT-Freunde und ehemaligen ETH-Mitstudenten: Wer hat Erfahrungen mit Windows-Entwicklung und kann mir ein paar Ratschläge zur Technologiewahl geben?

Offenbar niemand.

Eine Auswahl der Antworten: „Ich mache nur noch Webapplikationen mit Ruby.“ – „Java.“ – „Bin gerade an einer iPhone-Applikation.“ – „Java.“ – „Server-Entwicklung unter Linux.“ – „Java.“…

Wo sind all die Windows-Entwickler hin? Wird Microsoft jetzt definitiv abgehängt? Irgendwie kann ich das nicht ganz glauben, aber im Moment verlassen Generation um Generation von Informatikern mit ihren MacBooks die Universitäten und lassen Windows zunehmend im Regen stehen. Ist Google mit ihrem browserbasiertem Betriebssystem Chrome OS tatsächlich näher am Puls der Zeit?

Billiges Apfelmus

Heute lieferte Apple einen Haufen an Aktualisierungen ab. Details dazu finden sich im Netz zu Genüge, ich werde sie hier nicht wiederkäuen.

Ein Gedanke kam mir trotzdem: Mit dem 29$-Betriebssystem, mit dem 99$-iPhone und den teilweise stark vergünstigten Laptops hat Apple Microsoft dort getroffen wo es besonders weh tut: Tiefere Preise. Laut der Laptop Hunters-Werbekampagne von Microsoft sind das nämlich die Hauptargumente gegen Macs. (Die Preise für das kommende Windows 7 werden erst demnächst veröffentlicht. Fest steht schon jetzt dass es teuer und mit seinen 6 verschiedenen Varianten sehr kompliziert wird.)

Schöne Aussichten. Zusammen genossen mit Freunden aus aller Inter-Welt: [1] [2] [3] [4]