Heim  >  Artikel  >  Backend-Entwicklung  >  Gedanken und Untersuchungen zur Verwendung von .NET für eine effiziente agile Internetentwicklung

Gedanken und Untersuchungen zur Verwendung von .NET für eine effiziente agile Internetentwicklung

黄舟
黄舟Original
2017-02-22 10:18:131182Durchsuche

Ich weiß nicht, seit wann die Gründung eines Unternehmens sehr billig geworden ist. Alles, worüber wir reden, ist das Internet, und es ist leicht, zig Millionen Dollar aufzubringen. Dieser Windstoß scheint auch Programmierer getroffen zu haben. Es gibt eine große Anzahl von Entwicklern, die Datenstrukturen nicht gut studieren und kein solides Verständnis für Datenbankprinzipien haben. Sie veröffentlichen mehrere Projekte auf Github und verwenden NodeJS, um einige Dienste zu erstellen. Und dann benutze ich H5, um Apps zu schreiben. Ich glaube, ich bin in die Reihen der erfahrenen Programmierer eingestiegen und kann das Erlernen neuer Technologien und neuer Konzepte in dieser ungestümen Atmosphäre nicht ganz richtig machen Internet-Websites und APPs Eine nach der anderen verfügt über keine Maßnahmen, um auch nur die einfache HTTP-Schnittstellensicherheit zu gewährleisten. Viele schöne responsive Websites haben zufällig gestapelte Verzeichnisstrukturen. Dies ist wirklich ein böser Trend Um praktisch zu sein, lernen Sie mehr Theorien, schreiben Sie mehr Codes und üben Sie wiederholt.

Dann stellt sich eine weitere Frage: Sind neue Technologien und neue Ideen in der Langzeitpraxis nicht immer wiederkehrend? Als .NET-Veteran bin ich zutiefst erfreut darüber, dass Microsoft sich für Open Source einsetzt und die Veränderungen und Fortschritte, die die Community im Laufe der Jahre hervorgebracht hat, aufgreift. Deshalb möchte ich Ihnen heute etwas über mich und meine Erfahrungen erzählen Das Unternehmen fasst einige Erfahrungen und Technologien bei der Verwendung von .NET für die Webentwicklung und sogar die Entwicklung von Internetanwendungen zusammen.

Werfen wir einen Blick auf den neuesten typischen Fall, http://www.php.cn/, der Dinge wie HTML5, Bootstrap, EF6 für MySql und Alibaba verwendet Cloud RDS, Alibaba Cloud CDN und andere neue Technologien und Konzepte weichen jedoch nicht von der Grundlage der Verwendung von .NET für die Entwicklung und der .NET-Ökoumgebung (IIS, Windows Server) für die Bereitstellung ab Nachdem wir WebForm oder sogar MVC vollständig abgeschafft haben, haben wir ein neues .NET-Entwicklungsmodell implementiert, das die Entwicklungseffizienz und Teamzusammenarbeit erheblich verbessert und die Entwicklungszeit erheblich verkürzt hat. In diesem Fall die Front-End- und Back-End-Verwaltung Die gesamte Website, von der Konzeption über Design, Entwicklung, Debugging und Bereitstellung, kann von einer Person in 3 Tagen fertiggestellt werden. Im Folgenden finden Sie eine detaillierte Beschreibung des Entwicklungsmodells. Wir werden uns auch die Meinungen aller anhören und uns weiter verbessern.

In Bezug auf die Bewertung von ASP.NET WebForm halte ich die folgenden Worte für objektiv: Die Innovation des Drag- und Event-gesteuerten Webentwicklungsmodells von ASP.NET WebForm hat das Erlernen einer großen Anzahl von .NET-Anfängern erleichtert . und Verständnis, aber letztendlich behinderte es die Popularisierung und kommerzielle Nutzung von .NET. Darüber hinaus wurden die hervorragenden Sprachfunktionen von .NET lange Zeit als gering und schwierig angesehen Als Geschäftsentwicklungsunternehmen trägt ASP.NET WebForm dabei eine unumstößliche Verantwortung.

