PHP App Store
Kommentare

Qualitätssicherung
Veröffentlichte Pakete sollten getestet sein, um eine entsprechende Qualität sicher zu stellen. Werden die Pakete von einer dritten Partei erstellt, so sollte man sich vorher darüber

Qualitätssicherung

Veröffentlichte Pakete sollten getestet sein, um eine entsprechende Qualität sicher zu stellen. Werden die Pakete von einer dritten Partei erstellt, so sollte man sich vorher darüber im Klaren sein, wer am Ende für den Support und die Fehlerbehebung zuständig ist. Eine gute Qualitätssicherung ist für einen guten App Store auf jeden Fall ein Muss. Hierzu gibt es etwa die Möglichkeit, mit Unit Tests zu arbeiten oder neue Paketversionen zu Anfang zunächst als BETA-Version zu kennzeichnen und erst nach sorgfältigem Test und erfolgreicher Installation auf mehreren Testsystemen als releasefähige Stable-Version zuzulassen.

Vermarktung, Vertrieb und Integration

Komplett übernehmen wird ein kleiner PHP App Store die Vermarktung sicherlich nicht, aber der Vertrieb lässt sich auch schon in kleinerer Realisierung sehr einfach unterstützen. Ob man hier ein komplettes Store Frontend realisiert oder lediglich eine einfache Suche auf Basis der zuvor angelegten Pakettabellen ist dem Anwendungsfall zu überlassen. Bei kleinem Kundenkreis und Angebotsportfolio ist es sicherlich nicht notwendig, Bewertungs- und Kommentarfunktionen zu integrieren, aber das kann sich ändern, wenn die Zahl der Nutzer steigt. Je integrierter und komfortabler man auf die Informationen des App Stores zugreifen kann, desto eher wird man Akzeptanz auf Kundenseite finden. Weiterer Pluspunkt einer integrierten Lösung ist die Möglichkeit, die aktuelle Installation mit dem zentralen Server abzugleichen sowie auf Inkompatibilitäten hinzuweisen und die Informationen angepasst auf Lizenz zu präsentieren. Natürlich ist es im ersten Schritt auch möglich, die Pakete einfach zum Download anzubieten, allerdings sind hier der Arbeitsaufwand und das technisch notwendige Wissen für die Installation schon eine deutlich größere Hürde.

xelos.connect App Store

Beim xelos.connect App Store wurde zum Beispiel eine Kombination von Web Services für die integrierte Version und Downloadpaket für die Neuinstallation auf einem „frischen“ System gewählt. Das so genannte Installer Package besteht hierbei nur aus einem Kern von Frameworkdateien, die über ein Shellscript installiert werden können. Hierbei sind die aktuelle Lizenz und der Zugang zum connect-Portal direkt gespeichert. Der Administrator kann somit direkt nach Installation auf eine abgespeckte Version des Frameworks zugreifen und den integrierten App Store nutzen, um gemäß seiner Lizenz Anwendungen und Module zu installieren. Dabei kommuniziert das Updatesystem über den nativen PHP SOAP Client, der App Store verwendet die nuSOAP-Komponenten [3], um die Web-Service-Ports bereitzustellen (Listing 4 und 5).

Listing 4: Web Services App Store
configureWSDL('my.app.store', 'http://my.app.store/v1/','http://my.app.store/this_script.php');

//Define package
$server->wsdl->addComplexType('package',
 'complexType',
 'struct',
 'all',
 '',
 array(
  'id' => array(  'name' => 'id',
  .         'type' => 'xsd:int'),
  'title' => array( 'name' => 'title',
   	        'type' => 'xsd:string'),
  'description' => array(	'name' => 'description',
   	           'type' => 'xsd:string'),
  'link' => array(    'name' => 'link',
               'type' => 'xsd:string')
   	//[...]
 ));
 
//Define package list
$server->wsdl->addComplexType('packageList',
 'complexType',
 'struct',
 'all',
 '',
 array(
  'packages' => array('name' => 'packages',
   	         'type' => 'tns:package')
 ));


// The service ports we are offering
$server->register(
      'getPackageList', // method name
      array('license' => 'xsd:string'), // input parameters
      array('packageList'=> 'tns:packageList'), // output parameters
      'http://my.app.store/v1/', // namespace
      'http://my.app.store/v1/#getPackageList', // soapaction
      'rpc', // style
        'encoded', // use
        "Return list of available packages" // documentation
     );

// Function to get package list
function getPackageList($license) {
 //Lookup packages in DB based on license
 //assuming $packages contains valid packages now
 $return = array('packages'=>array());
 foreach($packages as $package){
  $return['packages'][] = array('id'=>$package['id'],'title'=>$package['title'],'description'=>$package['description'],'link'=>"http://my.app.store/package/{$package['id']}");
 }
 return $return;
}

// This returns the result
$server->service($HTTP_RAW_POST_DATA);  
?>
Listing 5: Client
 'user', 
       'password' => 'password', 
       'trace'=> ($debug?1:0));//We assume you created a basic authentication for minimal security
  $client = new SoapClient("http://my.app.store/server_script.php?wsdl",$options);
  $packagelist = $client->getPackageList('2984-ADc-12037-A84jcm');
  print_r($packagelist);
?>

Themen der folgenden Seiten:

  • Installation und Update
  • Verzeichnisrechte und Systemsicherheit
  • PHP App Store: Eine Investition, die sich lohnt
Unsere Redaktion empfiehlt:

Relevante Beiträge

Meinungen zu diesem Beitrag

X
- Gib Deinen Standort ein -
- or -