Приложение форума ASP.NET MVC

Мне нужно написать приложение для форума для веб-сайта друга. Я хочу написать его на C # 3.0 для платформы ASP.NET MVC с базой данных SQL Server.

Итак, у меня два вопроса:

  • Должен ли я использовать Linq to SQL или Entity Framework в качестве абстракции базы данных?
  • Должен ли я использовать API членства ASP.NET или добавить таблицу Users и реализовать ее самостоятельно?

Спасибо.


person Alon Gubkin    schedule 06.11.2009    source источник


Ответы (6)


  1. В Интернете есть множество примеров использования ling с ASP.NET MVC. Но, возможно, вы можете добавить свой список NHibernate. Если вы не хотите добавлять, я предлагаю Entity Framework. Использование ORM - это плюс.
  2. Я всегда выбирал написать свой собственный уровень управления членством. Если вы такой человек (напишите свой код и будьте счастливы, когда будете вносить изменения в будущем). Напишите свой собственный уровень членства. Если вы ищете быстрое решение, ASP.NET Membership API - хороший выбор.
person Erkan BALABAN    schedule 06.11.2009

  1. Entity Framework определенно - см. Ниже.
  2. API членства в ASP.net - прост в обслуживании.

Причина: Entity Framework против LINQ to SQL

person Henry Gao    schedule 06.11.2009

1) Как насчет того и другого? Просто создайте абстракцию, и вы можете использовать ее. Я рекомендую использовать шаблон репозитория.

2) У поставщика членства есть свои сильные и слабые стороны. Для некоторых проектов это было слишком сложно для моих нужд. Однако это замечательно, если вам нужно запустить что-то в короткие сроки.

person zowens    schedule 06.11.2009
comment
Я думаю, что 1 - ненужная абстракция для чего-то вроде этого, если только вы не планируете распространять этот компонент в качестве платформы для других проектов. - person Matt Briggs; 07.11.2009
comment
Не уверен, что существует такая вещь, как ненужная абстракция при работе с базой данных. Это довольно просто сделать, и это позволяет легко обслуживать. Не знаю, почему вы не согласны ... вы не особо подчеркнули здесь ... - person zowens; 07.11.2009
comment
Больше кода не означает легкого обслуживания. Уровни абстракции - это всегда компромисс между раздуванием кода и гибкостью. Если вы находитесь в ситуации, когда в гибкости нет необходимости, все, что вам остается, - это писать, отлаживать и поддерживать дополнительный код. Вероятно, 99% того, что я когда-либо делал, никогда не меняли историю настойчивости, а если и меняли, то это происходило в процессе полного переписывания. Если действительно необходима гибкость (например, в случае распространения стартового набора, когда люди опираются на ваш материал), то имеет смысл абстрагироваться. Если нет, то это просто лишняя работа. - person Matt Briggs; 10.11.2009
comment
Дело не в абстракции. Вы не тестируете абстракции. Это довольно простые вещи. Отсутствие абстракции приводит к возникновению проблем с ремонтопригодностью. В случае с этим человеком они не совсем уверены, что они собираются использовать для настойчивости. В его случае было бы разумно использовать абстракцию. В такой ситуации сложно поддерживать плотно связанный код. Поверьте, я это сделал! - person zowens; 10.11.2009

Я не буду отвечать на первый вопрос, так как я поклонник nhibernate, потому что второй вопрос: добавление таблицы пользователей и самостоятельная реализация членства, я не думаю, что вы сможете сделать это, по крайней мере, правильным способом (многие люди пытались чтобы сделать свой собственный api членства, но они напортачили!)

person Hannoun Yassir    schedule 06.11.2009

1) Полностью зависит от того, насколько сложными будут вещи. Если вам нужен быстрый DAL, который более или менее отражает ваши таблицы в режиме 1: 1, выберите L2S (или SubSonic, если вам нужно что-то более зрелое и поддерживаемое). Если вы собираетесь использовать более n-уровневый тип, в котором ваши таблицы и модель домена совершенно разные, выберите OR / M, например Entity Framework (или NHibernate, если вы хотите что-то, что намного лучше во всех отношениях)

2) Членство в ASP.net чрезвычайно сложно, и некоторые его части плохо спроектированы. Однако это зависит от того, сколько у вас опыта в этих вещах. Если вы достаточно знаете, как предпринять шаги, чтобы избежать атак фиксации сеанса, просто попробуйте свои собственные, потому что есть вероятность, что это будет лучше, чем готовое решение. Если вы не знаете, что это такое, найдите время, чтобы изучить вариант по умолчанию.

person Matt Briggs    schedule 06.11.2009

Есть над чем подумать, SubSonic 3 - это довольно мощный инструмент для создания доступа к данным. Насколько я понимаю, он в основном превращает Linq в Sql в несколько очень полезных оболочек и делает использование Linq более интуитивным. При использовании SubSonic вы можете быстро создать довольно мощное приложение. Однако есть небольшая проблема: если вы используете общий хостинг (скажем, GoDaddy), вы столкнетесь со средней проблемой доверия. В этом случае вы всегда можете вернуться к Linq To Sql, не внося особых изменений в кодовую базу.

Что касается Aspnet_Membership. Я бы рекомендовал использовать его только из-за того количества инструментов, которые он предоставляет.

Удачи и надеюсь, что это поможет.

person Chris    schedule 06.11.2009