Wenn ich an die Jahre 2006 und 2007 zurückdenke, war ich immer noch erstaunt über die Leistungsfähigkeit und den Komfort von UpdatePanel. Rückblickend hat dieses Entwicklungsmodell zweifellos das Verständnis der Entwickler für die Natur von HTTP und dieser Ebene getrübt Nebel ist auf lange Sicht ein Rückschlag. Später, in der ASP.NET MVC-Ära, haben sich die schlechten Gewohnheiten der hochrangigen Programmierer von Microsoft nicht verbessert, obwohl MVC immer noch voller selbstgerechter Versuche ist Um Entwicklern vorab Informationen zur Verfügung zu stellen, finden Nachwuchsentwickler die gut durchdachten Funktionen, Bindungen, Verknüpfungen usw. möglicherweise sehr praktisch, aber ich denke, dass jeder technische Manager, der sich mit kommerzieller Projektarchitektur und -entwicklung beschäftigt, ein tiefes Gefühl dafür haben wird Wenn sie wirklich stabil und solide im Projekt benötigt werden, sind diese kleinen Tricks nicht nur nutzlos, sondern auch schwer zu erweitern und führen eher zu Fehlern und Lücken, die schwer zu kontrollieren sind.

Glücklicherweise hat .NET unter der Führung von Nadella und unter der Leitung von Bill Gates, der als technischer Berater zurückkehrte, seine Richtung weiter korrigiert und nicht nur große Fortschritte in der Sprache, sondern auch im ökologischen Aufbau gemacht. zunehmend sichtbar. Ich habe gezweifelt, ob das von der Firma entwickelte agile .NET-Entwicklungsmodell ein Ausdruck des Fortschritts ist. Bis zum Erscheinen von vNext (MVC6.0) wurde mir plötzlich klar, dass verschiedene Wege zum gleichen Ziel führen, und Microsoft hat es endlich geschafft den richtigen Weg eingeschlagen.

Bevor ich über das Entwicklungsmodell spreche, möchte ich über Folgendes sprechen:

1. Einige neue Trends und Merkmale aktueller Internetprojekte oder traditioneller Webprojekte

1. WebService nicht mehr nutzen, sondern HTTP als Methode der Datenkommunikation nutzen

2. Der Datenträger nutzt nicht mehr XML, sondern JSON

3. Webfront- Ende Verwendet HTML5-Frameworks von Drittanbietern wie Bootstrap, JQueryUI, EasyUI usw.

4. Wenn APP-Anforderungen oder sogar APP-First-Anforderungen vorliegen, muss APP eine Verbindung zu verschiedenen Plug-Ins von Drittanbietern herstellen. ins

5. Um den APP-Schnellstart zu verfolgen, verwenden Sie manchmal ein HTML5-APP-Entwicklungsmodell wie PhoneGap, AppCan, HBuilder usw.

6. Wenn Bedarf an WeChat besteht, Es ist erforderlich, eine Verbindung zum öffentlichen WeChat-Konto herzustellen und die mobile Webentwicklung im WeChat-Browser durchzuführen

7. Kurzer Entwicklungszyklus und häufige Iterationen

8. Die Datenmenge wächst schnell. und es gibt mehr Anforderungen an die Berichtsanzeige und Datenanalyse

9. Der Personalbedarf des Projektteams wird durch die Webentwicklungsingenieure bestimmt, die in HTML5-Frontend-Ingenieure, JAVA (.NET)-Ingenieure, Datenbankingenieure usw. unterteilt werden .

10. Unit-Tests nehmen ab, Funktionstests nehmen zu und Internet-Tools (Worktile usw.) werden sogar verwendet, um professionelle Testtools zu ersetzen

Basierend auf der oben genannten Situation denken wir, dass wenn wir immer noch Verwenden Sie .NET für die Systementwicklung. In einem agilen Projekt mit

 2. Einige traditionelle .NET-Webentwicklungsmodelle und -methoden sollten aufgegeben werden

1. ASP.NET WebForm- und MVC-Modelle sind nicht mehr geeignet. Beide leiden unter einer ernsthaften Front-End- und Back-End-Kopplung, was einfache Prozesse verkompliziert, und das Front-End kann niemals von der .NET-Architektur getrennt werden.

