Имеет ли смысл использовать F # для реализации BLL? - PullRequest
4 голосов
/ 01 октября 2010

Как вы думаете, было бы неплохо использовать F # для реализации Business Logic Layer?Я собираюсь использовать Entity Framework в качестве «преобразователя данных» и реализовать логику пользовательского интерфейса с использованием C #.

Любая мысль приветствуется.Буду признателен за любую помощь!

Спасибо.

PS Какова цель этого?Я новичок в F # и хотел бы поэкспериментировать с этим языком (технология).Я должен реализовать относительно небольшой проект, и было бы неплохо получить опыт F #.

Ответы [ 4 ]

5 голосов
/ 01 октября 2010

Реализация "фактической обработки данных" в F #, возможно, является наиболее распространенным в настоящее время использованием F #, поэтому реализация бизнес-логики в F # кажется хорошим выбором.

Я не думаю, что вы сможете (легко) использовать Entity Framework непосредственно из F #, поэтому вам нужно будет использовать C # для генерации модели данных и предоставления соответствующих данных для F #. Если вы хотите использовать LINQ to SQL, вы можете просто сгенерировать отображение в C # и написать запросы в F # с помощью PowerPack (как предполагает Митя).

Возможно, проще всего было бы иметь три проекта:

  • Уровень доступа к данным в C #, который просто использует Entity Framework и предоставляет важные данные (используя тип IEnumerable, который можно легко использовать из F #).

  • Бизнес-уровень в F #, который использует данные, выполняет "фактическую обработку" и предоставляет несколько типов, которые можно использовать из C #. Если вы объявите класс в F # , он будет скомпилирован, как и любой обычный класс .NET, так что вы можете легко использовать его из C #. Вам просто нужно быть осторожным, чтобы не использовать специфические функции F # в общедоступном интерфейсе. Парой предложений будет использование делегатов (вместо функций), типов классов и IEnumerable (называемых seq в F #) вместо функциональных списков.

  • Пользовательский интерфейс слой в C #, который вызывает типы, объявленные в F #. Если вы следуете простым правилам, приведенным выше, то код C # может легко вызывать типы F #.

В качестве примечания - хотя F # не поддерживает дизайнеров, он может быть весьма полезен для программирования пользовательского интерфейса (см., Например, эту статью или мой доклад о Silverlight в F # ). Одна вещь, которую вы можете сделать, - это создать свой пользовательский интерфейс в проекте библиотеки C #, пометить все как общедоступное и затем ссылаться на него из проекта F #, который фактически контролирует взаимодействие с пользователем. Однако это немного сложнее, поэтому я думаю, что начинать с бизнес-уровня - это хорошая идея.

4 голосов
/ 01 октября 2010

Я могу говорить только за себя, но после преодоления начальной кривой обучения F # я нахожу, что:

1) Мой код F # более лаконичен, чем C # или C ++.

2) F # более удобен в обслуживании.

3) Я могу визуализировать решения проблем, более понятные в F #.

4) Шаблоны, которые я придумаю в F #, легче использовать в новых программах.

Так что я определенно рассмотрю F # для многих будущих задач кодирования, включая BLL.

-Neil

3 голосов
/ 01 октября 2010

Нет причин, по которым вы не должны этого делать.

Я бы просто сохранил логику пользовательского интерфейса в C #, поскольку VS пока еще не имеет очень хорошей поддержки дизайна F # UI.

2 голосов
/ 01 октября 2010

Это совсем не плохая идея.Если вы делаете Linq поверх сущностей, вам может понадобиться F # PowerPack - http://fsharppowerpack.codeplex.com/

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...