2009-07-23 6 views
66

Ich frage mich, welche Best Practices für die Entwicklung von ASP.NET MVC-Apps mit einer Option für die Bereitstellung unter Linux entwickelt wurden. Wenn Sie diese Arten von MVC-Anwendungen erstellen,Bereitstellen von ASP.NET MVC unter Linux: Bewährte Methoden, Tools und Überraschungen

  • Welche Linux/Mono-Plattform zielen Sie?
  • Wie viel von der Entwicklung machen Sie unter Windows und wie viel unter Linux?
  • Verwenden Sie ein ORM, um die Datenbank zu abstrahieren? Welcher?
  • Betreiben Sie eine Build-Engine unter Linux? Was ist mit Tests?
  • Welche anderen Werkzeuge benutzen Sie?
  • Wie viel zusätzliche Arbeit war es, neben Windows auf Linux zu zielen?
  • Welche hässlichen oder angenehmen Überraschungen haben Sie erlebt?
+0

Klingt wie diese Frage sollte ein Community-Wiki sein. Es wird keine richtige Antwort geben. – mkchandler

+2

Einverstanden, es gibt möglicherweise keine einzige richtige Antwort, aber da die Bereitstellung unter Linux erfordert, dass wir mehr Komponenten in einer nicht-nativen Umgebung zusammenstellen, ist es sinnvoll, von den Entwicklern zu hören, die es tatsächlich getan haben oder gerade dabei sind. – keithm

+0

Ich war versucht zu sagen "Überraschung! Es wird nicht funktionieren!" aber ich habe nur meine eigenen Probleme bei der Umsetzung eines größeren Projekts. Mono ist wirklich spektakulär. Nur gedacht, das würde ein paar Kichern denen geben, die immer noch versuchen, die kryptischen Fehler zu verstehen, die Mono manchmal ertragen kann :) – Chazt3n

Antwort

34

Die Firma Ich arbeite für Ziele Mono unter Linux als unsere Haupteinsatzumgebung. Somit gibt es keine "zusätzliche" Arbeit - wir stellen den gesamten Stack zur Verfügung, von der Hardware über das Betriebssystem (angepasst und getrimmt) bis hin zu Anwendungen. Die Verwendung von Open Source bietet enorme Einsparungen für uns und unsere Kunden (und ja, wir tragen zu den OS-Projekten bei, auf die wir angewiesen sind).

Wichtig ist, ständig mit dem tatsächlichen Ziel zu testen (Entschuldigung, Mono unter Windows zählt nicht). Sicher, Entwickler verwenden Visual Studio, aber die kontinuierliche Integration (unter Verwendung von CruiseControl.Net, benötigen Sie Mono 2.4.2, um es unter Linux auszuführen) ist sowohl unter Windows als auch unter Linux möglich und testet alle Mono-Versionen, von denen wir erwarten, dass sie funktionieren in letzter Zeit stabiler, aber immer noch, Regressionen passieren zwischen den Releases). Es ist ziemlich einfach parallel Mono versions auf einem * nix System laufen zu lassen, du kannst sogar einen SVN Snapshot Build einbauen, wenn du es vorziehst Upstream Regressionen früh zu fangen. Wenn Sie keine eigene Distribution bereitstellen, denken Sie daran, dass die meisten Linux-Hersteller Mono mit benutzerdefinierten Patches ausliefern - das hat uns schon früher Probleme bereitet. Außerdem haben viele Distributionen viel Zeit, um Mono zu aktualisieren, und dies ist ein sich schnell entwickelndes Projekt.

Für Datenbank-Ebene verwenden wir meist "plain" ADO.NET - Oracle (mit dotConnect for Oracle, sie unterstützen Mono) und SQLite (Mono Schiffe mit einem funktionierenden Connector). Ich habe auch die offizielle ADO.NET Driver for MySQL (Connector/NET) verwendet und es funktioniert auch gut. ORM-Mappings sind trickreicher, aber NHibernate ist verwendbar (bedenken Sie, dass sie nicht Mono offiziell unterstützen).

Wie für die Build Engine und Tests - NAnt und NUnit sind gut bekannt und gut getestet. Mit den neuesten Versionen von Mono xbuild (Klon von MSBuild) wurde tatsächlich nutzbar, aber bereiten Sie sich darauf vor, eine ganze Menge Patches beizusteuern, wenn Sie sich entscheiden, es für komplexere Szenarien zu verwenden.

Schreiben Sie Tests. Viele von ihnen. Bereiten Sie Patches und Fehlerberichte vor. Wenn Sie kommerzielle Komponenten verwenden, stellen Sie sicher, dass der Lieferant Mono offiziell unterstützt.

+0

Danke für eine großartige Antwort. Was ist Ihre Datenbank und Datenzugriffssoftware? – keithm

+0

Aktualisiere meine Antwort :-) – skolima

+0

Danke für die Information. Arbeitest du immer noch so? Wenn ja, haben Sie auf neuere Versionen von .NET und MVC aktualisiert? Verwenden Sie auch ORM-Software wie Entity Framework erfolgreich? Es sind ein paar Jahre seit deiner Antwort vergangen, also würde ich gerne wissen, dass du immer noch so positiv über den Tech-Stack bist wie damals. Würden Sie CC.NET, NAnt, NUnit usw. weiter empfehlen? Danke :) –

1

Werfen Sie einen Blick auf die Mono project. Klingt so, wonach du suchst. Wenn ich mich richtig erinnere, haben sie jetzt ASP.NET MVC integriert.

Ich habe noch nie mit Mono gearbeitet, aber aus meinem Verständnis gibt es nicht viele Unterschiede.

4

Nathan Bridge Blog hat einige schöne Artikel zeigt, unter anderem:

  • läuft MVC3 mit Rasiermesser auf mono
  • Migration ASP.NET MVC Windows/SQL Server auf Linux/MySQL
  • Installation und Ausführen MonoDevelop
  • Installation mono von der Quelle

http://iws.io/get-mvc3-razor-running-on-mono/

+0

die Verbindung ist tot – aclave1

+1

@ aclave1, danke, aktualisiert. –

Verwandte Themen