2. Die SQL Server-Datenbank ist nicht mehr geeignet, da die Verwendung öffentlicher Clouds im Vergleich zu anderen Datenbanken immer häufiger wird Größe, Preis, Verfügbarkeit In Bezug auf Skalierbarkeit und sogar Leistung ist SQL Server im Nachteil.

3. Die traditionelle dreistufige Architektur ist nicht mehr geeignet. Viele Internetprojekte müssen von Anfang an mehrere Serviceknoten unterstützen und unterschiedliche Datenbanken für unterschiedliche Anwendungsszenarien verwenden. Darüber hinaus nutzt die dreistufige Architektur in großem Umfang Reflektion, um den Code auf Kosten der Leistung zu erhöhen, und eignet sich nicht mehr für die agile Entwicklung.

4. Die IT-Architektur von Server 2003 sollte aufgegeben werden, sei es das HTTP-Anforderungsverarbeitungsmodell von IIS6.0, das hinter IIS7 zurückbleibt, oder die Stabilität und Erweiterung von Server 2003, die hinter Server 2008 und 2012 zurückbleibt , sollte eine erneute .NET-Bereitstellung auf Basis von Server 2003 und IIS6 nicht in Betracht gezogen werden.

Obwohl einige Dinge aufgegeben wurden, ist Microsoft doch Microsoft:

3. Einige .NET-Funktionen sollten gestärkt werden

1. In- Mit dem Entwicklungstool Visual Studio 2015 ist VS2015 ein erstklassiges Entwicklungstool. Selbstverständlich beherrscht es die Frontend-Codierung (CSS, JS, HTML) mit benutzerdefinierten Einstellungen und Plug-Ins von Drittanbietern Für Ingenieure wird es noch leistungsfähiger sein

2. Die Verwendung der TFS-Quellcodeverwaltung, unabhängig davon, ob die TFS Express-Version intern installiert oder freier Speicherplatz auf tfs.visualstudio.com beantragt wird, kann die Zusammenarbeit im Team erleichtern Nach unserer Praxis geht Ihnen der Git-Modus nicht zu Kopf. Tatsächlich ist der TFS-Verwaltungsmodus am besten für die .NET-Entwicklung geeignet. 3. .NET-Hochsprachenfunktionen sollten intensiver genutzt werden die Grundlage des Verständnisses, wenn Sie Linq und Lamda kompetent nutzen können. Hochwertige Sprachfunktionen und -methoden, die nur in .NET zu finden sind, wie Ausdrücke, Reflexion und aufgabenparallele Programmierung, werden die Entwicklungseffizienz erheblich verbessern und die Entwicklungszeit verkürzen.

4. Die erweiterten Funktionen und die dynamische Verwaltung von IIS sollten durch die Hinzufügung des Core-Modus von Server 2008 und 2012 gestärkt werden und die dynamische Verwaltung von IIS sollte gestärkt werden. Die Konfiguration kann die Effizienz der Webverarbeitung erheblich verbessern.

5. Die Verwendung des Betriebssystems Server 2012 R2 sollte verstärkt werden. Plattformübergreifend ist zwar die Richtung von .NET und wird auch auf Mono gut praktiziert, aber heute, wo PC-Server und Cloud-Server billiger werden Und günstiger ist es immer noch, das neueste Server-Betriebssystem Windows zu verwenden.

 

Mit dem obigen Verständnis kann unser aktuelles .NET-Entwicklungsmodell einfach wie folgt zusammengefasst werden:

1. High-Level-Lösung -End- und Back-End-Kopplung

Das erste, was zu tun ist, ist, die ASP.NET WebForm- und MVC-Modelle vollständig aufzugeben. Die gesamte Logikverarbeitung am Front-End ist stark entkoppelt wird mithilfe von JS verarbeitet, einschließlich Dom-Element-Layout sowie Zeichnungs- und Datenanforderungen, während das Backend eine reine Geschäftslogikverarbeitung ist, einschließlich Logikverarbeitung und Datenverarbeitung. Derzeit verwendet unser Projekt die Routing-Funktion in ASP.NET und hostet weiterhin das ASP.NET-Modell und IIS. Theoretisch und in naher Zukunft wird es unter Linux durch Core IIS oder Nginx ersetzt, um reinen HTML5- und HTMl5-Cache zu hosten . Es wird auch sehr einfach sein.

 

