2009-06-13 4 views
13

Je voudrais créer une application utilisant ASP.NET MVC, qui devrait tourner sous mono 2.4 (la compilation se fera sur une boîte Windows). Est-ce que quelqu'un a de la chance avec ça? Voici ce que je l'ai déjà essayé:ASP.NET MVC 1 et 2 sur Mono 2.4 avec Fluent NHibernate

  1. ASP.NET MVC sur mono sans support de modèle de persistance, et l'utilisation nhaml comme moteur de vue
  2. S # architecture LCB, qui est un très bon AMHA-cadre, mais cela dépend trop de choses, qui ne fonctionnent pas bien sous mono (comme windsor)

La première partie a bien fonctionné, je n'ai pas rencontré de problèmes majeurs. Mais je ne pouvais pas faire fonctionner la deuxième partie. Il semble que sa dépendance sur Castle.Windsor casse tout le support mono (mais il pourrait aussi y avoir d'autres parties).

J'ai donc décidé de créer un framework alternatif, qui emprunte certaines des idées de s # arp-architecture, mais conçu pour fonctionner sous mono (et si je suis capable de le faire, je le lâcherai pour le communauté bien sûr). Le contrôleur et une partie vue fonctionne bien (pas beaucoup de magie ici cependant, ils ont été toujours travailler), mais j'ai quelques questions avant de commencer l'emploi de la part de la persistance:

  • versions Qu'est-ce que NHibernate travaillent en mono? J'ai entendu dire que ça fonctionne bien. Est-ce que la bêta 2.0.1/2.1 fonctionne sous mono?
  • Est-ce que Fluent.NHibernate et NHibernate.Linq fonctionnent sous mono? (pour ce dernier il semble qu'il a besoin de certaines dépendances qui ne sont pas disponibles en mono)
  • Existe-t-il de bonnes alternatives pour la prise en charge de la persistance de NHibernate sous mono?

Questions alternatives:

  • Y at-il des cadres qui ont mono + persistance + asp.net soutien ou déjà mvc suis-je le premier à penser à ce sujet?
  • Si vous avez déjà fait ceci: quelles sont vos opinions sur la stabilité/l'utilisabilité?

Merci pour les réponses

EDIT: mis à jour le cadre pour soutenir ASP.NET MVC 2: http://shaml.sztupy.hu/

+0

Qu'est-ce que s # aml, shaml ??? – AnthonyWJones

Répondre

4

OK. J'ai commencé un nouveau projet qui incorpore le meilleur de l'architecture S # arp avec des trucs qui fonctionnent en mono. Au lieu de T4Toolkit, il utilise un script ruby ​​pour faire le travail de génération, tout comme avec rails ou merb.

Pour utiliser installer la gemme Shaml de github:

gem install shaml 

Ensuite, créez une nouvelle application:

shaml generate app AppName 

et créer des ressources:

shaml generate resource NewRes "name:string;date:DateTime" 

S # aml architecture page d'accueil du projet : http://shaml.sztupy.hu/

Projet GitHub: http://github.com/sztupy/shaml/tree/master

+0

Juste testé: il compile sous mono – SztupY

9

J'utilise mono 2.4 pour exécuter une application asp.net mvc + service Windows. La compatibilité est très bonne. J'utilise NHibernate (2.1) FluentNhibernate, StructureMap, NBehave, Moq et open id. J'utilise NHibernate (2.1) FluentNhibernate, StructureMap, NBehave, Moq et OpenID. Il y a des bugs et des différences par rapport à Windows mais une fois que vous apprenez ce qu'ils sont, ça devient plus facile (il peut y avoir de la douleur au début!). lib et ils semblent tous fonctionner comme prévu. En ce qui concerne la stabilité, puisque j'ai corrigé les principaux bogues dans mon code, je n'ai eu aucun problème.

Facilité d'utilisation, c'est une plate-forme complètement différente donc vous devez y arriver avec un esprit ouvert et être prêt à laisser derrière les fenêtres .. la bonne nouvelle est qu'une fois que vous faites cela, les choses deviennent plus faciles. Apache est beaucoup plus agréable que IIS et la configuration et la gestion d'une boîte Linux est plus simple que Windows.

Je suis assez content d'avoir choisi le mono ..désolé, cela commence à ressembler à un lecteur PR - mais je suis vraiment heureux avec ça !!

+0

Avez-vous eu des problèmes avec AntiForgeryTokens? Pour moi, la méthode helper lève une exception NullPointerException lors de la sérialisation de quelque chose dans l'espace de noms System.Web.UI ... Btw. Actuellement, c'est le seul bug que je rencontre. – SztupY

+0

Je ne peux pas dire que je les ai essayés! Je ne prends pas beaucoup de commentaires de la part de l'utilisateur, donc je n'ai pas cherché à les utiliser du tout. –

+0

Avez-vous essayé d'utiliser NHibernate.Linq (nouveau dans 2.1) dans votre application? Il semble exiger System.Data.Serviecs et System.Data.Entity qui n'est pas en Mono. Je n'arrive pas à le faire fonctionner. Je construis mon site MVC sur Visual Studio et je le déploie sur Apache. – mbp