Archiv der Kategorie Allgemein

API Integration Security, Benutzer und Konfigurationsverwaltung

Nachdem ich die Benutzerverwaltung bereits vor einigen Tagen nahezu vollständig mit der SOAP Schnittstelle verheiratete, wurden jetzt noch diesbezüglich einige Lücken in der API geschlossen.

Zur ‘sauberen’ Trennung der Zugriffe auf Properties durch den internen Programmcodes und im Sinne eines gut handhabbaren API-Designs, wurde ein Session-Konzept eingeführt, das zusätzlich eine individuelle Filterung der Properties je Benutzer ermöglicht.

Im Prinzip hat sich für Nutzer der API kaum etwas geändert; neu ist ein bequemes ‘login’ für user, sowie die Notwendigkeit, sich vor Zugriff auf die meisten API-Methoden eine Instanz einer C7Session liefern zu lassen.

 

Beispiel Code vorher

package de.myApp.sample;
...
   public static void main(String[] args) throws Exception {
     // Initialization of C7
     C7Manager.init("c7.prop");                                            // activates C7 - c7.prop is the file

     // Create a property entry
     C7Property firstProperty = new C7Property("firstKey", "firstValue");  // "firstKey" identifies the property
                                                                           // "firstValue" is the parameter value
     C7Manager.setProperty(firstProperty);                                 // store Property

 

Beispiel Code aktuell

package de.myApp.sample;
...
   public static void main(String[] args) throws Exception {
     // Initialization of C7 and getting a session
     C7Manager.init("c7.prop");                                            // activates C7 - c7.prop is the file
     C7Session session = C7Manager.getSession();                           // session for access to properties

     // Create a property entry
     C7Property firstProperty = new C7Property("firstKey", "firstValue");  // "firstKey" identifies the property
                                                                           // "firstValue" is the parameter value
     session.setProperty(firstProperty);                                   // store Property

Also alles in allem für den Entwickler nur ein geringer Unterschied.
Allerdings hat er jetzt die Möglichkeit eines sehr komfortablen Zugriffs auf die Benutzerverwaltung. Beispiele dazu später hier im Blog und/oder auf einer Beispielseite

Betriebsblindheit

Nachdem ich in den ersten Jahren (schon vor dem Job) reine Client Anwendungen und später Client-Server Lösungen entwickelte, arbeite ich seit rd. 2005 nur noch an einer webbasierten Software; der Client spielt also eine untergeordnete Rolle in meinen Betrachtungen.

Als wir kürzlich in einem Forum über c7 und dessen Möglichkeiten diskutierten, meinte ein Teilnehmer, dass er die Rennerei von Desktop zu Desktop nicht besonders toll findet und eine zentrale Softwarekonfiguration definitiv eine gute Sache sei.

Desktop?… Desktop?…  Ja klar! Selbstverständlich kann eine Integration von CLOUD SEVEN in eine Client-Anwendung ebenso sinnvoll sein, wie die in einen Server. Ich habe tatsächlich nicht daran gedacht! Zwar gibt es Tools zur Verteilung von Software und Konfiguration, dennoch macht eine fertige Lösung innerhalb einer Software mindestens genau so viel Sinn (wenn nicht mehr).

Wie betriebsblind kann man eigentlich werden? Schön aber, dass die Auseinandersetzung mit anderen die eigenen Augen wieder öffnen kann.

Die Marketingmaschine rollt

Oder sollte ich besser sagen ‘erste Versuche, die Öffentlichkeit auf die Existenz eines neuen Werkzeugs für die Softwarekonfiguration aufmerksam zu machen’?

Wie auch immer. Gestern habe ich Heise einen Artikel zugesendet, heute ebenfalls bei Heise Online CLOUD SEVEN zum kostenlosen Download zur Verfügung gestellt. Mal sehen, ob das irgend jemand mitbekommt. Unabhängig davon mache ich mir weitere Gedanken über die Verbreitung der wichtigen Nachricht über die Geburt von c7 ;)

CLOUD SEVEN Beta Version frei verfügbar

Geschafft!

CLOUD SEVEN 0.0.1 BETA FREE ist da.

Die Software war – bis auf einige Kleinigkeiten – sowieso seit einigen Wochen in einem Beta-würdigen Zustand. Aber ich wollte die Dokumentation, insbesondere das soap book wenigstens soweit voran bringen, dass interessierte Anwender bzw. Entwickler nicht ganz auf dem Schlauch stehen.

Vorgestern habe ich die Dokumentation für den Download frei gegeben, heute dann wurde das Softwarepaket geschnürt und hochgeladen. Wobei es sich ja letztendlich nur um ein Jar-File, ein Properties-File sowie einige DB-Treiber handelt. Kaum zu glauben, dass ein Framework und ein SOAP-Server mit Softwarekonfiguration und Userverwaltung gerade mal gute 500 KB groß ist. Das ganze Paket ist allerdings satte 6MB groß, was an den DB-Treibern liegt.

Ich denke, heute Abend trinke ich einen guten Wein. Dabei mache ich mir dann Gedanken über das weitere Vorgehen, vor Allem das Marketing.

Ohne Dokumentation taugt die beste Software nichts

Behaupte ich einfach mal.

Endlich habe ich das cook book und die SOAP-Dokumentation gestern und heute soweit voran gebracht, dass ich sie im Stand 0.1 frei geben kann (dem Regen sei dank). Es fehlen noch einige Details, manches möchte ich genauer beschreiben, da c7 vieles her gibt, was nicht auf den ersten Blick erkennbar ist.

Zentraler Manager für die Benutzerverwaltung

Dass die Benutzerverwaltung so etwas wie ein Nebenprodukt ist, hatte ich ja bereits erwähnt. Doch mittlerweile messe ich ihr einen höheren Stellenwert bei. Während der Dokumentation, an der ich gerade arbeite, fiel mir auf, dass die Java API zwar den C7Manager zur Bewältigung der Kernaufgabe ‘Parametrisierung’ aufweist, ein Pendant für die User Administration aber fehlt. Das bedeutete bisher, dass Entwickler die verschiedenen Fassaden hätten nutzen müssen, was aber meinem Verständnis von einer guten API nicht entspricht.

Um Entwicklern das Zurechtfinden innerhalb der API zu erleichtern, habe ich also alle relevanten Methoden für die Verwaltung von Benutzern, Gruppen, Rechten und Aktionen im C7SecurityManager zusammengefasst. So gefällt mir das schon viel besser.

Tags: , , , ,

CLOUD SEVEN jetzt auch mit Derby

Als ich heute morgen schrieb, dass ich für CLOUD SEVEN eine ‘out of the box’ Lösung mit Derby baue, hätte ich nicht gedacht, dass ich sie heute abend bereits fertig gestellt habe. Das war wirklich einfach. Letztendlich nur etwas Fleißarbeit, weil einfach einige Handgriffe zu erledigen waren.

Neu war z.B., dass ich der Konfiguration die Option einer Embedded-DB hinzufügen musste und mir selbst jegliche praktische Erfahrungen mit Derby fehlten. Am längsten halten ja meist die simplen Dinge auf, weil man den Wald vor Bäumen nicht sieht. In diesem Falle war es die Formatierung von Timestamp und Date ins SQL-Format (ich weiß, eigentlich ein Witz). Aber wenn man parallel mit verschiedenen Datenbanken hantiert, kann man doch schon mal etwas durcheinander kommen :)

