NHibernate или EF, осколки или ручной осколок? - PullRequest
6 голосов
/ 24 декабря 2010

Я хотел бы знать, принимаю ли я правильное решение.Я разрабатываю приложение, которое позволяет пользователю смешивать записи базы данных из локальной базы данных (возможно, SQL CE или SQLite) и из удаленной общей базы данных (наиболее вероятно, MySQL).В идеале он должен быть гибким и совместимым с несколькими типами серверов баз данных (статически в соответствии с исходной конфигурацией, не смешивая несколько типов динамически), но это не ограничитель показа.

Код - C #, .NET 4.

Естественно, я думал о NHibernate, так как он имеет LINQ в версии 3.0, плюс для удобочитаемости кода и эффективности, а подход, основанный на модели, является более естественным, чем Entity Framework.У этого также есть Shards для смешанной части базы данных, с которой должно быть намного легче обращаться.Другой вариант - EF 4, который я бы предпочел в противном случае, поскольку он полностью поддерживается в контексте .NET и Visual Studio и имеет многообещающее будущее.

Достаточно ли зрелы Shards?Он уже давно подключен к 3 бета-версии и выглядит как мертвый проект. Развернули ли люди профессиональные приложения на основе этого расширения?Есть ли у него будущее?Или есть другой вариант?

Работает ли NHibernate 3 на Mono?Я так думаю, но фактическое подтверждение было бы здорово.Это было бы еще одним преимуществом по сравнению с EF, если веб-сервер должен быть разработан в качестве альтернативного интерфейса.

Заранее благодарен за любую информацию или обратную связь!


Обновление 1

Очевидно, что .NET 4 является проблемой, и для использования NHibernate .NET 3.5 мудрее.Кроме того, существуют явные проблемы с SQLite и SQL CE или другими частями инфраструктуры, такими как WPF.

Позволяет ли NHibernate использовать шардинги для различных типов баз данных (например, MySQL и SQLite)?

ИтакЯ начинаю верить, что EF 4 безопаснее для клиентской стороны и NHibernate, когда речь идет о возможном интерфейсе ASP.NET.

1 Ответ

0 голосов
/ 24 марта 2011

Sharding предназначен (для известной схемы) перенаправления вызовов на известный сервер, то есть имена, начинающиеся с a, b, c, d, на сервер a и e, f, g, h на сервер b и т. Д.

Я не слышал об использовании кросс-сервера базы данных. Я сомневаюсь, что это работает.

У шардинга есть место, но я могу представить, что могут возникать периодические проблемы, которые трудно решить, если разные шарды имеют разные профили производительности.

Эта ссылка указывает на возможность запуска NH3 под моно ... https://nhibernate.jira.com/browse/NH-2312

Удаленная общая база данных. Я бы хотел абстрагироваться от известного API, используя WCF или REST.

...