2016-12-29 1 views
1

Ich versuche, eine Taktik zu entwickeln, um eine ziemlich standardmäßige webbasierte Anwendung auf Kundenbasis konfigurierbar zu machen, so dass wir sie mehrfach verkaufen können, ohne extra Code schreiben zu müssen jeder Kunde. Es ist ein LAMP-Stack (wo P ist php mit yii2)App für verschiedene Kunden konfigurierbar machen

Meine erste Idee ist es, eine JSON/YAML-Datei pro Kunde zu haben, und ein-/ausschalten Funktionen basierend darauf, was ist. etwas wie {hasAmazonApi: 0, hasEbayApi: 1} etc.

Das Problem damit ist natürlich, viele If/sonst im Code.

Mein Chef hat vorgeschlagen, dass die Konfigurationsdatei verwendet werden könnte, um tatsächlich zu steuern, welchen Code auf dem Server zur Zeit der Bereitstellung bereitgestellt wird, ein Skript schreiben, um den Code zu schreiben - aber das scheint mit Schwierigkeiten und Gefahren behaftet.

Keine Lösung ist perfekt - irgendwelche Vorschläge?

+0

Wir haben entschieden (na ja, ich entschied und verkaufte es an meinen Chef) und habe etwas anderes gemacht. Worauf ich mich eingelassen habe ist ein bisschen wie Haken. Jedes Element des Workflows wird mit einer Funktion ausgeführt, die von run_hook ('some-func', $ args) gestartet wird. Auf diese Weise können wir jeden Hook auf Kundenbasis überschreiben oder einfach den generischen verwenden, wenn das besser zu seinen Bedürfnissen passt. Es ist komplizierter, aber lässt uns mit weit weniger if/else-s – WeeDom

Antwort

1

Wir meist dies auf zwei Arten umgehen:

  1. Wir machen eine Anwendung mit einer Datenbank (eine Code-Basis) und separaten all Nutzer von einem RBAC-System mit benutzerdefinierten Regeln (dh Benutzer zu dieser Organisation gehören sollen. um dieses Projekt zu kontrollieren). In Ihrem Fall: Der Benutzer sollte dieses Modul gekauft haben, um es zu benutzen.
  2. Wir machen eine Anwendung mit einer Codebasis. Aber jeder Kunde bekommt seine eigene Datenbank. Der Benutzer kann also nur die Daten in seiner eigenen Datenbank sehen (er kann niemals zu einer anderen Datenbank wechseln).

Natürlich gibt es andere Möglichkeiten. Basierend auf Ihren Bedürfnissen und der Anzahl der Rollen, die Sie erwarten, wählen Sie eine, die sich gut für Sie anfühlt.

0

Es gibt keine richtige oder falsche Antwort, aber Ihre erste Option ist wahrscheinlich vorzuziehen, solange Sie vollen Zugriff darauf haben, wo der Code bereitgestellt wird, und Kunden haben keinen Zugriff auf die Konfiguration und Opt-in Dinge sie Habe nicht bezahlt.

Sie haben recht, wenn Sie eine teilweise Bereitstellung vornehmen. Es wird viel einfacher sein, die Anwendung zu entwickeln und zu testen, wenn alles aus einem Guss ist und die Konfiguration bestimmt, was Benutzer tun können. Sie haben das Risiko, dass Dinge nur schwer zu erkennen sind und möglicherweise nicht mehr effektiv genutzt werden können.

Yi2-Module eignen sich für den letzteren Ansatz, wenn die Features in solche Module aufgeteilt werden könnten. Aus den oben genannten Gründen würde ich das nur als letzten Ausweg tun. Aus Ihren Beispielen klingt es so, als ob das auf keinen Fall möglich wäre (eBay/Amazon Credential Inputs wären wahrscheinlich innerhalb des gleichen Moduls, nebeneinander in der Benutzeroberfläche).

+0

tatsächlich, die Anmeldeinformationen für ebay/amazon werden in einer db, nicht fest codiert sein. – WeeDom

Verwandte Themen