У нас есть 2 службы, такие как уровень бизнес-логики как служба (WEBAPI) и DAL в качестве сервиса (WEBAPI). у нас есть Клиент, который взаимодействует с бизнес-уровнем и бизнес-уровнем, взаимодействует с уровнем данных (службой). Наш DAL является независимым от схемы, а слой DAL не содержит объект DTO (классы). DAL получает данные из считывателя данных и преобразуется в объекты Expando и возвращается в BLL, BLL-уровень конвертирует полученные объекты Expando в объекты DTO. Этот подход отлично работает, если данные малы менее 500 тыс., Но этот подход не удается из-за размера или времени и т. Д. Поэтому я думаю, что есть способ передать func <> или делегировать уровень сервиса DAL из уровня BLL, этот func <> будет оценен на уровне DAL, я передам свою логику преобразования в объект в моем анонимном делетете/func <>, а также некоторую логику. Мой вопрос в архитектурном отношении, возможно, это не лучший подход, но я хотел бы знать, есть ли способ передать делегату параметр к другой службе и выполнить этот делегировать в контексте сервиса.Как передать анонимного делегата на webapi/service
1
A
ответ
1
Вы не можете передать делегат через любой из форматов, поддерживаемых WebAPI изначально. Исполняемый код трудно отправить на другой компьютер.
Вам нужно решить это другим способом. Возможно, вы можете идентифицировать методы, используя строки (например, «FilterByGoldCustomerStatus»), и сервер интерпретирует эту строку.
Из эскиза архитектуры, который вы дали, неясно, почему вы должны иметь DAL и BLL, разделенные протоколом на основе HTTP. Может быть, ваш DAL должен быть просто DLL, который использует BLL ?! Затем вы можете легко передать делегаты и деревья выражений.
Откровенно говоря, архитектура кажется довольно сложной (много слоев, границы RPC, expandos, ...). Не может ли это сделать проще?
Смежные вопросы
- 1. Использовать «this» со ссылкой на анонимного делегата
- 2. выберите анонимного делегата с linq
- 3. Как вернуть тип из анонимного метода/делегата
- 4. Как передать список анонимного объекта?
- 5. отписки Event с помощью анонимного делегата
- 6. Закрытие анонимного делегата (или почему это работает)?
- 7. Использование анонимного делегата для возврата объекта
- 8. Возврат из анонимного делегата в C# 3.0
- 9. Как передать прототип делегата методу?
- 10. Как я могу вызвать метод async внутри анонимного делегата?
- 11. Как передать свойство в качестве делегата?
- 12. Modal Progress Dialog - Как передать делегата?
- 13. Как передать параметр методу обратного вызова делегата?
- 14. Как передать объект делегата MVC Views.?
- 15. Лучший способ передать параметры делегата
- 16. Утечка памяти при использовании анонимного делегата с грузом/порожним Event
- 17. Как передать функцию делегата C# на управляемый C++ .Dll?
- 18. C#: Не могу ли я использовать анонимного делегата в ThreadStart?
- 19. Android: передать переменные кнопки/из анонимного класса
- 20. Невозможно передать делегата в общий тип T
- 21. Не удается передать метод в качестве делегата
- 22. Возможно ли передать делегата Action в ThreadPool.QueueUserWorkItem?
- 23. Как передать метод как параметр без объявления делегата в .NET
- 24. Как сменить делегата на NSURLSession
- 25. Как передать переменную другому контроллеру представления с использованием делегата
- 26. Как передать метод в LINQ-сгенерированном объекте в качестве делегата?
- 27. Как передать имя метода для создания экземпляра делегата?
- 28. Может ссылаться на экземпляр анонимного класса?
- 29. Передайте ссылку на делегата действий?
- 30. Как передать параметр функции делегата из обратного вызова ajax
спасибо usr. мы используем Micro Services для нашего приложения, у нас есть уровень BLL и DAL, размещенный на разных серверах, то есть наши BLL и DAL являются отдельными проектами WEB API. мы собираемся с этой архитектурой, потому что мы хотели бы иметь меньшие и независимые единицы развертывания. Если в слое DAL есть изменения, я буду развертывать только службу DAL и не развертывать BLL Layer, поскольку моя DAL не зависит от схемы. Можно ли использовать RPC-вызов здесь – user145610