2011-11-23 2 views
7

После просмотра Channel 9's video на поставщиках типов F # мне интересно узнать о изменениях схемы данных. Дон немного коснулся этого в конце, но я ищу подробности.Что происходит, когда поставщики типов меняются в F #?

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

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

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

ответ

8

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

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

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

+2

Как говорит Томас, основным примечательным битом является изменение схемы во время разработки (например, для «очень динамичных» данных, таких как локальные файлы XML или электронные таблицы, которые вы можете редактировать локально при программировании против них). Проблемы с изменениями схемы для развернутых приложений - это те же проблемы, с которыми сталкиваются традиционные приложения, где обычно вы выполняете (1) обратные совместимые изменения, (2) сохраняете старую базу данных/схему, а также публикуете новую (старые клиенты приложения по-прежнему говорят, что старые, новые разговаривают с новыми, у которых могут быть более богатые/разные данные) или (3) развертывание новых клиентских приложений при изменении схемы. – Brian

Смежные вопросы