D.h., ich kann mich in den nächsten Tagen wieder voll auf die Dokumentation und weitere Tests stürzen. Und dann auf die Demo-Version. Out of the box, versteht sich.

Tags: , , , , , , ,

Out of the box dank Derby

Gestern schrieb ich bereits, dass ich die Apache Derby Datenbank ebenfalls unterstützen will. Warum also nicht gleich eine simple Standalone-Lösung dank des Derby embedded Treibers schaffen?

Jetzt arbeite ich daran, dass das Framework und die Middleware direkt ‘out of the box’ genutzt werden können. Besonders interessant dürfte das für die Soap- und JMS-Anwender sein, da damit ohne DB-Installation die Dienste für die Parametrisierung und die Benutzerverwaltung bereit gestellt werden können.

Ebenso interessant ist die embedded Lösung für CLOUD SEVEN Einsteiger, weil damit eine Demo-Version ohne großen Aufwand realisierbar ist.

Diese Erweiterung bringt erneut etwas Verzögerung in das Gesamtprojekt. Natürlich möchte ich es bald zu einem vorläufigen Abschluss mit einer ersten Test- bzw. Demoversion bringen. Angesichts der Tatsache, dass ich ja dank großzügiger Planung meine Milestones einhalten konnte, ist das aber ok.

Außerdem mache ich mir jetzt intensivere Gedanken über das Lizenzmodell. Aktuell sehe ich

  • eine Pre-Release für diejnigen, die bereits in einem frühen Stadium erste Erfahrungen sammeln und vielleicht sogar Einfluss auf die Entwicklung nehmen wollen
  • eine kostenlose Demo- bzw. Testversion die evtl. im Leistungsumfang beschnitten sein wird
  • eine kostenpflichtige Lizenz mit Anspruch auf Updates für einen definierten Zeitraum

Tags: , , , , , ,

Apache Derby als Datenbank Option

Diverse Überlegungen, u.a. über mögliche Folgeprojekte und Nutzungsmöglichkeiten von CLOUD SEVEN in den vergangenen Tagen, haben mich zu der Entscheidung veranlasst, als weitere Datenbank Apache Derby zu unterstützen.

Derby bietet ja verschiedene Laufzeitoptionen, kann wie eine ‘typische’ Client/Server DB genutzt werden oder auch in der selben VM wie eine Anwendung laufen. Ich selbst bin in einem größeren Testprojekt mit Derby als InMemory-Datenbank in Berührung gekommen und wundere mich, dass ich nicht schon von Beginn des Projekts an drauf gekommen bin.

Praktische Tests mit der Java API

Nachdem Soap, die Benutzerverwaltung und andere Dinge viel Zeit in Anspruch nahmen, habe ich jetzt erstmalig eine Anwendung gebaut, die sich der Java API bedient. Dabei sind noch einige ‘Löcher’ aufgetaucht, die es zu stopfen gab. Vor allem die Initialisierung und das Sicherstellen, dass alle notwendigen Voraussetzungen für den Programmablauf gegeben sind, ist anders, wenn man sich ‘von außen’ der Klassen und ihrer Methoden bedient.

Aber alles in allem war es weniger schlimm, als befürchtet. Nach wenigen Stunden hatte ich eine API bzw. ein Framework, das auch als solches funktioniert. D.h. auch, dass ich mich tatsächlich allmählich daran setzen muss, Pressetexte zusammen zu stellen. Vorher gibt es aber auch noch eine Menge Arbeit mit der Dokumentation.

Tags: , , ,