Что происходит, когда провайдеры типов меняются в F #? - PullRequest
7 голосов
/ 24 ноября 2011

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

  1. Демо показало, что вы по сути нажимаете '.'изучить, какие виды данных доступны для вас.После того, как вы связываетесь, скажем, с уровнем преступности в США в 2008 году, что произойдет, когда вы распространите свое приложение и схема изменится?Вы получаете ошибки типа времени выполнения?Ответственность за устранение этих ошибок лежит на разработчику?

  2. Кроме того, переносит ли это ответственность в руки поставщика типа?

    В настоящее время при загрузке .NETсборка, вы знаете, что она никогда не изменится, пока вы (вручную или через службу) явно не обновите ее.Ошибки компиляции из развивающихся типов должны быть исправлены, но вы всегда можете отложить обновление, пока не будете готовы к изменению.С провайдерами типов, вам нужно более осторожно программировать против них?

1 Ответ

8 голосов
/ 24 ноября 2011

Ответ на изменения схемы является обязанностью поставщика типов, но только во время разработки . Как только вы разрабатываете приложение, оно компилируется с использованием поставщика типов и текущей схемы во время компиляции.

Когда вы используете провайдера типов из Visual Studio, он может отслеживать изменения схемы и уведомлять IDE Visual Studio об изменении схемы. Я написал пример поставщика типов XML, который делает это, поэтому, когда вы меняете схему (в качестве примера используется файл XML), вы сразу же получаете ошибки в VS. Я сделал видео демонстрацию этого (около 19:40).

После компиляции программы поставщик типов генерирует код, который должен использоваться в скомпилированной форме (и поставщик типов не используется во время выполнения). Это означает, что если схема изменяется во время выполнения, вы ничего не можете с этим поделать (разработчик должен отреагировать). Если изменение схемы обратно совместимо (т. Е. Добавить новые столбцы в таблицу БД), то ваша программа все равно может работать нормально.

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