Aufbau zusammensetzbarer Plattformen mit Harmony
In der heutigen schnelllebigen digitalen Landschaft ist der Bedarf an adaptiven, skalierbaren und wartbaren Softwaresystemen größer denn je.
Herkömmliche monolithische Architekturen können diesen Anforderungen aufgrund ihrer Starrheit und Komplexität oft nicht gerecht werden. Betreten Sie Harmony, ein Framework, das zusammensetzbare Plattformen mit hoher Effizienz und Flexibilität ermöglicht.
In diesem Artikel untersuchen wir, wie Harmony, powered by Bit, die Art und Weise verändert, wie wir moderne Anwendungen erstellen und warten.
Was ist Harmonie?
Harmony ist ein minimalistisches und dennoch leistungsstarkes Abhängigkeitsinjektions-Framework, das auf die Erstellung zusammensetzbarer Architekturen zugeschnitten ist. Indem es Entwicklern ermöglicht, unabhängig entwickelte Bit-Komponenten zusammenzufügen, ermöglicht Harmony Teams die Entwicklung von Anwendungen, die nicht nur modular, sondern auch an sich ändernde Geschäftsanforderungen anpassbar sind. Harmony unterstützt die Zusammensetzbarkeit des gesamten Stapels und eignet sich daher ideal für die Integration von Frontend- und Backend-Funktionalitäten in zusammenhängende Plattformen.
Hauptmerkmale von Harmony
Pluggable Aspects: Modulare Geschäftsfunktionen, sogenannte Aspekte, können einfach in Plattformen integriert werden.
Laufzeitflexibilität: Offizielle Unterstützung für Node.js und Browserumgebungen gewährleistet Kompatibilität in verschiedenen Anwendungsfällen.
Warum Zusammensetzbarkeit wichtig ist
Composability ermöglicht Organisationen Folgendes:
Schnell anpassen: Neue Funktionen können unabhängig hinzugefügt oder aktualisiert werden, ohne das bestehende System zu stören.
Förderung der Wiederverwendbarkeit: Gemeinsam genutzte Komponenten können über mehrere Projekte hinweg genutzt werden, wodurch Duplikate reduziert und die Konsistenz erhöht werden.
Zusammenarbeit fördern: Teams können an isolierten Aspekten oder Komponenten arbeiten, ohne sich gegenseitig auf die Füße zu treten.
Aufbau eines zusammensetzbaren Systems mit Harmonie
Wie bereits erwähnt, sind die Bausteine eines Harmony-Systems Bit-Komponenten. Da es sich bei Bit-Komponenten jedoch um Container für beliebige Softwareeinheiten handelt, ist nicht jede Bit-Komponente geeignet.
Harmony verwendet Komponenten mit einem bestimmten Design, um ihnen die Nutzung und Bereitstellung von „Diensten“ für andere Aspekte zu ermöglichen. Dabei kann es sich um reine Frontend-, reine Backend- oder Full-Stack-Funktionen handeln.
Ein Aspekt stellt eine einzelne Geschäftsfähigkeit dar, die in ein größeres System eingebunden werden kann, um eine vollständige Lösung, eine neue Anwendung, zu bilden.
Aspekte erweitern andere Aspekte durch die Registrierung bei ihrer „Slot“-API. Diese Umkehrung der Kontrolle ermöglicht es Teams, Funktionen oder Geschäftsfunktionen mit minimalem Overhead zu erstellen, da der Aspekt für die Integration verantwortlich ist und nicht das System, das sie erstellt.
Bei der folgenden Harmony-App handelt es sich beispielsweise um einen Onlineshop für Surferbekleidung.
Das für diesen Online-Shop verantwortliche Team hat beschlossen, seiner Website einen Blog hinzuzufügen. Nachdem sie auf der Bit-Plattform nach geeigneten Aspekten gesucht hatten, stießen sie auf diesen Blog-Aspekt. Sie beschlossen, es zu verwenden und fügten es ihrer Hamrony-Anwendung hinzu:
/** * @coponentId: learnbit.apparel-waves/apparel-waves * @filename: apparel-waves.bit-app.ts */ // imports... import { SymphonyPlatformAspect } from '@bitdev/symphony.symphony-platform'; import { ApparelWavesPlatformAspect } from '@learnbit/apparel-waves.apparel-waves-platform'; import { BlogAspect } from '@learnbit/blog-pbc.blog'; export const ApparelWaves = HarmonyPlatform.from({ name: 'apparel-waves', platform: [ /** * ascpects register themsevles to the 'platform' aspect which * is the entry point for this application */ SymphonyPlatformAspect, { name: 'Apparel Waves', slogan: 'Making waves in fashion', domain: 'apparel-waves.com', }, ], /** * aspects can run in multiple runtime environments. here, aspects * provide functionalitis to the NodeJS services and to the web frontend apps */ runtimes: [new BrowserRuntime(), new NodeJSRuntime()], aspects: [ /* 'apperal waves' aspect extends the system with its * own unique functionalities. this aspect is maintained by * a team that composes the apsects for their own solution. */ ApparelWavesPlatformAspect, /** * the blog aspect extends the system with content * management capabilities. it is maintained by the blog PBC team. */ [ BlogAspect, { /** * the blog aspect also provide a config api for this app to use * in this case, since the the blog uses the Contenful platform, * the fusion team need to provide it with their own Contentful space ID */ spaceId: 'contentful-spaceId', }, ], ], }); export default ApparelWaves;
Der Blog-Aspekt registriert sich auf verschiedene Arten auf der Plattform:
Es erweitert das GraphQL-Schema des Systems um einen Knoten zum Abrufen von Inhalten. Dies erfolgt in der NodeJS Runtime.
Es erweitert das Routing des Systems um die /blog-Route. Dies geschieht in der Browser Runtime.
Es erweitert die Kopfzeile um ein zusätzliches Element, einen „Blog“-Link zu /blog. Dies geschieht in der Browser Runtime.
NodeJS-Laufzeit
/** * @coponentId: learnbit.blog-pbc/blog * @filename: blog.node.runtime.ts */ export class BlogNode { constructor(private config: BlogConfig) {} async getBlogPosts() { const blogData = new BlogData(this.config); return blogData.getBlogPosts(); } static dependencies = [SymphonyPlatformAspect]; static async provider( [symphonyPlatform]: [SymphonyPlatformNode], config: BlogConfig ) { const blog = new BlogNode(config); const gqlSchema = blogGqlSchema(blog); symphonyPlatform.registerBackendServer([ { gql: gqlSchema, }, ]); return blog; } } export default BlogNode;
Browser-Laufzeit
** * @coponentId: learnbit.blog-pbc/blog * @filename: blog.browser.runtime.ts */ export class BlogBrowser { constructor(private config: BlogConfig) {} static dependencies = [SymphonyPlatformAspect, HeaderAspect]; static async provider( [symphonyPlatform, header]: [SymphonyPlatformBrowser, HeaderBrowser], config: BlogConfig ) { const blog = new BlogBrowser(config); symphonyPlatform.registerRoute([ { path: '/blog', component: () => { return ( <apolloblogprovider spaceid="{config.spaceId}"> <bloglobby></bloglobby> </apolloblogprovider> ); }, }, ]); header.registerLink([{ label: 'Blog', href: '/blog' }]); return blog; } } export default BlogBrowser;
Der Blog-Aspekt in diesem Beispiel verwendet das Contentful-Content-Management-System. Es bietet eine kohärente „Sprache“ für gekaufte Dienste innerhalb des Aspektökosystems des Unternehmens und stellt sicher, dass sie effektiv kommunizieren und nahtlos zusammenarbeiten können.
/** * @coponentId: learnbit.blog-pbc/blog * @filename: blog-data.ts */ import { ApolloClient, InMemoryCache, HttpLink, gql } from '@apollo/client'; import type { BlogConfig } from './blog-config.js'; export class BlogData { constructor(private readonly config: BlogConfig) {} private contentfulClient = new ApolloClient({ link: new HttpLink({ uri: `https://graphql.contentful.com/content/v1/spaces/${this.config.spaceId}`, headers: { Authorization: `Bearer ${process.env.CONTENTFUL_ACCESS_TOKEN}`, }, fetch, }), cache: new InMemoryCache(), }); getBlogPosts = async () => { const { data } = await this.contentfulClient.query({ query: gql` query GetBlogs { pageBlogPostCollection { items { title slug author { name } } } } `, }); return data.pageBlogPostCollection.items.map((item) => ({ title: item.title, slug: item.slug, author: { name: item.author ? item.author.name : null, }, })); }; }
Nächste Schritte
Entdecken Sie den Bereich „Blog“ (mit dem Blog-Aspekt)
Besuchen Sie diese Bit-Bereiche, um Demo-Aspekte zu erkunden, und verzweigen (kopieren) Sie sie in Ihren Bit-Arbeitsbereich, um schnell loszulegen.
Besuchen Sie den Blog-Bereich
Entdecken Sie den Bereich „Apparel Waves“ (mit einer Harmony-Plattform)
Besuchen Sie den Bereich Apparel Waves
Besuchen Sie die offizielle Dokumentation von Bit

