Breeze.Sharp не может импортировать метаданные с Breeze Server для ASP. NET Core 3 - PullRequest
0 голосов
/ 23 марта 2020

Я пытаюсь использовать Breese Sharp с Blazor Webassembly. Я смог перекомпилировать Breese Sharp для. Net Стандарт 2.0 и 2.1, который показал положительные результаты при чтении данных с сервера. Однако при попытке загрузить метаданные из скрипта я заметил, что метод MetadaStore.ImportMetadata не может загрузить метаданные. Когда я продолжил, я обнаружил, что Breeze.Sharp ожидает свойство metadataVersion и узел namingConvention из метаданных json, возвращаемых сервером breeze.

Что я вижу, так это то, что сначала изменился формат метаданных и эти свойства больше не присутствуют в сгенерированных метаданных. Но если я извлекаю метаданные, используя DataService, то метаданные загружаются в метаданные.

Мой вопрос ... Есть ли план обновления breeze sharp, чтобы соответствовать последним событиям на платформе do tnet? Пожалуйста, подумайте об этом, так как он очень хорошо сочетается с Blazor. На самом деле мой эксперимент прошел очень хорошо, ожидая загрузки метаданных, хранящихся локально, вместо того, чтобы каждый раз загружать их с сервера.

  private void DeserializeFrom(JNode jNode, bool isFromServer) {
  MetadataVersion = jNode.Get<String>("metadataVersion");
  // may be more than just a name

  var ncNode = jNode.GetJNode("namingConvention");
  if (ncNode != null) {
    var nc = Configuration.Instance.FindOrCreateNamingConvention(ncNode);
    if (nc == null) {
      OnMetadataMismatch(null, null, MetadataMismatchTypes.MissingCLRNamingConvention, ncNode.ToString());
    } else {
      // keep any preexisting ClientServerNamespaceMap info
      NamingConvention = nc.WithClientServerNamespaceMapping(this.NamingConvention.ClientServerNamespaceMap);
    }
  }

  // localQueryComparisonOptions
  jNode.GetJNodeArray("dataServices").Select(jn => new DataService(jn)).ForEach(ds => {
    if (GetDataService(ds.ServiceName) == null) {
      AddDataService(ds);
    }
  });
  jNode.GetJNodeArray("structuralTypes")
    .ForEach(jn => UpdateStructuralTypeFromJNode(jn, isFromServer));

  jNode.GetMap<String>("resourceEntityTypeMap").ForEach(kvp => {
    var stName = kvp.Value;
    if (isFromServer) {
        stName = TypeNameInfo.FromStructuralTypeName(stName).ToClient(this).StructuralTypeName;
    }
    // okIfNotFound because metadata may contain refs to types that were already excluded earlier in
    // UpdateStructuralTypeFromJNode
    var et = GetEntityType(stName, true);
    if (et != null) {
      SetResourceName(kvp.Key, et);
    }
  });
}

1 Ответ

0 голосов
/ 18 апреля 2020

Очень разочаровывает то, как Breeze Guys оставили нас в пыли, особенно с очень поздними обновлениями, а в случае, когда Breeze Sharp вообще не обновлял продукт.

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

  1. Microsoft возрождает продукт под названием Microsoft Restier. Сначала она была разработана на платформе. Net Framework, но теперь они переписывают ее для работы на. Net Core и, как ожидается, в первой половине 2020 года go RTM. Хорошая вещь об этом Microsoft Restier - это то, что ваш полный контекст сущности предоставляется как конечная точка OData, а списки сущностей отображаются без необходимости создания контроллеров в действиях. Таким образом, это уменьшает утомительную работу по написанию действия для каждого объекта, который вы хотите представить как ресурс OData, отличный от текущего случая с обычными OData и Breeze Server. Существует так много областей конфигурации и расширяемости.

  2. Microsoft перерабатывает службы данных WCF в форме подключенной службы OData. Это создает прокси так же, как службы данных WCF. Сгенерированный прокси-сервер не требует создания клиентской модели. Модель, созданная на сервере, будет достаточной ... не так, как в случае с бризом, когда вам нужно создать модель на клиенте.

  3. Это работает без проблем с Blazor (клиент и сервер) ) и снимает головную боль при работе с голыми HttpClients.

  4. Другие парни также разрабатывают версию Typeata OData Connected Service, так что все хорошо.

  5. Что касается Breeze, я думаю, что они переделают свой продукт и позволят ему работать с Blazor и помогут с генерацией прокси или поделятся той же моделью с клиентом. На самом деле, у breeze есть очень приятные особенности, особенно когда речь идет о кешировании.

Я думаю, что основная проблема с breeze заключается в том, что он был создан с JavaScript в Mind и, следовательно, был менее обеспокоен с. NET клиентов.

Надеюсь, это поможет.

...