Есть данные IoT коллекция проект, а также данные IoT обработка проект. Они разрабатываются и поддерживаются отдельно. Однако было бы полезно разделить общие зерна между ними в силосе Орлеана (или силовом кластере). Как бы архитектура выглядела в самодостаточном сценарии - монолитный силос со ссылками на оба проекта для связи внутри силоса или двух отдельных силосов, взаимодействующих снаружи? Если в одном силосе, может ли силос динамически обнаруживать зерно .dll?Orleans Architecture Design - Силосные проекты объединены или раздельны?
ответ
Там, вероятно, будет лучше ответы, но до тех пор:
Там не некоторые компромиссы. По производительности, лучше распределить все ваши зерна (всех сервисов) по всему кластеру. Таким образом, каждое зерно связывается с другими зернами через инфраструктуру Орлеана (я думаю, это двоичные сериализованные сообщения через tcp), без каких-либо дополнительных накладных расходов. Но когда у каждого сервиса (или проекта) есть свой собственный силос, вам может понадобиться шлюз - HTTP-прослушиватель, возможно, в дополнение к Орлеану. Однако в первом примере ваши услуги становятся связанными. Вы не можете развернуть новую версию службы, если есть силос, на котором установлена более старая версия (в противном случае может быть 2 зерна одного и того же объекта). Но если вы отключите этот силос, вы отключите остальные сервисы. Это очень нетривиальная проблема.
Если в одном бункере, может силос динамически обнаруживать зерна .dll-х
Не уверен, что вы имеете в виду. Когда бункер загружается, он рекурсивно ищет DLL внутри своей папки, и если он находит зерно, загружает их.
Спасибо - я думаю, это то, что я ищу. Ссылки на реализации зерен и интерфейсы в образцовых проектах бросали меня на этот. Так что я предполагаю, что они там, чтобы получить .dlls в каталог bin? –
В ранней версии примеров проектов они использовали сценарий post-build в проекте ** grains **, чтобы скопировать все dll из каталога binins в каталог ** silo **. Таким образом, проект силоса был полностью отделен от проекта зерна. Я не знаю о более новых версиях примеров проектов, но я думаю, что имеет смысл использовать ссылку на проект вместо сценария пост-сборки. –
- 1. AWS Scalable Architecture Design
- 2. Service Layer Architecture Design Confusion
- 3. Вопрос о Factory Design Architecture
- 4. Android Application Architecture - Design Pattern
- 5. Android Design/Architecture: Static Reference vs Service
- 6. Домен Driven Design vs Model Driven Architecture
- 7. Design Pattern: Modular Command Architecture (Workflow?)
- 8. Orleans StatelessWorkers
- 9. Может ли DirectX 3D Meshes быть объединены или объединены вместе
- 10. Akka.net vs Orleans performance
- 11. Laravel push или pull architecture
- 12. Orleans cluster communication
- 13. Поставщик потока Orleans EventHub
- 14. Log4Net and Orleans
- 15. Django form error architecture architecture
- 16. Обновления на лету кода orleans
- 17. Mysql design design advise
- 18. Каталоги или проекты.
- 19. Orleans Specify SqlServer for Liveness
- 20. MSR Orleans, как работает PlacementStrategy?
- 21. nhibernate architecture
- 22. Saas Architecture
- 23. Laravel 5 Api & Website Architecture
- 24. Ruby model find или create architecture
- 25. MVC или Webform Architecture для нового сайта
- 26. Quartz architecture Q - больше или меньше заданий
- 27. Symfony architecture
- 28. Service Oriented Architecture vs Resource Oriented Architecture
- 29. IoC Architecture
- 30. Получение исключений при запуске приложения basic orleans
Обратите внимание, что если вы идете с монолитным силосом, становится нецелесообразным развертывать новые версии одного из проектов. Проекты, которые должны были быть развязаны, но поскольку они работают в одном и том же бункере, вы не можете развернуть новую версию одного проекта без использования другого (иначе вы можете получить два зерна, ссылающихся на одну и ту же сущность) –
Спасибо shay , это имеет смысл и для меня. Я все еще пытаюсь понять, как работают силосные хосты, но развязанный, кажется, правильный путь для всех обычных причин. –
check out feature # 685 - https://github.com/dotnet/orleans/issues/685, он сделает все проще :) –