2008-12-03 3 views
5

Почти каждый новый Java-веб-проект использует современную инфраструктуру MVC, такую ​​как Struts или Spring MVC для веб-уровня, Spring для «Service»/бизнес-логического уровня и ORM-преобразователь, такой как Hibernate для сохранения. Что эквивалентно в .NET?.NET-эквивалент современной веб-архитектуры Java

Я предполагаю, что ASP.NET используется для веб-уровня и ADO.NET для сохранения, но что эквивалентно Spring, то есть, что используется для проводки транзакций и компонентов и т. Д.

Мне известно о Spring.NET, но меня больше интересует де-факто способ создания приложений в .NET.

ответ

4

По умолчанию используется ADO.NET/Linq-to-Sql, ASP.NET и настраиваемый уровень обслуживания, который заново изобретает колесо. Microsoft имеет Unity для автоподготовки, но я не чувствую, что инъекция зависимостей является основной темой в мире .NET.

Но если вы идете на лучшие практики, это ASP.NET MVC для пользовательского интерфейса, любая инфраструктура DI (Замок, Unity, Autofac, ...) для проводки и NHibernate для настойчивости.

1

Там нет де-факто способ доступа к данным в .NET.

Варианты включают в себя:

  • ADO.NET DataReaders *
  • ADO.NET DataTables *
  • LINQ к SQL *
  • NHibernate
  • ADO.NET Entity Framework *
  • Typed DataSets *
  • Spring.NET
  • CSLA.Net

Обратите внимание на те, у которых *, это текущее предложение от самой Microsoft. И я пропустил те, которые не помню, как заклинание.

0

ASP.NET MVC + Доступ к данным, который лучше подходит для вашей работы.

Есть много других рамок, инструменты и библиотеки, которые могут помочь, такие как замок те, Ninject, NUnit, NLog и т.д.

Но я считаю, что лучший ответ на ваш вопрос: «Это зависит».

0

На самом деле CSLA не предоставляет доступа к данным. Реализация доступа к данным остается за вами.

+0

Критики CSLA склонны пытаться сравнить CSLA с ORM. CSLA не ORM! ORM может комплимент CSLA, но CSLA не выполняет функции уровня ORM. – 2009-04-11 22:36:28

0

Обратите внимание, что ASP.NET MVC пока не RTM, но мы используем веб-формы ASP.NET годами (начиная с .NET 1.0).