2015-04-17 5 views
1

Недавно я познакомился с проектом Орлеана и в настоящее время занимаюсь чтением и доказательством концепций.Как создать или создать Зерновой завод/прокси?

В дополнение к тому, что почти все статьи и руководства, с которыми я столкнулся, не работают так, как сейчас (в основном из-за изменений API), они также требуют установки Orleans SDK; который содержит библиотеки, документацию, шаблоны проектов и т. д.

Я решил сделать это «трудным путем» и использовать стандартные шаблоны проектов (консольное приложение и библиотеку классов) и NuGet; с некоторой помощью из шаблона кода из шаблонов проекта Orleans (OrleansHostWrapper).

Есть одна вещь, которую я не мог понять, как это сделать; который генерирует фабрику/прокси Grain. Когда я бегу силос я получаю сообщение:

Не можете найти генерируемый тип фабрики для интерфейса

кто может помочь в этом? Есть ли другой способ сгенерировать завод без необходимости установки Orleans SDK?

+0

Зачем идти тяжелым путем? Шаблоны в Visual Studio экономят много времени/головы. –

+0

Потому что я новичок в Орлеане. Сначала я узнаю, как это работает, и почему он делает то, что он делает, а затем использует ярлыки :) – TheBlueSky

ответ

0

Я задал вопрос в Orleans Codeplex site, и получил этот ответ от Сергей Быков:

Microsoft.Orleans.Templates.Interfaces для Grain интерфейса проектов и Microsoft.Orleans.Templates.Grains для Grain проектов внедрений позволяют строить эти проекты не SDK установлен.

+0

Да, шаблон проекта интерфейса зерен или интерфейс зерен. В пакете NuGet будет добавлен '' element к .csproj, и это вызовет генерацию кода во время сборки, которая генерирует фабрики на основе интерфейсов. Это означает, что вам сначала нужно построить проекты интерфейса зерен, чтобы использовать сгенерированные фабрики в зерновых проектах. – lmagyar

1

Самый простой способ - добавить пакет nuget Microsoft.Orleans.Templates.Grains или Microsoft.Orleans.Templates.Interfaces к вашему проекту, в зависимости от вашего типа проекта.

https://www.nuget.org/packages/Microsoft.Orleans.Templates.Grains/ https://www.nuget.org/packages/Microsoft.Orleans.Templates.Interfaces/

это добавить codegen.cs в свойствах которых генерируется код.

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

1

Я не понимаю, если это все еще актуально для вас, но статический метод для GetGrain теперь устарел.

Вам нужно будет сделать что-то вроде этого:

var grainFactory = GrainClient.GrainFactory; 
var grain = grainFactory.GetGrain<MyGrain>(0); 

Имейте в виду, что «MyGRAIN» теперь будет наследовать интерфейс «IGrainWithIntegerKey» от Orleans.dll.

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

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