Ich weiß nicht, seit wann, ein Unternehmen zu gründen ist sehr billig geworden. 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.
Sind neue Technologien und neue Ideen offensichtlich nicht die Siege unzähliger technischer Experten, die sie in langjähriger Praxis rekonstruiert haben? Fahrer, ich bin zutiefst erfreut, dass Microsoft Open Source akzeptiert und die Veränderungen und Fortschritte annimmt, die die Community im Laufe der Jahre hervorgebracht hat. Deshalb möchte ich Ihnen heute mitteilen, wie ich und mein Unternehmen es im Laufe der Jahre genutzt haben und technische Zusammenfassung der .NET-Webentwicklung und sogar der Entwicklung von Internetanwendungen.
Der neueste typische Fall, bei dem neue Technologien und Konzepte wie HTML5, Bootstrap, EF6 für MySQL, Alibaba Cloud RDS, Alibaba Cloud CDN usw. verwendet werden. Dies ist jedoch der Fall Wir haben uns nicht von den Grundlagen der Verwendung von .NET für die Entwicklung und der Verwendung der ökologischen .NET-Umgebung (IIS, Windows Server) für die Bereitstellung gelöst. Der gesamte Entwicklungsprozess hat jedoch vollständig auf WebForm und sogar MVC verzichtet Ein neuer Satz von .NET-Entwicklungsmodellen verbessert die Entwicklungseffizienz und die Teamzusammenarbeit erheblich. In diesem Fall wird auch die Front-End- und Back-End-Verwaltung der gesamten Website erheblich verkürzt , Entwicklung, Debugging und Bereitstellung wurden von einer Person in drei Tagen abgeschlossen. Im Folgenden finden Sie eine detaillierte Beschreibung des Entwicklungsmodells. Wir werden uns auch die Meinungen aller anhören und uns weiter verbessern.
Was die Bewertung von ASP.NET WebForm betrifft, 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 Aufkommen von vNext (MVC6.0) wurde mir plötzlich klar, dass verschiedene Wege zum gleichen Ziel führen, und Microsoft hat es endlich getan 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 wird nicht mehr verwendet, aber HTTP wird in großem Umfang als Methode der Datenkommunikation verwendet
2. Der Datenträger verwendet nicht mehr XML, sondern JSON
3. Das Web-Frontend wird Verwenden Sie Bootstrap, JQueryUI, HTML5-Frameworks von Drittanbietern wie EasyUI
4. Wenn APP-Anforderungen oder sogar APP-First-Anforderungen bestehen, muss die APP eine Verbindung zu verschiedenen Plug-Ins von Drittanbietern herstellen
5. Um den schnellen Start der APP voranzutreiben, übernehmen Sie manchmal ein HTML5-APP-Entwicklungsmodell wie PhoneGap, AppCan, HBuilder usw.
6. Wenn Bedarf an WeChat besteht, dann ist erforderlich, um das öffentliche WeChat-Konto zu verbinden und die mobile Webentwicklung im WeChat-Browser durchzuführen
7. Kurzer Entwicklungszyklus und häufige Iterationen
8. Die Datenmenge wächst schnell, und zwar dort Es bestehen höhere Anforderungen an die Berichtsanzeige und Datenanalyse
9. Der Personalbedarf des Projektteams ist unterteilt in Webentwicklungsingenieure und HTML5-Frontend-Ingenieure, JAVA (.NET)-Ingenieure, Datenbankingenieure usw.
10. Unit-Tests werden reduziert, Funktionstests nehmen zu und Internet-Tools (Worktile usw.) ersetzen sogar professionelle Testtools
Basierend auf der obigen Situation gehen wir davon aus, dass, wenn wir immer noch .NET für die Systementwicklung verwenden, in einem agilen Projekt mit einem Benutzervolumen von
2. Etwas traditionelle .NET-Webentwicklung Modelle und Die Methode sollte aufgegeben werden
1. ASP.NET WebForm und MVC-Modell sind nicht mehr geeignet. Beide verfügen über eine ernsthafte Front-End- und Back-End-Kopplung, komplizierte einfache Prozesse und das Front-End niemals von der .NET-Architektur getrennt werden.
2. Die SQL Server-Datenbank ist zwar nicht mehr geeignet, da die Nutzung ö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.
Auch wenn einige Dinge aufgegeben wurden, ist Microsoft doch Microsoft:
3. Einige .NET-Funktionen sollten gestärkt werden
1. Nutzen Sie Visual Studio intensiv 2015-Entwicklungstools Selbstverständlich ist VS2015 ein erstklassiges Entwicklungstool, das sich noch besser mit der Frontend-Codierung (CSS, JS, HTML) auskennt wird noch leistungsfähiger sein
2. Die Verwendung der TFS-Quellcodeverwaltung, unabhängig davon, ob Sie die TFS Express-Version intern installieren oder kostenlosen Speicherplatz auf tfs.visualstudio.com beantragen, kann die Zusammenarbeit im Team erleichtern. Lassen Sie sich nicht vom Git-Modus mitreißen. Tatsächlich ist das TFS-Verwaltungsmodell am besten für die .NET-Entwicklung geeignet.
3. .NET-Hochsprachenfunktionen sollten intensiver genutzt werden Wenn Sie Linq, Lamda-Ausdrücke, Reflektion und Task geschickt verwenden können, verbessern Sie die Entwicklungseffizienz erheblich und verkürzen die Entwicklungszeit.
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 heutzutage werden PC-Server und Cloud-Server billiger Und günstiger ist es immer noch, das neueste Server-Betriebssystem Windows zu verwenden.
Mit dem obigen Verständnis kann unser aktuelles .NET-Entwicklungsmodell nach der Zusammenfassung einfach wie folgt zusammengefasst werden:
1. Stark entkoppeltes Front-End und Back-End
Erstens werden die ASP.NET-WebForm- und MVC-Modelle vollständig aufgegeben und die Front- und Back-Ends werden stark entkoppelt. Die gesamte Logikverarbeitung im Front-End wird mithilfe von JS verarbeitet, einschließlich Dom-Elementlayout sowie Zeichnungs- und Datenanforderungen , während das Back-End 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 Front-End verwendet reines HTML5
Das Front-End verzichtet auf traditionelles HTML und verwendet so weit wie möglich HTML5-Technologie. Zu den Opfern gehört der Verzicht auf Browser unter IE11, aber in den heutigen Internetdenken: Wenn die HTML5-Technologie im Frontend vollständig genutzt wird, werden verschiedene Verarbeitungen von Dateien, Grafiken, Bildern, Audio und Video, geografischen Standorten usw. sehr einfach, flach und datenorientiert. basierend.
3. Das Front-End nutzt ausgereifte Frameworks voll aus.
Nach der Verwendung des neuen Entwicklungsmodells besteht eine offensichtliche Änderung darin, dass die Künstler des Unternehmens kein Front-End-Schneiden mehr oder nur noch selten durchführen für technische Künstler Die Nachfrage nach Leuten (die sich mit CSS-Entwicklung, JS-Entwicklung und Design auskennen) steigt von Tag zu Tag. Die Hauptursache für diesen Wandel ist das kontinuierliche Aufkommen fortschrittlicher und hervorragender Front-End-Frameworks. Wir verwenden derzeit JQuery. Zepto, JQueryUI und JQueryMobile, Bootstrap, Amaze UI, inoic, Framework7, SUI, MUI usw. sowie Plug-Ins von Drittanbietern, 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 Front-End-Entwicklung
Die Front-End-Entwicklung wird einfach durch die objektorientierten Funktionen von JS sowie den Betrieb von Dom-Elementen und die Verarbeitung von Geschäftslogik gekapselt Datenanforderungen stehen in engem Zusammenhang mit den Back-End-Datentypen. Die Entitätsstruktur und die Verarbeitungslogik sind konsistent, was nicht nur das Verständnis der Geschäftsanforderungen zwischen Front-End- und Back-End-Entwicklern verkürzt, sondern auch die Schwelle für technische Schulungen erheblich senkt und verbessert die Effizienz der Teamarbeit.
5. Verwenden Sie den CDN-Dienst
Vor einigen Jahren waren CDN-Dienste nur großen Unternehmen und Unternehmen vorbehalten. Jetzt sind sie völlig populär und zivilisiert. Es ist eine unbestreitbare Tatsache, dass das Web-Frontend immer wichtiger wird, aber die eigentliche Geschäftslogik beträgt oft nur zehn K oder sogar ein paar KB, 90 % davon sind Drittanbieter-Frameworks wie JQuery. Daher verbessert die sinnvolle Nutzung der CDN-Beschleunigung nicht nur die Benutzererfahrung, sondern erhöht sie auch direkt die Ladekapazität von Webdiensten, die auf der HTTP-Architektur basieren, um mehr als das Fünf- bis Zehnfache.
6. Auf HTTP-Diensten basierende Geschäftslogik
Diese Beschreibung ist möglicherweise nicht sehr zutreffend, aber sie ist auch der wichtigste Link in unserem neuen .NET-Entwicklungsmodell Nach dem Öffnen der Alibaba-Plattform Beim Studium der fortgeschrittenen Internetarchitektur haben wir schließlich ein strukturiertes, aber lockeres Geschäftslogik-Verarbeitungsmodell erstellt, das heißt, jedes Geschäftslogikverhalten hat einen eindeutigen Routing-Namen. Die Geschäftslogik ist nur für den Routing-Namen verantwortlich, und der Routing-Name ist für den Fluss verantwortlich Richtung, Verantwortlich für übergeordnete Anforderungen wie Leistung, Berechtigungen und Sicherheit. Dies hat den Vorteil, dass Entwickler mit etwa 3 bis 5 Jahren Erfahrung (was auch die Hauptentwicklungskraft der meisten Unternehmen ist) voll ausgenutzt 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, die unterschiedliche Server und Datenbanken verwenden Daher ist in der frühen Phase des Projektentwurfs die Erstellung verteilter HTTP-Dienste von entscheidender Bedeutung, und Geschäftsaktualisierungen müssen im .NET-System durchgeführt werden können. Leider ist dies das dynamische Laden und Verwenden von DLL-verwaltetem Code Aufgrund der bestehenden Projekte des Unternehmens gibt es keine groß angelegten verteilten Szenarien, sodass noch keine relativ stabile DLL-Architektur zum dynamischen Laden entwickelt wurde. 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 zutiefst spüren, dass Alibaba Cloud bereits führend ist mehr als einen Körper haben. 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.