Bisschen. Zusammensetzbare Software.
Bit ist ein Build-System für die Entwicklung zusammensetzbarer Software.
Das obige ist der detaillierte Inhalt vonAufbau zusammensetzbarer Plattformen mit Harmony. 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

Video Face Swap
Tauschen Sie Gesichter in jedem Video mühelos mit unserem völlig kostenlosen KI-Gesichtstausch-Tool aus!

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











Python eignet sich besser für Anfänger mit einer reibungslosen Lernkurve und einer kurzen Syntax. JavaScript ist für die Front-End-Entwicklung mit einer steilen Lernkurve und einer flexiblen Syntax geeignet. 1. Python-Syntax ist intuitiv und für die Entwicklung von Datenwissenschaften und Back-End-Entwicklung geeignet. 2. JavaScript ist flexibel und in Front-End- und serverseitiger Programmierung weit verbreitet.

Zu den Hauptanwendungen von JavaScript in der Webentwicklung gehören die Interaktion der Clients, die Formüberprüfung und die asynchrone Kommunikation. 1) Dynamisches Inhaltsaktualisierung und Benutzerinteraktion durch DOM -Operationen; 2) Die Kundenüberprüfung erfolgt vor dem Einreichung von Daten, um die Benutzererfahrung zu verbessern. 3) Die Aktualisierung der Kommunikation mit dem Server wird durch AJAX -Technologie erreicht.

