2009-07-25 18 views
9

Ich habe mehrere andere Beiträge hier gelesen, so dass ich die Idee auf die Pro vs Nachteile, vor allem mit voller Kontrolle über die gerenderten HTML-Code usw. (in MVC).ASP.NET MVC vs Webforms: Ersetzen von WebForms Controls

Meine Frage bezieht sich auf die UI-Steuerelemente: In MVC muss ich alle UI-Steuerelemente selbst schreiben (oder das HTML-Äquivalent). Wird das nicht sehr schwierig werden? Der Grund, warum diese 3rd-Party-Anbieter für asp.net da sind, ist nur wegen der Tatsache, dass es schwierig ist, UI-Steuerelemente für ASP.NET ganz von uns zu schreiben und in der Lage zu sein, auf alle Webbrowser und auch wir zu zielen Wir konzentrieren uns lieber auf die Geschäftslogik, anstatt die ganze Zeit damit zu verbringen, den HTML-Code für die Benutzeroberfläche selbst zu schreiben.

Ich verstehe, dass diese Funktion uns die volle Kontrolle über den endgültigen HTML bekommt, aber ist es nicht kontraproduktiv, diese UI Bit selbst zu machen. Wenn es so einfach war, sie selbst zu schreiben, wie kommt es, dass diese 3-Parteien-Anbieter jetzt alle leben? Das hätten wir in all den Jahren der WebForms-Tage selbst machen können.

Ich bin mir sicher, dass ich hier etwas vermisse oder ein bisschen dumm bin, aber bitte erleuchte mich, was ich vermisse, insbesondere in Bezug auf das UI-Bit, das wir selbst geschrieben haben.

Nur weil ich die volle Kontrolle über das Programm durch Schreiben in IL-Code bekommen, gehen wir und tun das? Wir benutzen immer noch C# und solche Sachen - also diese Theorie von "volle Kontrolle über HTML" - ich bin nicht in diese Idee hineingekauft.

Bitte helfen Sie meinen Kopf um dieses UI Bit. Andere Dinge, die ich verstehe, über die Trennung von Bedenken, TDD-basierte Entwicklung möglich mit MVC usw. Aber warum würde ich gehen, um die UI-Kontrollen ganz von mir schreiben - es ist ein bisschen eine Arbeit, nicht wahr?

+0

Ich entschuldige mich, wenn mein Beitrag ein Duplikat ist.Wenn Sie mich an diesem Punkt auf einen anderen Post verweisen können (auf dem UI-Bit, mit dem ich mich beschäftige), würde ich sogar versuchen, diesen Post von hier zu löschen. Vielen Dank. –

+0

Sombody hatte ein paar Sekunden zurück gesagt, dass mein Beitrag ein Duplikat war, und ich antwortete darauf als Kommentar, aber diese andere Person hat anscheinend ihre Kommentare jetzt entfernt :-) –

+0

Ich war dieser Jemand. Lies diesen Beitrag noch einmal und muss zugeben, dass es kein genaues Duplikat ist. Wie auch immer - ich bin satt von dieser "ASP.NET MVC vs WebForms" Sache. Es wird noch schlimmer als "PHP vs RoR". : D –

Antwort

2

Problem ist, ist ASP.NET MVC viel jünger als Produkt ASP.NET. Seit vielen Jahren entwickeln Drittanbieter TONs wiederverwendbarer Komponenten, und ich glaube, dass es nur eine Frage der Zeit ist, bis vergleichbare Steuerelemente für ASP.NET MVC verfügbar sein werden.

Wenn Sie wirklich sehr reich GUI mit Steuerelementen von Drittanbietern brauchen, und Sie nicht in akzeptabler Zeit umschreiben können - bleiben Sie bei asp.net. Meiner Meinung nach, MVC gibt Ihnen Tonnen von Macht, es wäre nicht klug, viel mehr Zeit zu verbringen, um Kontrollen zu überschreiben, als Sie sparen können. Wenn Sie ohne Kontrollen leben können, und MVC-Konzepte - verwenden Sie MVC, und Sie werden mit Sicherheit Lösungen von Drittanbietern sehen, sobald sie einen wachsenden Markt haben (vielleicht haben Sie das schon bemerkt, ich weiß es nicht) für MVC-Erweiterungen.

1

Ich glaube, dass die Benutzeroberfläche und die Benutzererfahrung entscheidend für den Erfolg einer Web-App sind. Die intuitive und benutzerfreundliche Seite, die Minimierung der Navigation, die der Benutzer für die Ausführung der Aufgabe benötigt, sowie die Bereitstellung effektiven Feedbacks und Interaktivität können den Unterschied zwischen einer Website, die Benutzer verwenden möchten, und einer, die sie vermeiden, ausmachen.

Wenn Sie versuchen, Benutzer auf einer öffentlichen Website zu gewinnen, sind ein ansprechendes Erscheinungsbild und eine hervorragende Benutzerfreundlichkeit der Schlüssel zum Aufbau von Wiederholungsbesuchen.

Wenn Sie eine Intranet-App schreiben, die den ganzen Tag von Hunderten oder Tausenden von Mitarbeitern verwendet wird - wie ich es meistens tue -, macht die Benutzerschnittstelle die Benutzeroberfläche sehr effizient und benutzerfreundlich.

Also würde ich nicht die Bedeutung der Benutzeroberfläche herunterspielen. Es ist kein Ärgernis. Es ist ein wichtiger Teil der Benutzererfahrung.Ich schlage vor, dass ein Webentwickler alle Tools und Strategien berücksichtigen sollte, die die Aufgabe erfüllen. Das bedeutet oft, die UI-Steuerelemente selbst zu codieren. Oder mit einem Teamkollegen zu arbeiten, der diesen Teil der Arbeit gerne macht.

11

Die Sache ist die:

Wenn Sie in Web-Entwicklung meistern möchten Sie HTML zu meistern haben + CSS + Javascript

Und mit WebForms müssen Sie die WebForms Weise lernen, es zu tun, aber Mit MVC haben Sie die Macht von .Net mit der Freiheit, das gewünschte HTML + CSS + Javascript zu erzeugen.

+0

Eduardo, die gleiche Macht (um Ihren HTML zu generieren) haben Sie auch mit WebForms. – user134706

+6

asp.net controls sind undichte Abstraktionen, die gerade genug Komplexität verstecken, um einfache Anwendungen einfach zu machen, aber wenn Sie mehr tun müssen als sie bieten, stehen Sie vor einer sehr steilen Lernkurve. – Will

+0

Das ist eine Atomwaffe für Drag & Drop-Entwickler. Mangel an Wissen stellt Fragen über Tag-Suppe und zurück zu klassischen ASP nicht unangemessene Technologie. –

0

Hier ist der Schlüssel, den ich denke, dass Sie fehlen. Wenn ASP.NET nicht länger die Art und Weise ist, MS zu erledigen, werden Sie irgendwann gezwungen sein, weiterzumachen und etwas anderes zu tun. Ich habe programmiert in Perl, ASP classic, dann ColdFusion, dann PHP, dann ASP.NET Webformulare, dann ASP.NET MVC ... das einzige, was sie alle gemeinsam haben, ist die zugrunde liegende Datenbank, Design Patterns, Best Practices für eine bestimmte Reihe von Technologie und ... HTML, JavaScript, CSS und Photoshop.

Niemand fragt Sie, MVC zu lernen. Niemand sagt Ihnen, dass Sie keine WebForms verwenden sollen. Wenn Sie sich dagegen beschweren, dass Sie eine rohe Benutzeroberfläche schreiben müssen, werden Sie in dieser Branche nicht weit kommen. Du solltest jeden Tag etwas Neues lernen ... und es klingt so, als ob eine Zeit, die du für HTML und CSS verbringst, ein großartiger Ort wäre, um deinen Fokus zu beginnen!

Das größte Problem, das Sie bei der Verwendung von Steuerelementen von Drittanbietern haben, ist, wenn ein Client Sie auffordert, etwas zu tun, das die Steuerelemente von Drittanbietern nicht abdecken. Wenn Sie ihre Komplexität und die hinzugefügte Feature-Anforderung nicht selbst reproduzieren können, werden Sie möglicherweise einen Ausfall Ihres beruflichen Lebensunterhaltes erleben! Sie müssen wissen, wie man alles macht ... schließlich!

Ich schlage generell vor, dass Sie neue Technologien annehmen. Du musst sie nicht benutzen ... aber du solltest zumindest wissen wie. Auf diese Weise wissen Sie, welches das beste Werkzeug für ein bestimmtes Projekt ist.

+0