2. Das Frontend verwendet reines HTML5

Das Frontend verzichtet auf herkömmliches HTML und versucht, die gesamte HTML5-Technologie zu verwenden. Zu den Opfern gehört der Verzicht auf Browser unter IE11. Aber im heutigen Internet-Denken ist eine solche Idee keine schlechte Idee, wenn die HTML5-Technologie im Frontend vollständig genutzt wird, werden verschiedene Verarbeitungen von Dateien, Grafiken, Bildern, Audio und Video, geografischem Standort usw. sehr einfach und flach und datenbasiert.

 

3. Das Frontend nutzt ausgereifte Frameworks voll aus

Nach der Verwendung des neuen Entwicklungsmodells besteht eine offensichtliche Änderung darin, dass die Künstler des Unternehmens nicht mehr oder nur noch selten auftreten Front-End-Schnittbilder und die Nachfrage nach technischen Künstlern (die CSS und JS entwickeln und Design verstehen können) nehmen von Tag zu Tag zu. Die Hauptursache für diesen Wandel ist das Aufkommen fortschrittlicher und hervorragender Front-End-Frameworks Derzeit werden JQuery, Zepto, JQueryUI, JQueryMobile, Bootstrap, Amaze UI, inoic, Framework7, SUI, MUI usw. sowie Plug-Ins von Drittanbietern verwendet, die diese hervorragenden Frameworks begleiten. Objektiv gesehen erhöht sich durch die Verwendung hervorragender Frameworks nicht nur das Systemrisiko des Front-Ends nicht, sondern aufgrund der Open Source, der klaren Architektur, der Stabilität und anderer Merkmale des Frameworks entsteht auch ein stabileres und skalierbareres Front-End erreicht wird. Um ein einfaches Beispiel zu nennen: Bootstrap hat eine wichtige Rolle bei der Lösung der Probleme mit dem vollständig kompatiblen Layout und dem responsiven Layout gespielt, die viele Webentwickler beunruhigen.

 

4. Objektorientierte Frontend-Entwicklung

Die Front-End-Entwicklung wird einfach durch objektorientierte JS-Funktionen gekapselt. Der Betrieb von Dom-Elementen und die Verarbeitung von Geschäftslogik-Datenanforderungen stimmen nicht nur mit den Back-End-Datentypen, Entitätsstrukturen und Verarbeitungslogik überein bringt das Front-End und das Back-End näher zusammen. Das Verständnis der Geschäftsanforderungen bei Entwicklern senkt auch die Schwelle für technische Schulungen erheblich und verbessert die Effizienz der Teamarbeit.

 5. Nutzen Sie den CDN-Dienst

Vor ein paar Jahren war der CDN-Dienst nur für große Unternehmen und Unternehmen verfügbar, und jetzt ist er völlig populär und zivil geworden Das Front-End wird immer beliebter. Es ist eine unbestreitbare Tatsache, dass die Daten immer umfangreicher werden, aber die eigentliche Geschäftslogik beträgt oft nur Dutzende K oder sogar mehrere K. Eine Seite von mehreren Hundert K, also 90 % Dabei handelt es sich um Frameworks von Drittanbietern wie JQuery. Daher verbessert die sinnvolle Nutzung der CDN-Beschleunigung nicht nur die Benutzerfreundlichkeit, sondern verbessert auch direkt die Ladekapazität von Webdiensten, die auf der HTTP-Architektur basieren, um mehr als das 5- bis 10-fache.

 6. HTTP-Service-basierte Geschäftslogik

