


Ausführliche Erklärung, wie Composer+Git eine „Service-Klassenbibliothek' erstellt
Einführung
Ich habe immer geglaubt, dass PHP mittlerweile auch im technischen Bereich Einzug gehalten hat. In der Vergangenheit betrachteten PHP-Entwickler Geschwindigkeit als Schönheit, und Geschwindigkeit und Skalierbarkeit waren immer widersprüchlich. Heutige PHP-Projekte, insbesondere größere Projekte, haben sich nach und nach auf ein Niveau entwickelt, das sowohl Ingenieurskunst als auch Skalierung erfordert. Einen Code zu entwickeln bedeutet, sich zu einer immer komplexeren Architektur zu entwickeln. Für komplexe Architekturen sind Microservices oft eine gute Wahl.
Ich brauchte diese Frage in einem aktuellen Projekt. Ich muss einen Kartendienst entwickeln, der natürlich nicht in Form einer einfachen Klassenbibliothek vorliegt, sondern über eine eigene Datenbank und eine eigene Dienstschnittstelle verfügt. In diesem Fall ist die Servitisierung die beste Option. Natürlich gibt es viele Möglichkeiten für den Service, z. B. Thrift, HTTP usw. Aber ich habe die aktuelle Abteilungsumgebung bewertet, und der Fortschritt meines Projekts ist auch relativ eng. In meinen Augen verwenden Thrift, HTTP und andere Methoden alle Netzwerkprotokolle, um eine Dienstentkopplung zu erreichen Lösung. Ich denke, dieser Ansatz ist nicht notwendig, wenn sich das Projekt nicht eindeutig in einem kritischen Zustand befindet. Der Nachteil der Verwendung von Netzwerkprotokoll-Servitization besteht darin, dass sie eine erhebliche Komplexität mit sich bringt. Diese Komplexität erfordert oft Investitionen in Arbeitskräfte, materielle Ressourcen und Zeit. Daher hoffe ich, eine „Service-Klassenbibliothek“ in der PHP-Sprache für die Entwicklung bereitstellen zu können.
Woran ich denke, ist der Composer von PHP.
Composer-Änderung
Dienstbibliothek erstellen
Zunächst muss ich meine „Dienstbibliothek“ von meiner Anwendung (mit dem Namen xxx/main1) trennen, anstatt ein Verzeichnis darin zu erstellen die Anwendung (tatsächlich habe ich darüber nachgedacht, ein Verzeichnis wie „Dienste“ zu erstellen). Wenn der Code jedoch mit dem Geschäftsprogramm gekoppelt ist, ist es meiner Meinung nach aufgrund der menschlichen Faulheit schwierig, sich von Anfang bis Ende zu beherrschen und darauf zu bestehen, verschiedene praktische Funktionen in der Anwendung nicht zu verwenden. Daher habe ich die Wahl, ein neues Projekt im Git-Repository zu erstellen und es xxx/mapService zu nennen.
composer.json
Jetzt gibt es zwei Git-Projekte (xxx/main1 und xxx/mapService). Ich habe die folgende Anweisung zur Datei „composer.json“ in „main1“ hinzugefügt:
Und in der Datei „composer.json“ von mapService Wie folgt:
Diese Konfiguration teilt dem main1-Projekt, der Git-Adresse von mapService und der Version mit, die verwendet werden muss.
Natürlich müssen Sie auf folgende Punkte achten:
- dev-master bedeutet, dass Sie direkt den Master-Zweig von mapService verwenden. Wenn MapService über andere Tags verfügt, können Sie die Tag-Informationen hier verwenden.
- repositories ist die Adresse des Projekts.
- Der Dienst, den ich hier habe, wird auf dem von unserer Firma erstellten GitLab platziert.
- Der Namespace des src-Ordners unter mapService Für xxxx \xxxx\MapService\ und unterstützt PSR-4
- mapService verwendet illuminate/database
Verwenden Sie abschließend das Composer-Update -vvv, um den von uns benötigten MapService herunterzuladen und im Anbieterverzeichnis abzulegen.
Aktualisierungen und Änderungen
Unser aktueller Editor befindet sich im Haupt1-Projekt. Wenn wir das MapService-Projekt bearbeiten oder ändern und es in den Master-Zweig von MapService einbinden möchten, können wir direkt das Verzeichnis vender/xxx/mapService eingeben. Führen Sie Operationen aus, die Git entsprechen. Dies ermöglicht direkte Codeänderungen.
Unabhängige Konfiguration
Diese strukturelle Kombination ist nur der erste Schritt zur Vollendung des langen Marsches von Tausenden von Kilometern. Was später noch wichtiger ist, ist, dass ich beim Schreiben dieses Dienstes immer daran denken muss, nicht alles in main1 zu verwenden, um die Unabhängigkeit von mapService zu wahren (Unabhängigkeit ist eine der notwendigen Bedingungen für die Servitisierung). Das erste Problem, auf das ich stieß, war beispielsweise, dass die Konfigurationsdatei unabhängig sein muss.
Meine Implementierungsmethode besteht darin, eine Config-Klasse direkt in mapService zu erstellen und die Konfiguration direkt in diese Klasse zu schreiben.
Ich hatte immer das Gefühl, dass die Implementierung dieser Konfigurationsdatei etwas frustrierend ist, da diese Konfigurationsdatei auf diese Weise in die Git-Bibliothek gelangt. Aber ich kann mir wirklich keine bessere Lösung vorstellen. In Laravel gibt es eine Möglichkeit, Config im Konfigurationsordner von Laravel zu erstellen, indem ServiceProvider implementiert wird. Diese Methode gilt jedoch nur für Laravel. Es gibt keine Universalität. Andererseits denke ich, dass die vom Dienst verwendete Datenbank selbst Teil des Dienstes ist und anscheinend nichts damit zu tun hat, sie in die Git-Bibliothek des Dienstes aufzunehmen.
Verzeichnisstruktur
Die Verzeichnisstruktur ist wie oben.
- Configs stellt Konfigurationsdateien bereit.
- Contracts stellt Schnittstellenprotokolle bereit Interaktion mit der Datenbank
- Node.php implementiert eine bestimmte Schnittstelle
- Das Wichtigste am Dienst ist das Schnittstellenprotokoll. Erstellen Sie also einen Vertragsordner und verbinden Sie die bereitgestellten Dienste.
Denken
Ich positioniere dieses Architekturmodell als serviceorientiertes Modell auf der PHP-Codeebene. Anwendbare Szenarien sollten sein:
Spätere dienstleistungsbasierte Planung
Szenarien, in denen frühe Arbeitskräfte und Denkweisen eine schnelle Entwicklung aufrechterhalten wollen- Der Unterschied zwischen Gits SubTree und SubModule
- Tatsächlich sind diese drei Methoden gleich das Ende Verwenden Sie ein Projekt als Klassenbibliothek für ein anderes Projekt. SubTree und SubModule sind Git-Lösungen. Composer ist eine Lösung für die PHP-Sprache. Neben der Funktion zum Hinzufügen eines Projekts zu einem anderen Projekt bietet es auch Lösungen wie das Hinzufügen von Versionen und Abhängigkeitslösungen. Wenn Ihr Projekt in PHP ist, ist die Verwendung von Composer zweifellos die bessere Wahl.
Spätere Protokollserviceisierung
Wenn mein MapService später protokollserviceorientiert sein möchte, kann dieses MapService-Projekt in ein SDK vereinfacht werden. Für die Geschäftslogik der oberen Ebene verwenden Sie einfach Composer Update, um es zu aktualisieren.
Service-Registrierung und -Erkennung
Was ich hier „Service-Klassenbibliothek“ nenne, löst das Problem der Service-Registrierung nicht. Ich habe keine Möglichkeit zu wissen, wie viele Projekte meinen Service nutzen. Dies kann zusätzliche Prozessarbeit erfordern.
Das obige ist der detaillierte Inhalt vonAusführliche Erklärung, wie Composer+Git eine „Service-Klassenbibliothek' erstellt. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Heiße KI -Werkzeuge

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool
Ausziehbilder kostenlos

Clothoff.io
KI-Kleiderentferner

AI Hentai Generator
Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

Heiße Werkzeuge

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Heiße Themen



Schritte zur Anzeige der geänderten Bootstrap -Ergebnisse: Öffnen Sie die HTML -Datei direkt im Browser, um sicherzustellen, dass die Bootstrap -Datei korrekt verwiesen wird. Löschen Sie den Browser -Cache (Strg Shift R). Wenn Sie CDN verwenden, können Sie CSS im Entwickler -Tool direkt ändern, um die Effekte in Echtzeit anzuzeigen. Wenn Sie den Bootstrap -Quellcode ändern, laden Sie die lokale Datei herunter und ersetzen Sie den Befehl "Build mithilfe eines Build -Tools wie WebPack.

Pagination ist eine Technologie, die große Datensätze in kleine Seiten aufteilt, um die Leistung und die Benutzererfahrung zu verbessern. In VUE können Sie die folgende integrierte Methode zum Paging verwenden: Berechnen Sie die Gesamtzahl der Seiten: TotalPages () TRAVERSAL-Seitennummer: V-für Anweisung, um die aktuelle Seite festzulegen: aktuelle Seite

Hadidb: Eine leichte, hochrangige skalierbare Python-Datenbank Hadidb (HadIDB) ist eine leichte Datenbank in Python mit einem hohen Maß an Skalierbarkeit. Installieren Sie HadIDB mithilfe der PIP -Installation: PipinstallHadIDB -Benutzerverwaltung erstellen Benutzer: createUser (), um einen neuen Benutzer zu erstellen. Die Authentication () -Methode authentifiziert die Identität des Benutzers. fromHadidb.operationImportUseruser_obj = user ("admin", "admin") user_obj.

Eine effektive Überwachung von MySQL- und MariADB -Datenbanken ist entscheidend für die Aufrechterhaltung einer optimalen Leistung, die Identifizierung potenzieller Engpässe und die Gewährleistung der Zuverlässigkeit des Gesamtsystems. Prometheus MySQL Exporteur ist ein leistungsstarkes Tool, das detaillierte Einblicke in Datenbankmetriken bietet, die für die proaktive Verwaltung und Fehlerbehebung von entscheidender Bedeutung sind.

Der JavaScript -Abschnitt von Bootstrap bietet interaktive Komponenten, die statische Seiten Vitalität ergeben. Wenn Sie sich den Open -Source -Code ansehen, können Sie verstehen, wie er funktioniert: Ereignisbindung löst Dom -Operationen und Stiländerungen aus. Die grundlegende Nutzung umfasst die Einführung von JavaScript -Dateien und die Verwendung von APIs, und die erweiterte Verwendung umfasst benutzerdefinierte Ereignisse und Erweiterungsfunktionen. Zu den häufig gestellten Fragen gehören Versionskonflikte und CSS-Stilkonflikte, die durch Doppelüberprüfung des Codes gelöst werden können. Die Tipps zur Leistungsoptimierung umfassen On-Demand-Laden- und Codekomprimierung. Der Schlüssel zum Beherrschen von Bootstrap JavaScript ist das Verständnis der Designkonzepte, zum Kombinieren praktischer Anwendungen und zum Debuggen und Erforschen von Entwickler -Tools.

Git und Github sind nicht dasselbe. Git ist ein Versionskontrollsystem, und GitHub ist eine GIT-basierte Code-Hosting-Plattform. Git wird verwendet, um Codeversionen zu verwalten, und GitHub bietet eine Online -Zusammenarbeit.

Bootstrap Framework Building Guide: Laden Sie Bootstrap herunter und verknüpfen Sie es mit Ihrem Projekt. Erstellen Sie eine HTML -Datei, um die erforderlichen Elemente hinzuzufügen. Erstellen Sie ein reaktionsschnelles Layout mit dem Bootstrap -Mesh -System. Fügen Sie Bootstrap -Komponenten wie Schaltflächen und Formulare hinzu. Entscheiden Sie sich selbst, ob Sie Bootstrap anpassen und Stylesheets bei Bedarf kompilieren möchten. Verwenden Sie das Versionskontrollsystem, um Ihren Code zu verfolgen.

In diesem Artikel wird beschrieben, wie Sie Python -Skripte verwenden, um die Passwortrichtlinien zu stärken und Passwörter regelmäßig zu ändern. Die Schritte sind wie folgt: 1. Verwenden Sie Pythons zufällige und String -Module, um zufällige Passwörter zu generieren, die den Komplexitätsanforderungen entsprechen. 2. Verwenden Sie das Subprozess-Modul, um Systembefehle (z. B. das PasswD-Befehl von Linux) aufzurufen, um das Kennwort zu ändern, um das Kennwort direkt zu vermeiden. 3. Verwenden Sie Crontab oder Task Scheduler, um Skripte regelmäßig auszuführen. Dieses Skript muss Fehler sorgfältig behandeln und Protokolle hinzufügen und regelmäßig aktualisieren, um Sicherheitslücken zu bewältigen. Mehrstufer Sicherheitsschutz kann die Systemsicherheit gewährleisten.