Sicher, danke. Ich bin bereit, HTML + CSS + JS mit Unterstützung von JQuery, JQ UI zu lernen :-) Nur gedacht, ich werde fragen, um zu bestätigen, dass "es mir" sein wird, wer den UI-Code schreiben wird, nur für den Fall, dass ich etwas verpasst habe dort hin; -) ... ich will nicht am Ende wie ein Idiot in meinem Team aussehen, wenn andere sagen würden: "Bist du verrückt? Warum schreibst du das alles, du Idiot?" :-) Ich wollte nur dort geklärt werden und eine solche Situation vermeiden. Danke. –

+0

Eigentlich - oft kann ein kleiner Tritt mit Client-Code viel bewirken. –

0

Ich habe mich gefragt - was entspricht "Kontrolle" von Webforms in asp.net mvc? Es ist keine Teilansicht mit Sicherheit. Was kann es noch sein? Controller + Teilansichten über Teilanfragen?

Vielleicht bin ich dumm, blind oder beides, aber ich habe keine "Kontrolle" für asp.net mvc gesehen. Nur eine Menge Code-Schnipsel, um das eine oder andere zu erreichen.

Ich glaube, dass asp.net mvc ist ziemlich unfreundlich mit rasanter Entwicklung. Nur ein Ausweg aus diesem Problem - eine Menge von Open-Source-Code (wie MvcContrib), Tutorials, Beispielanwendungen & wichtigsten - etwas intelligentere Entwickler.

+0

Wir brauchen nicht wirklich "etwas schlauere" Entwickler. Wir brauchen nur die Entwickler von ole, die wissen, wie man Dinge in Notepad macht, anstatt einen Haufen fantastischer Widgets und Werkzeugsätze zu benötigen! Notepad zwingt Sie, Ihren Beruf zu kennen ... nicht nur denken, dass Sie Ihren Beruf kennen. Wenn Sie ein Web-Entwickler sind ... und Sie können nicht arbeiten in Roh-HTML, Javascript, Css, etc., dann sind Sie noch nicht wirklich ein Web-Entwickler. Du bist wirklich immer noch nur ein Script-Kiddy mit einer Abhängigkeit von Dreamweaver oder Visual Studio. Keine Sorge ... wir haben alle da draußen angefangen! Ich weiß, dass ich es getan habe! –

+0

Nennen Sie sie, was auch immer Sie mögen. Die Idee bleibt. –

+0

@Andrew: Ich begann im Editor, HTML, CSS, Javascript, klassische ASP. und bewegte sich auf Webforms. Will ich wirklich zum Notizblock zurückkehren? Nein danke: D – joedotnot

1

Ich habe vor kurzem eine sehr komplexe Website mit ASP.NET + JavaScript auf MVC + jQuery überarbeitet. Die Komplexität des Codes wurde um 50% -75% reduziert und wurde viel testbarer. Ich ersetzte alle komplexen Webcontrols, die ich schreiben musste (mit einer steilen Lernkurve, die ich überwinden musste), mit sehr einfachen HtmlHelper-Methoden.

Vergessen Sie nicht, wenn Sie benutzerdefinierte Websteuerelemente verwenden, erhalten Sie vom Steuerelemententwickler eine sehr statische Benutzeroberfläche. Mit Raw HTML können Sie Stile und UI nutzen, die von der gesamten Web-Industrie entwickelt wurden.

Erhöhte Einfachheit, verringerte Entwicklungszeit, Testbarkeit, Flexibilität in UI ... Ich möchte nicht zurückgehen.

+2

Sie erhalten eine statische Benutzeroberfläche, wenn das Steuerelement so geschrieben wurde.Es gibt keinen Grund, dass die von der gesamten Web-Industrie entwickelten "Stile und UI" nicht in ein Web-Steuerelement integriert werden könnten. –

+0

Um zu verstehen, wovon ich rede, schauen Sie sich nur an, wie ASP.NET-Steuerelemente Seite-an-Seite-Inhalte rendern und wie alle anderen es tun. Da Steuerelementautoren den HTML-Code in Stein gemeißelt haben, werden Sie häufig feststellen, dass Sie häufig verwendete Layouts und Stile nicht verwenden können. Sie müssen hart arbeiten (z. B. Steueradapter), um die Stile für die Verwendung mit Ihren Websteuerelementen anzupassen. – Will

+0

Will, WebForms können Sie TemplaTable WebControl erstellen (angesichts der Tatsache, dass Sie ITemplate Eigenschaften erstellen), die dem Integrator die Möglichkeit gibt, die sehr benutzerdefinierte HTML schreiben, die er will. Der Entwickler kann sehr komplexe Web-Steuerelemente erstellen, ohne eine einzige Zeile HTML zu schreiben. –

1

Sie müssen auch daran denken, dass ASP.NET MVC nur die erste Version ist.Ich glaube nicht, dass es wirklich irgendeinen Grund gibt, warum Sie nicht das Äquivalent von Serversteuerungen haben könnten, um bestimmte Aufgaben zu ermöglichen - denken Sie daran, es gibt viele Serversteuerungen, die keine Markups erzeugen (wie Repeater, PlaceHolder, Listenansicht). Diese Art von Steuerelementen könnte in einer zukünftigen MVC-Einstellung nützlich sein, denke ich.

+0

Sicher - Sie werden immer in der Lage sein, Steuerelemente zu erstellen/verwenden, solange sie nicht viewstate verwenden. Aber ist es nicht das, was sie in den meisten Fällen würdig und windowsförmig macht? –

1

Ich glaube, dass ASP.net kam herum, als viele Entwickler waren immer noch zu Desktop-Anwendungen und nur zu Beginn der Web-Entwicklung. Zu diesem Zeitpunkt war das Abstrahieren der Details des Webs mit Steuerelementen und Postbacks eine großartige Möglichkeit, Leute zum Laufen zu bringen. Zu diesem Zeitpunkt versuchten wir nicht, das Internet zu perfektionieren, wir wollten einfach nur weitermachen!

Jetzt, wo das Web gereift ist und wir alle langsam über HTML, CSS, Javascript und dergleichen gelernt haben, wollen wir unsere Websites für unsere eigenen Bedürfnisse optimieren und wir wollen nicht auf ASP.net Forms-Steuerelemente angewiesen sein um die feinen Details unserer Webseiten zu kontrollieren.

Zusammenfassend denke ich, ist dies über die natürliche Evolution vieler Entwickler vom Desktop auf das Web

+0

Das ist ein guter Punkt. Entwickler sind wichtig und nicht die Technologie, die sie verwenden. –

0

Nun, ich auch fragt mich, wie 3rd-Party-Kontrollen in ASP.NET MVC verwenden. Offensichtlich und entgegen einiger Antworten hier musste es möglich sein.

So viel Zeit ist vergangen, seit die Frage gestellt wurde, hat sich die Branche weiterentwickelt. Also habe ich gesucht und gefunden (aber noch nicht getestet) Lösungen wie Telerik Extensions for ASP.NET MVC.

Ich poste diese Antwort hier in erster Linie andere MVC newbees wie mich zu unterstützen - gerade Google

"asp.net Mvc" steuert

1

Ich für meinen Teil bin sehr dankbar, dass Sie können ASP.NET-Steuerelemente in MVC nicht verwenden.

Steuerelemente sind, wie bereits erwähnt, nur serverseitige Codeblöcke, die HTML und JavaScript in Ihrem Namen darstellen. Dinge wie ein Datagrid sind großartig, bis jemand Sie bittet, eine kleine Änderung vorzunehmen, wie eine Löschbestätigung, und dann scheint es unmöglich, bestimmte Aufgaben zu erledigen.

Die gute Nachricht ist, dass es sehr leistungsfähige jQuery-Tools gibt, die Ihnen helfen sollen. jqGrid ist ein großes Gitter Ersatz auf diese Weise mehr tut als das ASP.NET Grid ...

http://www.trirand.com/blog/

jsTree ein treeview ist, das ist fantastisch. Wieder mit dem jQuery ....

http://www.jstree.com/

Und die Wahrheit ist, dass Sie die meisten Dinge mit rasiermesser tun können, HTML, JavaScript und CSS. Es ist so einfach, dass es nur dumm ist.

Es ist schwer für Leute wie mich, die Webformulare Entwickler waren, um MVC zu verstehen und warum sollten Sie es verwenden, weil es so einfach ist. Es ist schwierig, die Komplexität von konventionellem ASP.NET loszulassen. Aber es fühlt sich so gut an, wenn du es tust.

Und mischen Sie keine Webformulare mit MVC. Du kannst es tun, aber du wirst dir wünschen, du hättest es nicht getan.