Migrer .NET de Base à partir d'un ASP.NET 4.5 MVC web app
J'ai juste été donné une mission avec une certaine tech je ne suis pas familier avec - notre beau windows ASP.NET MVC web app doit être converti pour être utilisé dans un environnement linux.
Je travaille dans la santé et nous avons les données de l'utilisateur ne peuvent absolument pas être perdu ou têtes vont tomber (la nôtre ou la leur).
Je suis généralement pas un C#/ASP.NET guy - si je peux l'adapter à la tâche. J'ai lu plus de l'officiel docs @ http://docs.asp.net/en/latest/getting-started/installing-on-linux.html et peut voir que cette tâche signifie en effet 'la cible .NET de BASE (ou mono) cadre".
J'ai googlé autour et il n'y a pas de facto /moyen facile de migration semble - t-il seulement d'apprendre la nouvelle modulaire de l'installation avec les configs des claques dans le projet.json et vous allez loin! Avant j'essaie de le faire manuellement en est - il de l'info les gars, vous pourrait me conseiller sur l'? Certains systématique des processus à suivre? Peut-être certains "pièges" que j'aurais dû lire à l'avance?
Le projet utilise NHibernate et Autofac pour DI - semble assez standard. Je voulais juste savoir comment beaucoup de lecture/expérimenter ce serait prendre pour l'obtenir en cours d'exécution sur un serveur linux en fin de compte, c'est ce qui compte.
- À mon humble avis, s'en tenir à l'exécution de votre projet mono pour le moment. Core est un peu trop (pour ne pas mentionner de nouveaux travaux de flux à partir d'une perspective de développement). Ce n'est pas de dire que c'est immature, mais si la sécurité est une préoccupation, je serais rester avec quelque chose qui n'est pas aussi profond qu'un dev. le cycle.
- Il est actuellement sur windows! Mais merci pour les conseils, je suppose que je vais vérifier certains mono-guides là-bas..
- Vous ne pourrez pas utiliser NHibernate ou Autofac avec .Net de Base encore - je ne crois pas que ce soit est convertie encore. Et vous avez raison, c'est un manuel de conversion. Bonne chance...
Vous devez vous connecter pour publier un commentaire.
La réponse ci-dessous est obsolète, mais les contours d'une solution de travail de mise à jour .Net 4.5 MVC de l'application de l' .Net framework. .Net de Base est prêt pour la production
Le CLR de Base, et BCL ne sont pas prêtes pour la production. Période. Au moins pas encore, et probablement pas pour six mois à un an. Prise en charge des dépendances est même plus qu'un inconnu à ce point. Autofac a pas de noyau clr compatible bibliothèque. Vont-ils? C'est un endroit pour commencer la recherche. Quand seront-ils? Il pourrait être un certain temps et c'est un projet qui est hors de votre contrôle.
Même pour des travaux de production .NET de base est encore très tôt. La réponse la plus simple serait de dire à votre patron attendre six mois et voir comment tout secoue plutôt que potentiellement brûler des centaines d'heures de travail ou de pré-production de code. Bien sûr, cela est susceptible d'être ignoré voici donc comment je pourrais procéder si aujourd'hui, il me fallait absolument.
Il ya un couple de modifications roulés dans votre question. Vous êtes à la recherche de migrer à partir de ASP.NET 4.5 ASP.NET 5. Vous êtes également à la recherche de la cible d'un nouveau cadre. Enfin vous envisagez sur l'exécution de la solution dans un nouvel environnement. Chacun d'eux peut être traité indépendamment des autres (bien que quelques pas avant les autres) c'est la route que je prendrais.
Phase 0) Il n'y a pas DNX les versions prises en charge .Net framework avant 4.5.1. Vous serez en utilisant DNVM pour sélectionner un DNX à la cible. Vous ne pouvez pas cibler ce qui n'est pas disponible si votre projet est en train de ciblage quelque chose avant 4.5.1 mise à jour et vérifiez s'il y a rupture de changements. Si il y a fixer et de maintenir condebase compatible avec 4.5.1 ou plus tard.
Phase 1) DNVM et DNX sont compatibles avec l'existant "plein" .Net Framework 4.5.1+) et .Net De Base (5.0). Il peut être tentant de sauter à droite à ASP.NET 5 cours d'exécution sur .Net Core 5, mais ce serait une erreur. Depuis .Net de Base nécessite un dnx en fonction du projet et de dnx en fonction des projets de soutien .Net 4.5.1 (ou plus tard), la première étape serait de passer à la nouvelle structure du projet présenté par asp.net 5. Il aura probablement besoin de l'expérimentation et de la documentation est spartiate à ce point. L'objectif serait de votre application existante (asp.net 4.5 en cours d'exécution sur .net framework 4.5.1 cours d'exécution dans le dnx. Il n'y a pas de projet de migration des assistants de sorte que vous serez à partir d'une nouvelle dnx projet (utilisation asp.net 5 "vide" de modèle) et la copie de votre code existant. Cela peut sembler un changement mineur mais il casse que le couplage de l'application à une fois installé, le cadre sur le windows uniquement de l'hôte. Une fois que vous avez la base de code s'exécutant dans un dnx environnement que vous avez les bases ont été jetées pour cibler d'autres environnements.
Phase 2) Migrer vers asp.net 5 MVC (6). Vous serez toujours en ciblant le "plein" .net framework et en cours d'exécution sur windows. .Net de base n'est pas (et ne le sera jamais) soutenir votre projet existant asp.net version (4.5). Cependant asp.net 5 est compatible avec le plein cadre (4.x) et le noyau (5). Cela vous donne la possibilité de mettre à niveau à asp.net 5 sans changer sur .net de base. La cible à la fin de la phase 2 est l'application web (fonctionnelle) à l'aide de asp.net 5 cours d'exécution sur .net 4.x dans dnx. Oui toujours sur windows, mais nous nous rapprochons de la croix-compatibilité de plate-forme.
Phase 3) Prendre la liste d'inventaire de l'existant BCL références et les dépendances qui ne sont pas pris en charge dans .net de base. Refactoriser existant BCL références qui ne sont pas pris en charge dans .net de base. Rappelez-vous .net de base est un sous-ensemble de la totalité du cadre de sorte que vous pourriez avoir de la chance et tout le code existant répond à ce sous-ensemble, mais si vous n'en avez pas, vous devez trouver un moyen d'obtenir la même fonctionnalité avec le sous-ensemble disponible dans .net de base.
Pour les dépendances (c'est à dire Autofac), il est très probable que vous allez avoir besoin de mettre à niveau et il peut y avoir des modifications importantes qui doivent être résolus. La cible et la fin de la phase 3 est l'application web à partir de la phase 2, mais sans toutes les dépendances qui sont incompatibles avec le noyau de la bcl. Le facteur le plus important à l'extérieur de votre contrôle d'un tiers des paquets. Si autofac ne veut pas libérer un clr de base compatible paquet puis vous êtes coincé (ou devrez envisager l'utilisation d'une alternative).
Phase 4) la fin de La phase 3 signifie que vous avez une .net de base conformes à la pile, mais vous êtes encore en ciblant le plein cadre. Maintenant, enfin, vous changez la cible à base clr (dnvm prend en charge plusieurs côte à côte runtimes = dnx). Je serais encore à déployer pour windows à ce stade, une variable à la fois. À la fin de la Phase 4, vous avez la web application en cours d'exécution .net de base hébergés dans l'environnement windows.
Phase 5). Maintenant, vous pouvez travailler sur la résolution de toutes les dépendances Windows. Au minimum look de migrer IIS, s'assurer de n'importe quel chemin la manipulation se fait dans un OS manière neutre, et il n'y a pas d'appels à windows de ressources spécifiques (comme la base de registre). Le clr de base et bcl devrait être plus mature à ce stade, si vous n'êtes pas en train de viser une cible en mouvement.
Tentant de tout faire en une seule fois est à mon avis une recette pour le désastre. Avec autant de changements parallèles, vous commencerez avec une non-solution fonctionnelle et il le restera probablement non-fonctionnelle. En la prenant dans les phases vous pouvez migration de la solution vers une croix compatible cible, tout en ayant encore fonctionnel à la sortie de chaque étape de la manière.
Je sais que c'est une vieille question, mais besoin de mettre à jour, je suppose. Parce que certains de la production de l'application de la migration asp.net mvc asp.net de base. Je rassemble quelques migration étape par étape. J'espère sa va être utile.
Oui c'est possible.
1) Créer un nouveau fichier vide ASP.NET Core application web avec le même nom que le projet précédent. Si l'espace de noms sera match.
2) Installer le
Microsoft.AspNetCore.Mvc
etMicrosoft.AspNetCore.StaticFiles
les packages NuGet. L'ASP.NET runtime est modulaire, et vous devez explicitement opter pour servir les fichiers statiques3) Ouvrez le .csproj fichier et ajouter un
PrepareForPublish
cible:Par exemple
4) Ouvrez le Démarrage.cs fichier et modifier le code pour faire correspondre les éléments suivants:
5) Ajouter un dossier Controllers.Puis ajouter MVC contrôleur de classe avec le nom HomeController.cs pour le dossier Controllers.
Pour le milieu de tester s'il vous plaît faire à la suite
Remplacer le contenu de l'Views/Home/Index.cshtml fichier avec le texte suivant:
6) la Migration de la fonctionnalité de la ASP.NET projet MVC. Nous allons avoir besoin de déplacer les éléments suivants:
7) Copie de chacune des méthodes de l'ASP.NET MVC OldController à NewController
8) Copier le
About.cshtml
,Contact.cshtml
, etIndex.cshtml
Rasoir afficher les fichiers de la ASP.NET projet MVC pour l'ASP.NET projet Core.9) lancez l'ASP.NET Core application et de tester chaque méthode.
10) Pour le contenu statique Ajouter une Charmille fichier de configuration nommé
bower.json
à la racine du projet (clic Droit sur le projet, puis les Ajouter > Nouveau Point > Bower Fichier de Configuration). Ajouter Bootstrap et jQuery pour le fichier11) Copier le favicon.fichier ico à partir de l'ancien projet MVC pour le dossier wwwroot dans le ASP.NET projet Core.
12) Copier le
_ViewStart.cshtml
fichier à partir de l'ancien ASP.NET projet MVC Vues du dossier dans le ASP.NET de Base du projet dossier de Vues. Le_ViewStart.cshtml
fichier n'a pas changé ASP.NET Core, MVC.13) Créer un points de Vue/dossier Partagé.
14) Copier le
_Layout.cshtml
fichier à partir de l'ancien ASP.NET projet MVC Vues/dossier Partagé dans le ASP.NET projet de Base de points de Vue/dossier Partagé.15) Modifier certains éléments d'époque sur rasoir vue avec des nouvelles comme suit
@Styles.Render("~/Content/css")
avec un<link>
élémentcharge
bootstrap.css
@Scripts.Render("~/bundles/modernizr")
.Commentaire de la
@Html.Partial("_LoginPartial")
de ligne (surround leligne avec
@*...*@)
.@Scripts.Render("~/bundles/jquery")
avec un<script>
de l'élément.
@Scripts.Render("~/bundles/bootstrap")
avec un<script>
élément.Je pense que vous mélangez les préoccupations ici. Votre initiale de l'énoncé du problème est que vous avez une application MVC actuellement en cours d'exécution sur Windows qui doit s'exécuter sur Linux. Ce qui en soi n'est pas un problème. Vous allez me dire que vous avez fait des recherches, et en vint à la conclusion que vous avez besoin pour installer ASP.Net 5 () pour l'utilisation de votre site sur Linux, ce qui est faux.
ASP.Net MVC projets fonctionnent très bien dans Mono.
Cela étant dit, Mono est une implémentation open source. ASP.Net 5 est un officiel de l'offre de Microsoft, mais il n'est pas directement compatible avec le code existant de la base. Il fonctionne également sur le dessus de Mono.
Vous devez évaluer vos besoins avec votre gestionnaire de projet afin de déterminer si l'utilisation de la Mono est acceptable; dans certains domaines sensibles (Soins de Santé, par exemple), l'Open Source n'est pas largement acceptée. Soyez prêt à expliquer que, bien que le Framework Mono est open source, l'exécution de votre application dans le Framework Mono ne l'est pas. En général, toutefois, les organisations qui sont à l'adoption de Linux à l'aide de plusieurs logiciels Open Source qu'ils se rendent compte, qu'ils le veuillent ou non.
Ligne de fond, vous pouvez certainement exécuter votre application MVC sur Linux sans beaucoup de changements à la base de code en utilisant le Framework Mono. Si l'aide de l'officiel de Microsoft ASP.Net 5 distribution Linux est un projet de l'exigence, vous serez réécriture d'une partie importante de votre application, de toute façon, avant même de se préoccuper de Linux vs Windows.
Aussi un autre additif à la note, ASP.Net 5 est presque entièrement Open Source de Microsoft de toute façon, pour que l'argument contre l'utilisation de la Mono peut être remis en question, même si elle sera probablement mentionné préoccupation.