Die Anwendung von JavaScript in der realen Welt umfasst Front-End- und Back-End-Entwicklung. 1) Zeigen Sie Front-End-Anwendungen an, indem Sie eine TODO-Listanwendung erstellen, die DOM-Operationen und Ereignisverarbeitung umfasst. 2) Erstellen Sie RESTFUFFUPI über Node.js und express, um Back-End-Anwendungen zu demonstrieren.

Es ist für Entwickler wichtig, zu verstehen, wie die JavaScript -Engine intern funktioniert, da sie effizientere Code schreibt und Leistungs Engpässe und Optimierungsstrategien verstehen kann. 1) Der Workflow der Engine umfasst drei Phasen: Parsen, Kompilieren und Ausführung; 2) Während des Ausführungsprozesses führt die Engine dynamische Optimierung durch, wie z. B. Inline -Cache und versteckte Klassen. 3) Zu Best Practices gehören die Vermeidung globaler Variablen, die Optimierung von Schleifen, die Verwendung von const und lass und die Vermeidung übermäßiger Verwendung von Schließungen.

Python und JavaScript haben ihre eigenen Vor- und Nachteile in Bezug auf Gemeinschaft, Bibliotheken und Ressourcen. 1) Die Python-Community ist freundlich und für Anfänger geeignet, aber die Front-End-Entwicklungsressourcen sind nicht so reich wie JavaScript. 2) Python ist leistungsstark in Bibliotheken für Datenwissenschaft und maschinelles Lernen, während JavaScript in Bibliotheken und Front-End-Entwicklungsbibliotheken und Frameworks besser ist. 3) Beide haben reichhaltige Lernressourcen, aber Python eignet sich zum Beginn der offiziellen Dokumente, während JavaScript mit Mdnwebdocs besser ist. Die Wahl sollte auf Projektbedürfnissen und persönlichen Interessen beruhen.

Sowohl Python als auch JavaScripts Entscheidungen in Entwicklungsumgebungen sind wichtig. 1) Die Entwicklungsumgebung von Python umfasst Pycharm, Jupyternotebook und Anaconda, die für Datenwissenschaft und schnelles Prototyping geeignet sind. 2) Die Entwicklungsumgebung von JavaScript umfasst Node.JS, VSCODE und WebPack, die für die Entwicklung von Front-End- und Back-End-Entwicklung geeignet sind. Durch die Auswahl der richtigen Tools nach den Projektbedürfnissen kann die Entwicklung der Entwicklung und die Erfolgsquote der Projekte verbessert werden.

C und C spielen eine wichtige Rolle in der JavaScript -Engine, die hauptsächlich zur Implementierung von Dolmetschern und JIT -Compilern verwendet wird. 1) C wird verwendet, um JavaScript -Quellcode zu analysieren und einen abstrakten Syntaxbaum zu generieren. 2) C ist für die Generierung und Ausführung von Bytecode verantwortlich. 3) C implementiert den JIT-Compiler, optimiert und kompiliert Hot-Spot-Code zur Laufzeit und verbessert die Ausführungseffizienz von JavaScript erheblich.

JavaScript wird in Websites, mobilen Anwendungen, Desktop-Anwendungen und serverseitigen Programmierungen häufig verwendet. 1) In der Website -Entwicklung betreibt JavaScript DOM zusammen mit HTML und CSS, um dynamische Effekte zu erzielen und Frameworks wie JQuery und React zu unterstützen. 2) Durch reaktnatives und ionisches JavaScript wird ein plattformübergreifendes mobile Anwendungen entwickelt. 3) Mit dem Elektronenframework können JavaScript Desktop -Anwendungen erstellen. 4) Node.js ermöglicht es JavaScript, auf der Serverseite auszuführen und unterstützt hohe gleichzeitige Anforderungen.