Dieser Satz ist vielleicht keine sehr passende Beschreibung, aber er ist auch der wichtigste Link in unserer neuen .NET-Entwicklung Nach dem Studium fortschrittlicher Internetarchitekturen wie der Alibaba Open Platform haben wir schließlich ein strukturiertes, aber lockeres Geschäftslogik-Verarbeitungsmodell erstellt, das heißt, jedes Geschäftslogikverhalten hat einen eindeutigen Routing-Namen, und die Geschäftslogik ist nur für den Routing-Namen verantwortlich Der Routing-Name ist für Anforderungen der oberen Ebene wie Flussrichtung, Leistung, Berechtigungen und Sicherheit verantwortlich. Dies hat den Vorteil, dass Entwickler mit etwa 3 bis 5 Jahren Erfahrung (die auch die Hauptentwicklungskraft der meisten Unternehmen sind) voll genutzt werden können, sodass sie sich auf das Schreiben von Geschäftslogik konzentrieren können, während andere Dinge als Geschäftslogik erforderlich sind Die in der Architektur zu berücksichtigende Ebene wird von anderen Controllern gelöst und ein großes .NET-Projekt kann auch auf unterschiedliche Weise flexibel in Untermodule aufgeteilt werden. Für die Implementierung von HTTP-Diensten haben wir den ASP.NET ASHX-Prozessor, den Windows Service HOST WCF-Dienst und die ASP.NET-Web-API ausprobiert. Die aktuelle stabilere Version ist natürlich die Web-API. Wen API ist auch offensichtlich, wir werden uns in Zukunft weiter verbessern. Kurz gesagt, dieser Änderungsprozess hat in der Praxis die Entwicklungs- und Testeffizienz um mindestens das Dreifache verbessert. In einem späteren Kapitel wird dies ausführlich erläutert.

 7. Verteilter und Hot-Loading-HTTP-Dienstaufbau

Internetanwendungen erfordern eine agile Entwicklung und wiederholte Iterationen unter derselben logischen Architektur Daher ist die Erstellung verteilter HTTP-Dienste in der frühen Phase des Projektdesigns von entscheidender Bedeutung, und Geschäftsaktualisierungen erfordern leider das dynamische Laden von DLL-verwaltetem Code Bestehende Projekte verfügen nicht über groß angelegte verteilte Szenarien, eine stabilere DLL-Architektur zum dynamischen Laden wurde noch nicht entwickelt. Dies wird im nächsten Kapitel ausführlich besprochen.

 8. Verwenden Sie Alibaba Cloud, um Big-Data-Probleme zu lösen

Ich denke, jeder IT-Architekt, der Alibaba Cloud und andere Cloud-Dienste verwendet hat, kann dies zutiefst spüren. Alibaba Cloud ist anderen Clouds bereits um mehr als eine Position voraus. Tatsächlich haben insbesondere die datenbankbezogenen Funktionen von Alibaba Cloud, wie RDS, DRDS, KVStore usw., tatsächlich viele komplexe und schwierige Punkte in den traditionellen Anforderungen in der Praxis gelöst. Die spezifischen Details werden später ausführlich besprochen, aber ehrlich gesagt Ein Wort, beeilen Sie sich und nutzen Sie Alibaba Cloud. Zumindest in diesem Stadium entführt Sie Alibaba Cloud nicht, sondern hilft Ihnen.

Ich habe heute viel geschrieben. Im Allgemeinen möchte ich Ihnen sagen, dass .NET nicht nur eine agile Entwicklung im Internet durchführen kann, sondern auch große Projekte und große Datenmengen bewältigen kann Da ich seit mehr als fünfzehn Jahren Pascal-Datenstrukturen schreibe, habe ich die Vorteile bereits ausprobiert Ich habe keine Angst davor, von anderen verwirrt zu werden. Ich kann sogar mutig sagen, dass andere Sprachen aus einer umfassenden Perspektive (Sprache, Entwicklungsumgebung, Entwicklungseffizienz, technische Community, Teamzusammenarbeit, Anwendungsfunktionen) weit hinter .NET zurückgeblieben sind Im Bereich der Entwicklung auf Anwendungsebene gibt es viele, aber die .NET-Programmierer selbst haben es noch nicht bemerkt. Aus dieser Sicht müssen alle zusammenarbeiten und weiter studieren und erforschen.

Das Obige ist die Überlegung und Erkundung der Verwendung von .NET für eine effiziente agile Internetentwicklung. Weitere verwandte Inhalte finden Sie auf der chinesischen PHP-Website (www.php.cn).


Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn