powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / AspNet Core. Как заинжектить текущий контроллер в класс-сервис ?
177 сообщений из 177, показаны все 8 страниц
AspNet Core. Как заинжектить текущий контроллер в класс-сервис ?
    #39783028
WaspNewCore
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Суть такая. Стараюсь держать логику в отдельных классах-сервисах. Однако пока не знаю как реализовать одну задумку.

В этом сервисе есть такой метод:
Код: c#
1.
Task<ActionResult<MyResult>>


Вариант с Task<MyResult> я отбросил, т.к. такой формат не позволяет сервису возвращать различные статусы, типа NotFound - придется делать какие-то оберточные классы имитирующие данный класс, а в контроллере их разворачивать в настоящий NotFound:
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
public class MyController : MyBaseController
{
  public async Task<ActionResult<MyResult>> GetData([FromBody] MyParameters parameters)
  {
       var result = _myService.Getdata ();
	   
	   if (result is MyNotFound)
	   {	     	 
	     return NotFound (... перенести свойства из MyNotFound)
	   }
  }
}



Думаю так слишком неудобно. Поэтому решил, что сервис должен сразу сам возвращать ActionResult<MyResult>.
Однако возник следующий вопрос. В контроллере имеются виртуальные методы
Код: c#
1.
2.
public virtual NotFoundObjectResult NotFound(object value);
public virtual NotFoundResult NotFound();



Вот их мне бы и хотелось задействовать в сервисе. Но как ? Неужели придется в каждом методе предусматривать параметр для передачи ссылки на контроллер ?
Код: c#
1.
2.
3.
4.
5.
6.
7.
public class MyService 
{
   public async Task<ActionResult<MyResult>> GetData(ControllerBase controller, MyParameters parameters)
   {
     return controller.NotFound ();
   }   
}


Не красиво получается.

Можно ли в класс-сервис заинжектить контроллер, который обрабатывает текущий запрос, чтобы сделать код сервиса чище ?
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
public class MyService 
{
   public MyService (ControllerBase controller)   << как заинжектить сюда ?
   {
     _controller = controller;
   }

   public async Task<ActionResult<MyResult>> GetData(MyParameters parameters)
   {
     return _controller.NotFound ();
   }   
}
...
Рейтинг: 0 / 0
AspNet Core. Как заинжектить текущий контроллер в класс-сервис ?
    #39783034
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Тащить контроллер в сервис - спагетти, забудь.
ActionResult возвращать тоже не очень хорошо.

Не забывай, контроллер ты можешь унаследовать от своего базового контроллера и делай там какие хочешь универсальные хелперы, которые обрабатывают результат, возвращаемый сервисом
...
Рейтинг: 0 / 0
AspNet Core. Как заинжектить текущий контроллер в класс-сервис ?
    #39783036
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
WaspNewCore
Код: c#
1.
return controller.NotFound ();


кроме того, смотри
Код: c#
1.
2.
3.
4.
    public virtual NotFoundResult NotFound()
    {
      return new NotFoundResult();
    }


Код: c#
1.
2.
3.
4.
5.
6.
7.
  public class NotFoundResult : StatusCodeResult
  {
    public NotFoundResult()
      : base(404)
    {
    }
  }


Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
  public class StatusCodeResult : ActionResult
  {
    public StatusCodeResult(int statusCode)
    {
      this.StatusCode = statusCode;
    }

    public int StatusCode { get; }

    public override void ExecuteResult(ActionContext context)
    {
      if (context == null)
        throw new ArgumentNullException(nameof (context));
      context.HttpContext.RequestServices.GetRequiredService<ILoggerFactory>().CreateLogger<StatusCodeResult>().HttpStatusCodeResultExecuting(this.StatusCode);
      context.HttpContext.Response.StatusCode = this.StatusCode;
    }
  }



И вот ради этого ты хочешь нагородить херни с протаскиванием контроллера?
...
Рейтинг: 0 / 0
AspNet Core. Как заинжектить текущий контроллер в класс-сервис ?
    #39783045
WaspNewCore
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Так как вы предлагаете решить проблему ?

Вы все таки склоняетесь к этой не-менее-спагетти-хрени ?
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
public class MyController : MyBaseController
{
  public async Task<ActionResult<MyResult>> GetData([FromBody] MyParameters parameters)
  {
       var result = _myService.Getdata ();
	   
	   if (result is MyNotFound)
	   {	     	 
	     return NotFound (... перенести свойства из MyNotFound)
	   }
  }
}



Можно конечно в базовом контроллере сделать методы-хэлперы, куда и перенести код:
Код: c#
1.
2.
3.
4.
	   if (result is MyNotFound)
	   {	     	 
	     return NotFound (... перенести свойства из MyNotFound)
	   }



Но что-то мне так не нравится. Придется создать кучу всех этих прослоечных классов:
Код: c#
1.
2.
public virtual My_OkResult Ok();
public virtual My_NoContentResult NoContent();


много тоже левого кода выйдет.


Я уж лучше буду передавать в каждый метод сервиса параметр-контроллер. Просто чуть чуть не красиво. Но почище, чем создание десятка прослоечных классов и распарсивание их в контроллере.

Я бы вообще может попробовал сам создавать эти NotFoundObjectResult и NotFoundResult. Но, полагаю, это не возможно. Скорее всего контроллер туда подставляет много чего, например заголовки запроса и прочее. Поэтому без контроллера явно не обойтись.

Самое лучшее, конечно, тут было бы получить доступ к текущему контроллеру через DI. Или может если бы к ControllerBase был бы статически метод Current...
...
Рейтинг: 0 / 0
AspNet Core. Как заинжектить текущий контроллер в класс-сервис ?
    #39783046
WaspNewCore
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Shocker.ProИ вот ради этого ты хочешь нагородить херни с протаскиванием контроллера?

Мне думалось, что там все гораздо сложнее. Как минимум должны вставляться какие-то флаги от запроса. Поэтому я хочу обязательно задействовать методы текущего контроллера.
...
Рейтинг: 0 / 0
AspNet Core. Как заинжектить текущий контроллер в класс-сервис ?
    #39783047
WaspNewCore
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ну а чего такого страшного в протаскивании контроллера ?

Возьмите вон методы расширения какого нибудь Linq. Там вон протаскивается IEnumerable везде и ничего :) Мне придется протащить контроллер в параметр, но вот думаю, может это меньшее из зол.
...
Рейтинг: 0 / 0
AspNet Core. Как заинжектить текущий контроллер в класс-сервис ?
    #39783048
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
WaspNewCoreВариант с Task<MyResult> я отбросил, т.к. такой формат не позволяет сервису возвращать различные статусы, типа NotFound - придется делать какие-то оберточные классы имитирующие данный класс, а в контроллере их разворачивать в настоящий NotFound:На самом деле нормальный вариант - возвращай Task<ServiceResult<MyResult>>. В оболочке ServiceResult можешь себе наделать универсальных полей, типа сообщений об ошибках, статусов всяких и т.п., а на стороне контроллера спокойно анализировать результат каким-то универсальным методом.
...
Рейтинг: 0 / 0
AspNet Core. Как заинжектить текущий контроллер в класс-сервис ?
    #39783052
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
WaspNewCoreСкорее всего контроллер туда подставляет много чего, например заголовки запроса и прочее. Поэтому без контроллера явно не обойтись.Я привел тебе код контроллера. Там НИЧЕГО нет, это просто медод-хелпер. Никаких флагов, ничего.

WaspNewCoreМожно конечно в базовом контроллере сделать методы-хэлперы, куда и перенести код:Это нормально


WaspNewCoreНо что-то мне так не нравится. Придется создать кучу всех этих прослоечных классов:Зачем? Все это NotFound и NoContent - всего лишь статусы. Не нужно создавать никаких классов, или можно использовать готовые.


WaspNewCoreну а чего такого страшного в протаскивании контроллера ?Если не понимаешь, что такое спагетти, тогда дерзай. Через годик поймешь на собственных шишках.
...
Рейтинг: 0 / 0
AspNet Core. Как заинжектить текущий контроллер в класс-сервис ?
    #39783059
WaspNewCore
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
эм. ну тут явно я не вижу спагетти-кода.

Контроллер вызывает сервис и передает ссылку на себя, но не для того, чтобы сервис работал как-то с контроллером. Вот если бы он как-то активно его использовал, может вызывал даже какие-то его методы, и потом возвращал все это назад самому же контрллеру, то да, это был бы спагетти код.

Но тут контроллер будет передаваться исключительно для того, чтобы задействовать его хэлпер-методы, для создания различных видов результата. Я думаю это не спагетти :)
...
Рейтинг: 0 / 0
AspNet Core. Как заинжектить текущий контроллер в класс-сервис ?
    #39783060
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
WaspNewCoreВы все таки склоняетесь к этой не-менее-спагетти-хрени ?тут нет никакого спагетти, контроллер зависит от сервиса, сервис не зависит от контроллера.

Спагетти - это когда у тебя всё зависит от всего

В идеале слой сервиса не должен зависеть от ASP.NET вообще и находиться в другой сборке
...
Рейтинг: 0 / 0
AspNet Core. Как заинжектить текущий контроллер в класс-сервис ?
    #39783061
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
WaspNewCoreэм. ну тут явно я не вижу спагетти-кода.

Контроллер вызывает сервис и передает ссылку на себяВот именно это и есть спагетти. Взаимная ссылка двух классов друг на друга - один из смертных грехов ))
...
Рейтинг: 0 / 0
AspNet Core. Как заинжектить текущий контроллер в класс-сервис ?
    #39783063
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
WaspNewCoreВозьмите вон методы расширения какого нибудь Linq. Там вон протаскивается IEnumerable везде и ничего :)Linq-метод зависит от IEnumerable, IEnumerable не зависит от Linq, понимаешь???
...
Рейтинг: 0 / 0
AspNet Core. Как заинжектить текущий контроллер в класс-сервис ?
    #39783064
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
WaspNewCoreЯ уж лучше буду передавать в каждый метод сервиса параметр-контроллер
...
Рейтинг: 0 / 0
AspNet Core. Как заинжектить текущий контроллер в класс-сервис ?
    #39783068
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.ProВ идеале слой сервиса не должен зависеть от ASP.NET вообще и находиться в другой сборке+1
ТС, сервис это бизнес логика и чисто шарп код.
А контроллер может быть в библиотеках вебСервера Х. Или Y.
...
Рейтинг: 0 / 0
AspNet Core. Как заинжектить текущий контроллер в класс-сервис ?
    #39783082
WaspNewCore
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Если подумать, то может даже и нет тут спагетти. Какие тут у нас зависимости по сути ?

MyController -> BaseController
MyService -> BaseController

Обе сущности зависят от BaseController а не друг от друга. Сервис будет использовать не методы MyController, а методы BaseController. Тут нет цикличных ссылок. Я думаю это принципиально.
К тому же, этот контроллер будет использоваться совсем немножно. Просто как маленький хэлпер :)

А предложенное решение с ServiceResult мне, все же, не нравится. Нужно будет многое учесть и накодить. Боюсь может получится слишком переусложненно. И все это можно решить простой передачей ссылки на базовый контроллер.

Я бы, все же, предпочел инжектить контроллер в сервис. Получилось бы аспектное программирование некое. Но раз такого нет, то предпочту передавать ссылку на контроллер.
...
Рейтинг: 0 / 0
AspNet Core. Как заинжектить текущий контроллер в класс-сервис ?
    #39783087
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
WaspNewCoreНо раз такого нет, то предпочту передавать ссылку на контроллер.Упорный. Ну ладно, своих шишек набить полезно.
...
Рейтинг: 0 / 0
AspNet Core. Как заинжектить текущий контроллер в класс-сервис ?
    #39783097
WaspNewCore
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Зато ваше решение попахивает огромным дублированием кода :)
https://refactoring.guru/ru/smells/duplicate-code
...
Рейтинг: 0 / 0
AspNet Core. Как заинжектить текущий контроллер в класс-сервис ?
    #39783105
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дублирования никакого не вижу. Будут вызываться те же методы контроллера, только не сервисом, а самим контроллером. Я же не предлагаю повторять методы контроллера в сервисе - это как раз вредно, потому что методы работают в контексте запроса/ответа/контроллера и т.п., а сервис, как я сказал выше, в идеале не должен зависеть вообще от ASP.NET.

Лень на начальном этапе написать десяток дополнительных строчек впоследствии оборачивается тысячами лишних строк или неделями рефакторинга.
...
Рейтинг: 0 / 0
AspNet Core. Как заинжектить текущий контроллер в класс-сервис ?
    #39783115
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
WaspNewCoreЗато ваше решение попахивает огромным дублированием кода :)
https://refactoring.guru/ru/smells/duplicate-code показал бы. Или лень?
...
Рейтинг: 0 / 0
AspNet Core. Как заинжектить текущий контроллер в класс-сервис ?
    #39783119
WaspNewCore
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Petro123,

что показал ?
...
Рейтинг: 0 / 0
AspNet Core. Как заинжектить текущий контроллер в класс-сервис ?
    #39783121
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
WaspNewCorePetro123,

что показал ?дублирование на 2 страницы
...
Рейтинг: 0 / 0
AspNet Core. Как заинжектить текущий контроллер в класс-сервис ?
    #39783126
WaspNewCore
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Petro123,

ServiceResult, в моей интерпретации приведенной изначально, это некий прослоечный класс. Я думал сделать их кучу, а Shocker.Pro
предлагает просто объединить в один класс, но с кучей свойств, как я понимаю, собранных со всех классов типа NotFoundResult, OkResult. Затем возвращать их из сервиса в контроллер, где некий метод будет анализировать этот объект и, в зависимости от заполнения свойств, создавать уже реальные Result'ы.

Ну вот все это какое-то завуализованное и усложненное дублирование получается. Т.к. появится логика по парсингу ServiceResult с последующим созданием соответствующих result'ов. Уж лучше тогда как я предлагал, насоздавать MyNotFoundResult, MyOkResult и просто их преобразовывать в классы из Aspnet.


Мне не нравится это решение. Я лучше при своем останусь.
...
Рейтинг: 0 / 0
AspNet Core. Как заинжектить текущий контроллер в класс-сервис ?
    #39783131
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
WaspNewCore,
Можно и так:
// добавляем контекст MobileContext в качестве сервиса в приложение
services.AddDbContext<MobileContext>(options =>
options.UseSqlServer(connection));
...
Рейтинг: 0 / 0
AspNet Core. Как заинжектить текущий контроллер в класс-сервис ?
    #39783133
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
WaspNewCore,
И будет EF контроллере и сервисный слой не нужен))
...
Рейтинг: 0 / 0
AspNet Core. Как заинжектить текущий контроллер в класс-сервис ?
    #39783249
handmadeFromRu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ТС ты путаешь причинно следственные связи, дублирования нет.
...
Рейтинг: 0 / 0
AspNet Core. Как заинжектить текущий контроллер в класс-сервис ?
    #39783280
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
AspNet Core. Как заинжектить текущий контроллер в класс-сервис ?
    #39783781
Дмитрий Мух
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
WaspNewCorePetro123,

ServiceResult, в моей интерпретации приведенной изначально, это некий прослоечный класс. Я думал сделать их кучу, а Shocker.Pro
предлагает просто объединить в один класс, но с кучей свойств, как я понимаю, собранных со всех классов типа NotFoundResult, OkResult. Затем возвращать их из сервиса в контроллер, где некий метод будет анализировать этот объект и, в зависимости от заполнения свойств, создавать уже реальные Result'ы.

Ну вот все это какое-то завуализованное и усложненное дублирование получается. Т.к. появится логика по парсингу ServiceResult с последующим созданием соответствующих result'ов. Уж лучше тогда как я предлагал, насоздавать MyNotFoundResult, MyOkResult и просто их преобразовывать в классы из Aspnet.


Мне не нравится это решение. Я лучше при своем останусь.Многие пользуются (различные широкоиспользуемые библиотеки), а ему видите-ли не нравится.

Ну не нравится - делай свой велосипед, отговаривать что-ли теперь? :)

А так-то всё просто:
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
using System;
using Status = OperationStatus;

/// <summary>
/// Represents a generic type for any operation's result
/// </summary>
public class OperationResult<TValue>
{
    public OperationResult(Exception exception)
        : this(Status.InternalError)
    {
        this.Exception = exception;
    }

    public OperationResult(Status status, string message)
        : this(status)
    {
        this.Message = message;
    }

    public OperationResult(Status status, TValue value = default(TValue))
    {
        this.Status = status;
        this.Success = status == Status.Success;
        this.Value = value;
    }

    /// <summary>
    /// If Success is false and an exception has been caught internally, this field will contain the exception.
    /// </summary>
    public Exception Exception { get; private set; }

    /// <summary>
    /// Returns message if the operation was not successful.
    /// </summary>
    public string Message { get; private set; }

    /// <summary>
    /// The status for the operation.
    /// </summary>
    public Status Status { get; private set; }

    /// <summary>
    /// Returns true if the operation was successful.
    /// </summary>
    /// <remarks>If Success is false, use the Exception property to help determine the reason.</remarks>
    public bool Success { get; private set; }

    /// <summary>
    /// The result obtained during the operation.
    /// </summary>
    public TValue Value { get; private set; }
}


Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
/// <summary>
/// Represents a status of an operation
/// </summary>
public enum OperationStatus
{
    /// <summary>
    /// Indicates that the status has not been set.
    /// </summary>
    Undefined = 0,

    /// <summary>
    /// The operation was successful.
    /// </summary>
    Success,

    /// <summary>
    /// The requested resource does not exist.
    /// </summary>
    NotFound,

    /// <summary>
    /// The operation is not allowed.
    /// </summary>
    NotAllowed,

    /// <summary>
    /// The operation is not supported at the moment.
    /// </summary>
    NotSupported,

    /// <summary>
    /// The operation is not valid (for example it contains an inconsistent data).
    /// </summary>
    NotValid,

    /// <summary>
    /// An internal error has occured.
    /// </summary>
    InternalError
}


Это разве куча свойств?
...
Рейтинг: 0 / 0
AspNet Core. Как заинжектить текущий контроллер в класс-сервис ?
    #39783782
Дмитрий Мух
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Простейшая конвертация:
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
private static ActionResult ToActionResult<TValue>(IOperationResult<TValue> source, Func<TValue, ActionResult> onSuccess)
{
    switch (source.Status)
    {
        case OperationStatus.InternalError:
            var exception = source.Exception;
            return exception == null
                ? new HttpStatusCodeResult(HttpStatusCode.InternalServerError)
                : new HttpStatusCodeResult(HttpStatusCode.InternalServerError, exception.Message);
        case OperationStatus.NotAllowed:
            return new HttpStatusCodeResult(HttpStatusCode.Forbidden, source.Message);
        case OperationStatus.NotSupported:
        case OperationStatus.NotValid:
            return new HttpStatusCodeResult(HttpStatusCode.MethodNotAllowed, source.Message);
        case OperationStatus.NotFound:
            return new HttpStatusCodeResult(HttpStatusCode.NotFound, source.Message);
        case OperationStatus.Success:
            return onSuccess(source.Value);
    }

    throw new NotImplementedException($"Conversion is not implemented for the following OperationStatus value: {source.Status}");
}
...
Рейтинг: 0 / 0
AspNet Core. Как заинжектить текущий контроллер в класс-сервис ?
    #39783786
Дмитрий Мух
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
И метод контроллера превращается в две строки:
Код: c#
1.
2.
3.
4.
5.
6.
public async Task<ActionResult<MyResult>> GetData([FromBody] MyParameters parameters)
{
    var result = await _myService.GetDataAsync(parameters);
	   
    return ToActionResult(result, value => this.Json(value));
}
...
Рейтинг: 0 / 0
AspNet Core. Как заинжектить текущий контроллер в класс-сервис ?
    #39783805
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дмитрий Мух,

Масло масляное. В таком виде нет никаких причин не таскать через все слои asp.net-овские классы ActionResult, что уже наводит на определённые не весёлые мысли.
...
Рейтинг: 0 / 0
AspNet Core. Как заинжектить текущий контроллер в класс-сервис ?
    #39783806
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
WaspNewCoreВариант с Task<MyResult> я отбросил, т.к. такой формат не позволяет сервису возвращать различные статусы

В вашем выбранном подходе УЖЕ

WaspNewCoreНе красиво получается.

Отсюда любые попытки решить ЭТО выглядит как поиск наилучшего способа поедания гнилого фрукта -- факт прогнилости никакой способ не изменит.

Возвращать из внутренней логики статусы, которые нужны только для взаимодействия с клиентом по определённому протоколу, это уже шит, зашквар и... выбирайте абсолютно любой способ, так как всё равно получится фигня. Работать будет и ладно. Запушьте, залейте на прод и спите себе спокойно, одним г-кодом больше, какая разница :)
...
Рейтинг: 0 / 0
AspNet Core. Как заинжектить текущий контроллер в класс-сервис ?
    #39783819
Дмитрий Мух
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttДмитрий Мух,

Масло масляное. В таком виде нет никаких причин не таскать через все слои asp.net-овские классы ActionResult, что уже наводит на определённые не весёлые мысли.
Какие такие asp.net-овские классы? Это не попытка таскать ActionResult.

_myService же слой некой бизнес логики, где есть некие бизнес-операции, чаще всего успешные, но не всегда.
Это классы бизнес-логики, доменной модели.
Использоваться могут не только в asp.net.

Вообще давайте всё в контроллер запихнём, следуя твоим рассуждениям. В нём же уже есть метод GetData.
Зачем выделять какой-то сервис ещё с одним методом GetData? Масло масляное
...
Рейтинг: 0 / 0
AspNet Core. Как заинжектить текущий контроллер в класс-сервис ?
    #39783822
Дмитрий Мух
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Кстати легко заметить, что
Код: c#
1.
private static ActionResult ToActionResult<TValue>(IOperationResult<TValue> source, Func<TValue, ActionResult> onSuccess)


просто оформляется как расширение
Код: c#
1.
internal static ActionResult ToActionResult<TValue>(this IOperationResult<TValue> source, Func<TValue, ActionResult> onSuccess)


Легко покрывается тестами. И мы получам простую чепочку вызовов.
Код: c#
1.
2.
3.
4.
public async Task<ActionResult<MyResult>> GetData([FromBody] MyParameters parameters)
{
    return await _myService.GetDataAsync(parameters).ToActionResult(this.Json);
}
...
Рейтинг: 0 / 0
AspNet Core. Как заинжектить текущий контроллер в класс-сервис ?
    #39783841
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мне одному кажется, что в шарпе модно все топики сводить к волшебному Result или MyResult?
В прошлый раз 17 страниц обсуждали))).
Или без Result писать не умеем?
...
Рейтинг: 0 / 0
AspNet Core. Как заинжектить текущий контроллер в класс-сервис ?
    #39783856
Дмитрий Мух
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123,

да, функциональный подход в C# всё больше входит в моду...
передаёшь параметры в метод и гарантированно получаешь результат определённого типа
ни null, ни исключение, а Result

чистые функции, читсый код без ветвлений и трай-кетчей, тестируемый, читабельный
...
Рейтинг: 0 / 0
AspNet Core. Как заинжектить текущий контроллер в класс-сервис ?
    #39783873
PinkCat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дмитрий Мух,

передаёшь параметры в метод и гарантированно получаешь результат определённого типа
-----
Все гораздо хуже.
Наблюдается даже отход от ООП.

Я тут как-то оценил затраты на создание полной модели данных для производства вполне определенного продукта.
По результатам получилось около 2-х лет.
Потом выкинул нафиг все ООП и нарисовал за неделю нужный результат элементарно получая нужные данные по месту/времени.
Работало не эффективно, оптимизировать там разумеется ничего невозможно, но одна неделя вс два года...
...
Рейтинг: 0 / 0
AspNet Core. Как заинжектить текущий контроллер в класс-сервис ?
    #39783874
PinkCat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
AspNet Core. Как заинжектить текущий контроллер в класс-сервис ?
    #39783875
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PinkCat,
+1
...
Рейтинг: 0 / 0
AspNet Core. Как заинжектить текущий контроллер в класс-сервис ?
    #39783897
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дмитрий МухКакие такие asp.net-овские классы? Это не попытка таскать ActionResult.

А что, по-твоему, такое ActionResult? Даже в названии видно, что это результат выполнения операции, который транслируется в ответ, это не сам ответ, в качестве которого выступает HttpResponseMessage.

И чем он отличается от OperationResult в той интерпретации, которую ты привёл?

Дмитрий Мух_myService же слой некой бизнес логики, где есть некие бизнес-операции, чаще всего успешные, но не всегда.
Это классы бизнес-логики, доменной модели.
Использоваться могут не только в asp.net.

Спору нет, но всё сильно зависит от операции, от логики.
Попытка свести все действия контроллеров в нечто подобное:

Код: c#
1.
2.
3.
4.
5.
public async Task<IActionResult> SomeAction(...)
{
    var result = await _someService.SomeOperationAsync(...);
    return result.ToActionResult();
}



это диаметрально противоположный случай крайности размещения логики в контроллерах. И такой же фиговый, так как выражается в странных и бессмысленных действиях по принципу, чтобы человек не мог сломать себе ноги, давай их сразу отрежем и посадим на коляску.

Дмитрий МухВообще давайте всё в контроллер запихнём, следуя твоим рассуждениям. В нём же уже есть метод GetData.
Зачем выделять какой-то сервис ещё с одним методом GetData? Масло масляное


Нет. Контроллеры должны быть тупыми, на не настолько, чтобы быть в них совершенно не было смысла. У них есть смысл, и это явно не конвертирование OperationResult в ActionResult. Это совершенно безумная крайность. Что тут тестировать? Правильно ли конвертится одно в другое? Это вообще обыкновенный маппинг и решается на другом уровне, с тестированием и самоконтролем.
...
Рейтинг: 0 / 0
AspNet Core. Как заинжектить текущий контроллер в класс-сервис ?
    #39783898
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дмитрий Мухда, функциональный подход в C# всё больше входит в моду...
передаёшь параметры в метод и гарантированно получаешь результат определённого типа
ни null, ни исключение, а Result

чистые функции, читсый код без ветвлений и трай-кетчей, тестируемый, читабельный

ФП хорошо. Эффективные практики из ФП брать -- хорошо.

ФП головного мозга, как впрочем и остальное -- плохо.
...
Рейтинг: 0 / 0
AspNet Core. Как заинжектить текущий контроллер в класс-сервис ?
    #39783899
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дмитрий МухКстати легко заметить, что
Код: c#
1.
private static ActionResult ToActionResult<TValue>(IOperationResult<TValue> source, Func<TValue, ActionResult> onSuccess)



просто оформляется как расширение
Код: c#
1.
internal static ActionResult ToActionResult<TValue>(this IOperationResult<TValue> source, Func<TValue, ActionResult> onSuccess)



Легко покрывается тестами. И мы получам простую чепочку вызовов.
Код: c#
1.
2.
3.
4.
public async Task<ActionResult<MyResult>> GetData([FromBody] MyParameters parameters)
{
    return await _myService.GetDataAsync(parameters).ToActionResult(this.Json);
}



Я хз что тут покрывать. Маппинг? Если весь код такой, то в контроллерах вообще нет смысла, это обыкновенный оверхед. Функции контроллера перенесены в сервисы. Сервисы стали деревянными, и заточенными чисто под общение через конкретный протокол.

Что касается "не зависит от...", ещё как зависит. Похоже всё идёт по очередному кругу и мы получаем очередную реинкарнацию RPC.

Плохого в этом ничего нет, но наблюдается большой оверхед на то, что это впихивается в Web API. Хотя он уже нафиг тут не нужен, пишем декларативную обвязку в собсвтенном middleware.

От OperationResult отпочковываем всякие CacheableOperationResult и т.д. и т.п.
...
Рейтинг: 0 / 0
AspNet Core. Как заинжектить текущий контроллер в класс-сервис ?
    #39783904
Дмитрий Мух
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PinkCatДмитрий Мух,

передаёшь параметры в метод и гарантированно получаешь результат определённого типа
-----
Все гораздо хуже.
Наблюдается даже отход от ООП.
Где и в какую сторону? Поясните?
...
Рейтинг: 0 / 0
AspNet Core. Как заинжектить текущий контроллер в класс-сервис ?
    #39783905
Дмитрий Мух
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttДмитрий МухКстати легко заметить, что
Код: c#
1.
private static ActionResult ToActionResult<TValue>(IOperationResult<TValue> source, Func<TValue, ActionResult> onSuccess)




просто оформляется как расширение
Код: c#
1.
internal static ActionResult ToActionResult<TValue>(this IOperationResult<TValue> source, Func<TValue, ActionResult> onSuccess)




Легко покрывается тестами. И мы получам простую чепочку вызовов.
Код: c#
1.
2.
3.
4.
public async Task<ActionResult<MyResult>> GetData([FromBody] MyParameters parameters)
{
    return await _myService.GetDataAsync(parameters).ToActionResult(this.Json);
}




Я хз что тут покрывать. Маппинг? Если весь код такой, то в контроллерах вообще нет смысла, это обыкновенный оверхед. Функции контроллера перенесены в сервисы. Сервисы стали деревянными, и заточенными чисто под общение через конкретный протокол.

Что касается "не зависит от...", ещё как зависит. Похоже всё идёт по очередному кругу и мы получаем очередную реинкарнацию RPC.

Плохого в этом ничего нет, но наблюдается большой оверхед на то, что это впихивается в Web API. Хотя он уже нафиг тут не нужен, пишем декларативную обвязку в собсвтенном middleware.

От OperationResult отпочковываем всякие CacheableOperationResult и т.д. и т.п.
Нет, всё совершенно не так. Никакие функции контроллера не перенесены в сервисы, о слова совсем.
...
Рейтинг: 0 / 0
AspNet Core. Как заинжектить текущий контроллер в класс-сервис ?
    #39783907
Дмитрий Мух
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
На мой взгляд намечается очередной бессмысленный и беспощадный спор.

Хотелось бы увидеть какие-то конкретные и конструктивные примеры.
Какие именно функции контроллера перенесены в сервис? В чём конкретно отход от ООП?
...
Рейтинг: 0 / 0
AspNet Core. Как заинжектить текущий контроллер в класс-сервис ?
    #39783908
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дмитрий МухНет, всё совершенно не так. Никакие функции контроллера не перенесены в сервисы, о слова совсем.

Именно так это и выглядит. Если действие контроллера === действие сервиса, которое мапится из OperationResult в ActionResult, это действительно так. Совершенно так. По всем понятиям.

Ибо если, тебе вдруг в контроллере надо будет вызвать несколько действий сервисов (т.е. это уже означает, что у контроллеров есть логика АПИ), то уже ToActionResult тут не обойдёшься, так как тебе нужно каскадно проверить все результаты.
...
Рейтинг: 0 / 0
AspNet Core. Как заинжектить текущий контроллер в класс-сервис ?
    #39783909
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дмитрий МухНа мой взгляд намечается очередной бессмысленный и беспощадный спор.

Хотелось бы увидеть какие-то конкретные и конструктивные примеры.
Какие именно функции контроллера перенесены в сервис? В чём конкретно отход от ООП?

Хз насчёт ООП, я об этом не заикался. Я говорю о конкретных приведённых примерах.
В частности о волшебном расширении ToActionResult. Нет, это не выглядит "круто, удобно, тестируемо,бла-бла-бла". Это выглядит глупо.
...
Рейтинг: 0 / 0
AspNet Core. Как заинжектить текущий контроллер в класс-сервис ?
    #39783910
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дмитрий МухНа мой взгляд намечается очередной бессмысленный и беспощадный спор.

Спор не о том, хорошо или плохо OperationResult.
...
Рейтинг: 0 / 0
AspNet Core. Как заинжектить текущий контроллер в класс-сервис ?
    #39783915
PinkCat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дмитрий Мух,

Где и в какую сторону?
-----
В сторону процедурной парадигмы.
По профилю - работа с разными базами как источниками информации.
...
Рейтинг: 0 / 0
AspNet Core. Как заинжектить текущий контроллер в класс-сервис ?
    #39783923
Дмитрий Мух
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttДмитрий МухНет, всё совершенно не так. Никакие функции контроллера не перенесены в сервисы, о слова совсем.

Именно так это и выглядит. Если действие контроллера === действие сервиса, которое мапится из OperationResult в ActionResult, это действительно так. Совершенно так. По всем понятиям.
Действие сервиса было и осталось дейтсвием сервиса, просто результат этого действия не тупо TValue, а OperationResult<TValue>.

У тебя есть метод сервис
Код: c#
1.
TResult DoSomething()


и
Код: c#
1.
Task<TResult> DoSomethingAsync()


Внезапно последний перестал быть действием сервиса?
...
Рейтинг: 0 / 0
AspNet Core. Как заинжектить текущий контроллер в класс-сервис ?
    #39783926
Дмитрий Мух
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PinkCatДмитрий Мух,

Где и в какую сторону?
-----
В сторону процедурной парадигмы.
По профилю - работа с разными базами как источниками информации.
А, это вы про что-то своё. Вы хоть процитируйте пост, к которому относятся ваши выводы.

Возврат не пермитивного типа, или TValue из метода DoSomething, OperationResult<TValue> тут при чём?
...
Рейтинг: 0 / 0
AspNet Core. Как заинжектить текущий контроллер в класс-сервис ?
    #39783927
Дмитрий Мух
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttИбо если, тебе вдруг в контроллере надо будет вызвать несколько действий сервисов (т.е. это уже означает, что у контроллеров есть логика АПИ), то уже ToActionResult тут не обойдёшься, так как тебе нужно каскадно проверить все результаты.
Да не обойдёшься, но в итоге будет ToActionResult, при чём не важно на каком их нескольких действий сервисов прервётся цепочка.
...
Рейтинг: 0 / 0
AspNet Core. Как заинжектить текущий контроллер в класс-сервис ?
    #39783928
Дмитрий Мух
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttДмитрий МухНа мой взгляд намечается очередной бессмысленный и беспощадный спор.

Хотелось бы увидеть какие-то конкретные и конструктивные примеры.
Какие именно функции контроллера перенесены в сервис? В чём конкретно отход от ООП?

Хз насчёт ООП, я об этом не заикался. Я говорю о конкретных приведённых примерах.
В частности о волшебном расширении ToActionResult. Нет, это не выглядит "круто, удобно, тестируемо,бла-бла-бла". Это выглядит глупо.
Что конкретно глупо? Можешь быть конструктивным, а не бла-бла-бла? :)
...
Рейтинг: 0 / 0
AspNet Core. Как заинжектить текущий контроллер в класс-сервис ?
    #39783932
Дмитрий Мух
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttДмитрий МухНа мой взгляд намечается очередной бессмысленный и беспощадный спор.

Спор не о том, хорошо или плохо OperationResult.
Не вижу конструктивной критики.
То есть когда не тупо говорят: "Это выглядит глупо".
А аргументируют, почему на их взгляд это выглядит глупо, и предлагают свой вариант решения, который нивелирует проблемы предложенного мною.

А раз нет конструктива, то для меня это очередной бессмысленный и беспощадный спор.
...
Рейтинг: 0 / 0
AspNet Core. Как заинжектить текущий контроллер в класс-сервис ?
    #39783935
PinkCat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дмитрий Мух,

А, это вы про что-то своё.
-----
Разумеется.


тут при чём?
-----
Так это... тяпница же... да еще и 8-е... и конец рабочего дня...

А долбанная XmlSchema все еще не компилируется...
Только-только начала собираться из кусков... надо "циркулар референце" победить​...
А в предлагаемых решениях - только ручное исправление схем и такая же ручная сборка результатов...

Нее, без стакана не разобраться... и OperationResult не поможет...
...
Рейтинг: 0 / 0
AspNet Core. Как заинжектить текущий контроллер в класс-сервис ?
    #39783937
PinkCat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PinkCat,

Д​а, не понятно написал... устал уже...
В общем - надо мне схему забросить на сервис и на сервисе она должна компилироваться во что-то что сможет десериализовать соответствующий схеме ХМЛ.
Мне без разницы какой именно будет ответ от сервиса - сервису в любом случае надо построить хранилище по переданной схеме.
Ну а у мелкомягких как всегда нихрена не пашет - циркулар референце - да, она там есть - и надо ее победить...
Как-то так... устал...
...
Рейтинг: 0 / 0
AspNet Core. Как заинжектить текущий контроллер в класс-сервис ?
    #39783938
Дмитрий Мух
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вообще это всё шаг в торону так называемого Railway oriented programming.
И когда "вдруг в контроллере надо будет вызвать несколько действий сервисов", то легко можно будет к этому прийти.
А можно и забить, чтобы в "ФП головного мозга" не обвиняли
...
Рейтинг: 0 / 0
AspNet Core. Как заинжектить текущий контроллер в класс-сервис ?
    #39783939
Дмитрий Мух
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PinkCatКак-то так... устал...
Обычно в этом случае перерыв и отдых помогает. Утро вечера мудренее.
...
Рейтинг: 0 / 0
AspNet Core. Как заинжектить текущий контроллер в класс-сервис ?
    #39783944
PinkCat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дмитрий Мух,

Обычно в этом случае перерыв и отдых помогает.
-----
Да, только у меня он называется retirement... пора, скоро...
...
Рейтинг: 0 / 0
AspNet Core. Как заинжектить текущий контроллер в класс-сервис ?
    #39783947
Дмитрий Мух
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А для упоротых курс Applying Functional Principles in C# от Microsoft MVP.

You will see how to make parts of the domain model immutable, how to refactor away from using exceptions to control the program flow, get rid of primitive obsession, deal with nulls, and apply railway-oriented programming.
You will also see how to save your domain model to a data store, namely how to convert value objects into primitives and Maybe type instances to nulls when you do that.
...
Рейтинг: 0 / 0
AspNet Core. Как заинжектить текущий контроллер в класс-сервис ?
    #39784867
monstrU
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
WaspNewCore,

ты судя по всему думаешь как сделать WebApi контроллеры?
может подойдет тебе вот такой интерфейс для твоего ответа IHttpActionResult - возвращай объект, реализующий этот интерфейс
...
Рейтинг: 0 / 0
AspNet Core. Как заинжектить текущий контроллер в класс-сервис ?
    #39784881
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
monstrU,
Для этого ссылка на интерфейс XXXX-HTTP-XXXXдолжна быть в слое сервисном и бизнес логике.
Оно там надо?
...
Рейтинг: 0 / 0
AspNet Core. Как заинжектить текущий контроллер в класс-сервис ?
    #39785167
Дмитрий Мух
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
monstrUWaspNewCore,

ты судя по всему думаешь как сделать WebApi контроллеры?
может подойдет тебе вот такой интерфейс для твоего ответа IHttpActionResult - возвращай объект, реализующий этот интерфейс
Вообще-то в заголовке написано ASP.NET Core, а IHttpActionResult относится к System.Web.Http.

Да и тащить зависимость от System.Web, или от Microsoft.AspNetCore.Mvc в слой бизнес-логики - та ещё идея :)
...
Рейтинг: 0 / 0
AspNet Core. Как заинжектить текущий контроллер в класс-сервис ?
    #39785328
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дмитрий МухА аргументируют, почему на их взгляд это выглядит глупо, и предлагают свой вариант решения, который нивелирует проблемы предложенного мною.

Дублирование это в большинстве случаев глупо.
Использовать функционал фреймворка не по назначению в большинстве случаев глупо.

Какие ещё аргументы нужны?
...
Рейтинг: 0 / 0
AspNet Core. Как заинжектить текущий контроллер в класс-сервис ?
    #39785329
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дмитрий МухИ когда "вдруг в контроллере надо будет вызвать несколько действий сервисов", то легко можно будет к этому прийти.

Серьёзно? Сначала оверинженирим, затем выдумываем как это обойти ))
...
Рейтинг: 0 / 0
AspNet Core. Как заинжектить текущий контроллер в класс-сервис ?
    #39785332
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дмитрий МухА можно и забить, чтобы в "ФП головного мозга" не обвиняли


Между "эффективное решение" и "ФП-решение" многие ставят знак тройного равенства.
Это ни что иное, как ФП головного мозга, сорян )
...
Рейтинг: 0 / 0
AspNet Core. Как заинжектить текущий контроллер в класс-сервис ?
    #39785334
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дмитрий МухДа и тащить зависимость от System.Web, или от Microsoft.AspNetCore.Mvc в слой бизнес-логики - та ещё идея :)

Если ты полностью дублируешь функционал IActionResult, то в чём ущербность идеи? :)
...
Рейтинг: 0 / 0
AspNet Core. Как заинжектить текущий контроллер в класс-сервис ?
    #39785367
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttДмитрий МухИ когда "вдруг в контроллере надо будет вызвать несколько действий сервисов", то легко можно будет к этому прийти.

Серьёзно? Сначала оверинженирим, затем выдумываем как это обойти ))
Выдумываем как обойти что? Давай конкретный пример уже :)
...
Рейтинг: 0 / 0
AspNet Core. Как заинжектить текущий контроллер в класс-сервис ?
    #39785369
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttДмитрий МухДа и тащить зависимость от System.Web, или от Microsoft.AspNetCore.Mvc в слой бизнес-логики - та ещё идея :)

Если ты полностью дублируешь функционал IActionResult, то в чём ущербность идеи? :)
IActionResult - это во первых интерфейс.
Какой такой его функционал и кто полностью дублирует?

У него туева хуча наследников, где ты увидел полное их дублирование? :)
...
Рейтинг: 0 / 0
AspNet Core. Как заинжектить текущий контроллер в класс-сервис ?
    #39785374
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANAВыдумываем как обойти что? Давай конкретный пример уже :)

Несколько твоих OperationResult, которые уже не какие-то там Success(true/false), а целый фарш из HTTP-like статусов.
...
Рейтинг: 0 / 0
AspNet Core. Как заинжектить текущий контроллер в класс-сервис ?
    #39785377
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANAIActionResult - это во первых интерфейс.
Какой такой его функционал и кто полностью дублирует?

Интерфейс это контракт для реализации функционала.
OperationResult чем отличается от IActionResult, если он у тебя Http-like и поэтому так просто траснлируется в IActionResult?


skyANAУ него туева хуча наследников, где ты увидел полное их дублирование? :)

Дублирование функционала.

Я ещё понимаю, откуда могут ноги расти. Ты просто получаешь данные из другого REST-сервиса, полученный ответ мапится в OeprationResult, а потом также в обратку -- в IActionResult.
...
Рейтинг: 0 / 0
AspNet Core. Как заинжектить текущий контроллер в класс-сервис ?
    #39785380
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttskyANAВыдумываем как обойти что? Давай конкретный пример уже :)

Несколько твоих OperationResult, которые уже не какие-то там Success(true/false), а целый фарш из HTTP-like статусов.
Где ты увидел несколько OperationResult? В топике ровно один такой класс.
И нет там HTTP-like статусов. То что множество A однозначно отображается на B не значит, что A есть B-like :)
...
Рейтинг: 0 / 0
AspNet Core. Как заинжектить текущий контроллер в класс-сервис ?
    #39785385
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttskyANAIActionResult - это во первых интерфейс.
Какой такой его функционал и кто полностью дублирует?

Интерфейс это контракт для реализации функционала.
OperationResult чем отличается от IActionResult, если он у тебя Http-like и поэтому так просто траснлируется в IActionResult?
Где ты увидел в IActionResult сл. свойства:

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
    /// <summary>
    /// If Success is false and an exception has been caught internally, this field will contain the exception.
    /// </summary>
    public Exception Exception { get; private set; }

    /// <summary>
    /// Returns message if the operation was not successful.
    /// </summary>
    public string Message { get; private set; }

    /// <summary>
    /// The status for the operation.
    /// </summary>
    public Status Status { get; private set; }

    /// <summary>
    /// Returns true if the operation was successful.
    /// </summary>
    /// <remarks>If Success is false, use the Exception property to help determine the reason.</remarks>
    public bool Success { get; private set; }

    /// <summary>
    /// The result obtained during the operation.
    /// </summary>
    public TValue Value { get; private set; }


...
Рейтинг: 0 / 0
AspNet Core. Как заинжектить текущий контроллер в класс-сервис ?
    #39785387
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttskyANAУ него туева хуча наследников, где ты увидел полное их дублирование? :)

Дублирование функционала.
Покажи мне тот кусок кода, где дублируется какой-то функционал?
...
Рейтинг: 0 / 0
AspNet Core. Как заинжектить текущий контроллер в класс-сервис ?
    #39785463
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANAГде ты увидел в IActionResult сл. свойства:

Вот здесь:

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
public enum OperationStatus
{
    /// <summary>
    /// Indicates that the status has not been set.
    /// </summary>
    Undefined = 0,

    /// <summary>
    /// The operation was successful.
    /// </summary>
    Success,

    /// <summary>
    /// The requested resource does not exist.
    /// </summary>
    NotFound,

    /// <summary>
    /// The operation is not allowed.
    /// </summary>
    NotAllowed,

    /// <summary>
    /// The operation is not supported at the moment.
    /// </summary>
    NotSupported,

    /// <summary>
    /// The operation is not valid (for example it contains an inconsistent data).
    /// </summary>
    NotValid,

    /// <summary>
    /// An internal error has occured.
    /// </summary>
    InternalError
}



а вот один из базовых классов реализации IActionResult

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
public class ObjectResult : ActionResult, IStatusCodeActionResult, IActionResult
  {
    private MediaTypeCollection _contentTypes;

    public ObjectResult(object value)
    {
      this.Value = value;
      this.Formatters = new FormatterCollection<IOutputFormatter>();
      this._contentTypes = new MediaTypeCollection();
    }

    [ActionResultObjectValue]
    public object Value { get; set; }

    public FormatterCollection<IOutputFormatter> Formatters { get; set; }

    public MediaTypeCollection ContentTypes
    {
      get
      {
        return this._contentTypes;
      }
      set
      {
        MediaTypeCollection mediaTypeCollection = value;
        if (mediaTypeCollection == null)
          throw new ArgumentNullException(nameof (value));
        this._contentTypes = mediaTypeCollection;
      }
    }

    public Type DeclaredType { get; set; }

    /// <summary>Gets or sets the HTTP status code.</summary>
    public int? StatusCode { get; set; }

    public override Task ExecuteResultAsync(ActionContext context)
    {
      return context.HttpContext.RequestServices.GetRequiredService<IActionResultExecutor<ObjectResult>>().ExecuteAsync(context, this);
    }

    /// <summary>
    /// This method is called before the formatter writes to the output stream.
    /// </summary>
    public virtual void OnFormatting(ActionContext context)
    {
      if (context == null)
        throw new ArgumentNullException(nameof (context));
      if (!this.StatusCode.HasValue)
        return;
      context.HttpContext.Response.StatusCode = this.StatusCode.Value;
      if (!(this.Value is ProblemDetails problemDetails) || problemDetails.Status.HasValue)
        return;
      problemDetails.Status = new int?(this.StatusCode.Value);
    }
  }



Ну скажи мне, что ObjectResult.StatusCode и OperationResult.Status суть разные вещи, давай

Почему я говорю про IActionResult? Добавь реализацию интерфейса IActionResult в OperationResult, и тебе даже не понадобится метод расширения ToActionResult.

Оверинжиниринг ин экшен. Можно сделать GetSomeResult().ToActionResult() -- как няшно и ФП-шно )))
...
Рейтинг: 0 / 0
AspNet Core. Как заинжектить текущий контроллер в класс-сервис ?
    #39785477
fkthat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
"Дали дураку хрустальный х...й" (с) Встроили в Core DI из коробки - ждем теперь массовой инжекции клиентского JavaScript в базу данных и тому подобного.
...
Рейтинг: 0 / 0
AspNet Core. Как заинжектить текущий контроллер в класс-сервис ?
    #39785488
handmadeFromRu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
fkthat"Дали дураку хрустальный х...й" (с) Встроили в Core DI из коробки - ждем теперь массовой инжекции клиентского JavaScript в базу данных и тому подобного.
эм будто до кор нет никто не инжектил
...
Рейтинг: 0 / 0
AspNet Core. Как заинжектить текущий контроллер в класс-сервис ?
    #39785593
Дмитрий Мух
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttНу скажи мне, что ObjectResult.StatusCode и OperationResult.Status суть разные вещи, давай
Разные конечно.
...
Рейтинг: 0 / 0
AspNet Core. Как заинжектить текущий контроллер в класс-сервис ?
    #39785596
Дмитрий Мух
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
К примеру:
"404 Not Found - The server can not find requested resource. In the browser, this means the URL is not recognized."

Какой на фиг на уровне сервиса "URL is not recognized"? На уровне сервиса NotFound - это уже другое :)
...
Рейтинг: 0 / 0
AspNet Core. Как заинжектить текущий контроллер в класс-сервис ?
    #39785657
handmadeFromRu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дмитрий МухК примеру:
"404 Not Found - The server can not find requested resource. In the browser, this means the URL is not recognized."

Какой на фиг на уровне сервиса "URL is not recognized"? На уровне сервиса NotFound - это уже другое :)
а вот тут я не соглашусь. текст про 404 старой версии в которой до сих пор все думают
а вот по новому как звучит
6.5.4. 404 Not Found

The 404 (Not Found) status code indicates that the origin server did
not find a current representation for the target resource or is not
willing to disclose that one exists. A 404 status code does not
indicate whether this lack of representation is temporary or
permanent; the 410 (Gone) status code is preferred over 404 if the
origin server knows, presumably through some configurable means, that
the condition is likely to be permanent.
...
Рейтинг: 0 / 0
AspNet Core. Как заинжектить текущий контроллер в класс-сервис ?
    #39785666
Дмитрий Мух
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
handmadeFromRuДмитрий МухК примеру:
"404 Not Found - The server can not find requested resource. In the browser, this means the URL is not recognized."

Какой на фиг на уровне сервиса "URL is not recognized"? На уровне сервиса NotFound - это уже другое :)
а вот тут я не соглашусь. текст про 404 старой версии в которой до сих пор все думают
а вот по новому как звучит
6.5.4. 404 Not Found

The 404 (Not Found) status code indicates that the origin server did
not find a current representation for the target resource or is not
willing to disclose that one exists. A 404 status code does not
indicate whether this lack of representation is temporary or
permanent; the 410 (Gone) status code is preferred over 404 if the
origin server knows, presumably through some configurable means, that
the condition is likely to be permanent.
И с чем же вы не согласны? Что такое "текущее представление целевого ресурса" на уровне бизнес-логики?

- Вась, дай ключ на двадцать!
- Текущее представление целевого ресурса не найдено.

:)
...
Рейтинг: 0 / 0
AspNet Core. Как заинжектить текущий контроллер в класс-сервис ?
    #39785677
handmadeFromRu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дмитрий Мух,

с тем как ты трактуешь код httpcode 404
...
Рейтинг: 0 / 0
AspNet Core. Как заинжектить текущий контроллер в класс-сервис ?
    #39785709
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
handmadeFromRuДмитрий Мух,

с тем как ты трактуешь код httpcode 404
Моя мысль в том, что возврат результата со статусом NotFound из _myService.GetData(parameters) - это никакое не дублирование httpcode 404, как последний не трактуй.
...
Рейтинг: 0 / 0
AspNet Core. Как заинжектить текущий контроллер в класс-сервис ?
    #39785721
handmadeFromRu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANAhandmadeFromRuДмитрий Мух,

с тем как ты трактуешь код httpcode 404
Моя мысль в том, что возврат результата со статусом NotFound из _myService.GetData(parameters) - это никакое не дублирование httpcode 404, как последний не трактуй.
а на это я скажу что это велик бесполезный. бл не должен тебе говорить статусы, статус добавляет тебе точка входа в случае реста это контролер. а если точка входа декстопном приложение или фоновый сервис ?
...
Рейтинг: 0 / 0
AspNet Core. Как заинжектить текущий контроллер в класс-сервис ?
    #39785727
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
handmadeFromRuskyANAпропущено...

Моя мысль в том, что возврат результата со статусом NotFound из _myService.GetData(parameters) - это никакое не дублирование httpcode 404, как последний не трактуй.
а на это я скажу что это велик бесполезный. бл не должен тебе говорить статусы, статус добавляет тебе точка входа в случае реста это контролер. а если точка входа декстопном приложение или фоновый сервис ?
А что должна говорить бл?

Вот приходишь ты к туроператору и ищет он тебе по своей базе размещение в отеле в своём десктоп приложении.
И HotelAccomodationService возвращает OperationResult со статусом Success и в качестве Value список подходящих под твой запрос размещений.

Или возвращает OperationResult со статусом NotFound и в качестве Value ничего, так как ничего подходящего под заданные тобой параметры не нашлось.

В чём тут бесполезность?
...
Рейтинг: 0 / 0
AspNet Core. Как заинжектить текущий контроллер в класс-сервис ?
    #39785730
handmadeFromRu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANA,

я же написал что за вывод клиенту отвечает точка входа. что тут не понятного?
...
Рейтинг: 0 / 0
AspNet Core. Как заинжектить текущий контроллер в класс-сервис ?
    #39785735
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А ищешь ты к примеру размещение для троих в одноместном номере и бл тебе отвечает NotSupported и Message:
"Чувак, как бы троих в одноместный не запихнуть".
...
Рейтинг: 0 / 0
AspNet Core. Как заинжектить текущий контроллер в класс-сервис ?
    #39785737
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
handmadeFromRuskyANA,

я же написал что за вывод клиенту отвечает точка входа. что тут не понятного?
Ну да, точка входа посмотрит на OperationResult, интерпретирует и отобразит как надо.
Причём интерпретирует NotFound не как "текущее представление целевого ресурса не найдено", а именно "подходящее размещение не найдено, попробуйте изменить параметры поиска".
...
Рейтинг: 0 / 0
AspNet Core. Как заинжектить текущий контроллер в класс-сервис ?
    #39785738
handmadeFromRu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANA,
бесполезность в том что ты потом будешь все равно транслировать свой статус в статус конкретной точки входа.
зачем? можно вернуть чистую сущность уровня бл в случае успеха ..вернуть null если не нашли ..выкинуть ошибку в случае ошибки бл и это все завернуть в красивую обертку в каждой точке входа по своему, которая как то покажет уже клиенту приложения что произошло
...
Рейтинг: 0 / 0
AspNet Core. Как заинжектить текущий контроллер в класс-сервис ?
    #39785749
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
handmadeFromRuskyANA,
бесполезность в том что ты потом будешь все равно транслировать свой статус в статус конкретной точки входа.
зачем? можно вернуть чистую сущность уровня бл в случае успеха ..вернуть null если не нашли ..выкинуть ошибку в случае ошибки бл и это все завернуть в красивую обертку в каждой точке входа по своему, которая как то покажет уже клиенту приложения что произошло
Ну да, if-ы, try catch-и вместо одной чистой цепочки... Они же так полезны :)

Вот только не пойму, что мешает "завернуть в красивую обертку в каждой точке входа по своему" OperationResult?
Ведь и проще, и короче, и читабельней.
...
Рейтинг: 0 / 0
AspNet Core. Как заинжектить текущий контроллер в класс-сервис ?
    #39785762
handmadeFromRu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANA,

конечно мы напишем оверхед кода потому что так красивее.сарказм. у тебя в любом случаем на примере реста будет на контролере в "красивом методе" будет try чтоб вывалить клиенту 500 с месагом адекватным.
а помимо этого у нас в бл появляется мета объект с полями которые мало относятся к самой логике, а чисто нужны для отображения
или к примеру у тебя по бл ошибка ты делаешь статус ..и потом в коде везде проверяешь если статус ок продолжаем если нет то выходим...в случае выкидывания ошибки бл я сразу верну на точку входа без последующих проверок дальше по коду так как они уже не нужны будут.
так что я бы поспорил где проще
...
Рейтинг: 0 / 0
AspNet Core. Как заинжектить текущий контроллер в класс-сервис ?
    #39785785
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
handmadeFromRuконечно мы напишем оверхед кода потому что так красивее.сарказм.
Дык вообще всю логику в контроллер запихни, выделять какие-то слои, классы проектировать - это же такой оверхед :)

handmadeFromRuу тебя в любом случаем на примере реста будет на контролере в "красивом методе" будет try чтоб вывалить клиенту 500 с месагом адекватным
Не будет.

handmadeFromRuили к примеру у тебя по бл ошибка ты делаешь статус ..и потом в коде везде проверяешь если статус ок продолжаем если нет то выходим...в случае выкидывания ошибки бл я сразу верну на точку входа без последующих проверок дальше по коду так как они уже не нужны будут
О да, логика построенная на исключениях - это же так прекрасно. И ведь никакого оверхеда :)
...
Рейтинг: 0 / 0
AspNet Core. Как заинжектить текущий контроллер в класс-сервис ?
    #39785790
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
handmadeFromRuзачем? можно вернуть чистую сущность уровня бл в случае успеха ..вернуть null если не нашли ..выкинуть ошибку в случае ошибки бл и это все завернуть в красивую обертку в каждой точке входа по своему, которая как то покажет уже клиенту приложения что произошло+1
...
Рейтинг: 0 / 0
AspNet Core. Как заинжектить текущий контроллер в класс-сервис ?
    #39785793
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дублируем топик: Исключения или коды возврата.
...
Рейтинг: 0 / 0
AspNet Core. Как заинжектить текущий контроллер в класс-сервис ?
    #39785804
handmadeFromRu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANAДык вообще всю логику в контроллер запихни, выделять какие-то слои, классы проектировать - это же такой оверхед :)

такой плохой пример что будто слился.

skyANAhandmadeFromRuу тебя в любом случаем на примере реста будет на контролере в "красивом методе" будет try чтоб вывалить клиенту 500 с месагом адекватным
Не будет.

слабое утверждение без примера к примеру на кор нет или к примеру если у тебя будет фоновая служба. где ж ты там словишь к примеру разрыв соединения с бд без try

skyANAО да, логика построенная на исключениях - это же так прекрасно. И ведь никакого оверхеда :)

и? вот прям из твоих ссылок https://mattwarren.org/2016/12/20/Why-Exceptions-should-be-Exceptional/
кароче скиан не мути воду
...
Рейтинг: 0 / 0
AspNet Core. Как заинжектить текущий контроллер в класс-сервис ?
    #39785819
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
handmadeFromRuskyANAДык вообще всю логику в контроллер запихни, выделять какие-то слои, классы проектировать - это же такой оверхед :)

такой плохой пример что будто слился.

skyANAпропущено...

Не будет.

слабое утверждение без примера к примеру на кор нет или к примеру если у тебя будет фоновая служба. где ж ты там словишь к примеру разрыв соединения с бд без try
Ну вот тебе пример метода контроллера:
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
public ActionResult Promote(long id)
{
    var service = new CustomerService();

    return service.GetById(id)
        .OnSuccess(customer => customer.Promote())
        .OnSuccess(customer => service.SendPromotionNotification(customer.Email))
        .OnBoth(result => result.ToActionResult());
}


Много if-ов, try-catch-ей видишь?
...
Рейтинг: 0 / 0
AspNet Core. Как заинжектить текущий контроллер в класс-сервис ?
    #39785833
handmadeFromRu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANA,

так где ответ на мой вопрос по разрыву соединения?
...
Рейтинг: 0 / 0
AspNet Core. Как заинжектить текущий контроллер в класс-сервис ?
    #39785835
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
handmadeFromRuskyANAО да, логика построенная на исключениях - это же так прекрасно. И ведь никакого оверхеда :)

и? вот прям из твоих ссылок https://mattwarren.org/2016/12/20/Why-Exceptions-should-be-Exceptional/
кароче скиан не мути воду
Что и?
Там прямые выводы, что исключения надо кидать редко и желательно действительно в исключительных ситуациях.
Тогда не будет оверхеда по производительности.

Цитирую: Rare or Exceptional exceptions are not hugely expensive.
Перевожу: Редкие или действительно исключительные исключения не очень дороги.
...
Рейтинг: 0 / 0
AspNet Core. Как заинжектить текущий контроллер в класс-сервис ?
    #39785841
handmadeFromRu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANA,

Here we can see that as long as you follow the guidance and ‘DO NOT use exceptions for the normal flow of control’ then they are actually not that costly. I mean yes, they’re 15 times slower than using error codes, but we’re only talking about 22 nanoseconds, i.e. 22 billionths of a second, you have to be throwing exceptions frequently for it to be noticeable

да да да ты наверное думаешь я там сру ошибки постоянно и вся работа моего кода это сплошные ошибки )))
...
Рейтинг: 0 / 0
AspNet Core. Как заинжектить текущий контроллер в класс-сервис ?
    #39785846
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
handmadeFromRuskyANA,

так где ответ на мой вопрос по разрыву соединения?
А по коду ( 21827758 ) не ясно?
Код: c#
1.
2.
3.
4.
    /// <summary>
    /// If Success is false and an exception has been caught internally, this field will contain the exception.
    /// </summary>
    public Exception Exception { get; private set; }
...
Рейтинг: 0 / 0
AspNet Core. Как заинжектить текущий контроллер в класс-сервис ?
    #39785854
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
handmadeFromRuskyANA,

Here we can see that as long as you follow the guidance and ‘DO NOT use exceptions for the normal flow of control’ then they are actually not that costly. I mean yes, they’re 15 times slower than using error codes, but we’re only talking about 22 nanoseconds, i.e. 22 billionths of a second, you have to be throwing exceptions frequently for it to be noticeable

да да да ты наверное думаешь я там сру ошибки постоянно и вся работа моего кода это сплошные ошибки )))
Я думаю, что ты как и многие кидаешь исключения там, где можно и без них обойтись.
...
Рейтинг: 0 / 0
AspNet Core. Как заинжектить текущий контроллер в класс-сервис ?
    #39785864
Hexag0v
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
skyANAЯ думаю, что ты как и многие кидаешь исключения там, где можно и без них обойтись.

Я думаю, что не следует стараться любой ценой обойтись без исключений.
...
Рейтинг: 0 / 0
AspNet Core. Как заинжектить текущий контроллер в класс-сервис ?
    #39785868
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Hexag0vskyANAЯ думаю, что ты как и многие кидаешь исключения там, где можно и без них обойтись.

Я думаю, что не следует стараться любой ценой обойтись без исключений.
Согласен. Но я это и не предлагаю.
...
Рейтинг: 0 / 0
AspNet Core. Как заинжектить текущий контроллер в класс-сервис ?
    #39785889
handmadeFromRu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANAhandmadeFromRuskyANA,

так где ответ на мой вопрос по разрыву соединения?
А по коду ( 21827758 ) не ясно?
Код: c#
1.
2.
3.
4.
    /// <summary>
    /// If Success is false and an exception has been caught internally, this field will contain the exception.
    /// </summary>
    public Exception Exception { get; private set; }


нет, это всего поле.
...
Рейтинг: 0 / 0
AspNet Core. Как заинжектить текущий контроллер в класс-сервис ?
    #39785902
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
handmadeFromRuskyANAпропущено...

А по коду ( 21827758 ) не ясно?
Код: c#
1.
2.
3.
4.
    /// <summary>
    /// If Success is false and an exception has been caught internally, this field will contain the exception.
    /// </summary>
    public Exception Exception { get; private set; }



нет, это всего поле.
Поле с комментариями :)

А вообще приведи конкретный пример, что только я это делаю?

Вот есть у тебя фоновый процесс, что он делает? Как надо обрабатывать разрыв соединения с бд?
Сircuit breaker, Retry, весь твой фоновый процесс должен повеситься вплоть до перезагрузки сервера?
...
Рейтинг: 0 / 0
AspNet Core. Как заинжектить текущий контроллер в класс-сервис ?
    #39785906
handmadeFromRu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANAПоле с комментариями :)

А вообще приведи конкретный пример, что только я это делаю?

Вот есть у тебя фоновый процесс, что он делает? Как надо обрабатывать разрыв соединения с бд?
Сircuit breaker, Retry, весь твой фоновый процесс должен повеситься вплоть до перезагрузки сервера?
да Сircuit breaker, Retry и try чтоб сервис не лежал мертво. ну про нотификацию мы не рассматриваем вопросы.
так к чему мой код если я тебе говорил что я общаюсь между слоями моделями без статусов и 1 try на точке входа. по моему тут все простенько
...
Рейтинг: 0 / 0
AspNet Core. Как заинжектить текущий контроллер в класс-сервис ?
    #39785907
handmadeFromRu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANA,
но почему я спросил то..ты ж где то также ловишь ошибку чтоб в поле прокинуть..так почему бы эт не сделать в 1 месте и будет сквозь все твои слои ..куда уж проще
...
Рейтинг: 0 / 0
AspNet Core. Как заинжектить текущий контроллер в класс-сервис ?
    #39785982
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
handmadeFromRuskyANA,
но почему я спросил то..ты ж где то также ловишь ошибку чтоб в поле прокинуть..так почему бы эт не сделать в 1 месте и будет сквозь все твои слои ..куда уж проще
Да, ловлю конечно, если библиотека кидает исключения, а не результат возвращает.

В одном месте - это каком?
...
Рейтинг: 0 / 0
AspNet Core. Как заинжектить текущий контроллер в класс-сервис ?
    #39786145
handmadeFromRu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANAВ одном месте - это каком?
в методе который преобразует модель сервиса в ответ клиенту
хотя я лукавлю что там 500 обрабатываю, для 500 у меня мидлвар
...
Рейтинг: 0 / 0
AspNet Core. Как заинжектить текущий контроллер в класс-сервис ?
    #39786165
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
handmadeFromRuskyANAВ одном месте - это каком?
в методе который преобразует модель сервиса в ответ клиенту
хотя я лукавлю что там 500 обрабатываю, для 500 у меня мидлвар
Погоди, речь уже про фоновый процесс пошла. Какой ещё ответ клиенту? В фоновом процессе это что такое?
...
Рейтинг: 0 / 0
AspNet Core. Как заинжектить текущий контроллер в класс-сервис ?
    #39786370
handmadeFromRu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANA,

в фоновом еще проще - просто try с логикой нотификации и формирования ответа уже команде разработки, по факту все теже сопли что и в ресте только уже не аля return SomeResponce(BlObject) где как ты говоришь у меня пара If и try.
конечно тут можно на AppDomain.CurrentDomain.UnhandledException подписаться еще но эту штуку я держу опять как 500 в ресте.
...
Рейтинг: 0 / 0
AspNet Core. Как заинжектить текущий контроллер в класс-сервис ?
    #39786372
Дмитрий Мух
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
handmadeFromRu,

что с процессом-то при этом происходит?
падает до реакции команды разработки? бежит дальше и не важно какое исключение?
...
Рейтинг: 0 / 0
AspNet Core. Как заинжектить текущий контроллер в класс-сервис ?
    #39786374
Дмитрий Мух
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
"try с логикой нотификации и формирования ответа уже команде разработки" - это конечно пять :)

Про отдельные хелчеки, мониторинг, алертинг не слышали?
...
Рейтинг: 0 / 0
AspNet Core. Как заинжектить текущий контроллер в класс-сервис ?
    #39786399
handmadeFromRu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дмитрий МухhandmadeFromRu,

что с процессом-то при этом происходит?
падает до реакции команды разработки? бежит дальше и не важно какое исключение?

дальше работает

Дмитрий Мух"try с логикой нотификации и формирования ответа уже команде разработки" - это конечно пять :)

Про отдельные хелчеки, мониторинг, алертинг не слышали?

ну а кто вам сказал что ответ эт не лог из елка с нотификаций через бота в телеге к примеру? или какой нить ролбар или детипейдж...да что угодно
...
Рейтинг: 0 / 0
AspNet Core. Как заинжектить текущий контроллер в класс-сервис ?
    #39786428
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
handmadeFromRuДмитрий МухhandmadeFromRu,

что с процессом-то при этом происходит?
падает до реакции команды разработки? бежит дальше и не важно какое исключение?

дальше работает
Работает и при разрыве соединения с бд? Есть у вас деление на fatal и не fatal исключения?
...
Рейтинг: 0 / 0
AspNet Core. Как заинжектить текущий контроллер в класс-сервис ?
    #39786430
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
handmadeFromRuДмитрий Мух"try с логикой нотификации и формирования ответа уже команде разработки" - это конечно пять :)

Про отдельные хелчеки, мониторинг, алертинг не слышали?

ну а кто вам сказал что ответ эт не лог из елка с нотификаций через бота в телеге к примеру? или какой нить ролбар или детипейдж...да что угодно
Написано: "try с логикой нотификации".
Что читается как логика нотификации пишется прямо в коде, а не ботом по логу.
...
Рейтинг: 0 / 0
AspNet Core. Как заинжектить текущий контроллер в класс-сервис ?
    #39786451
handmadeFromRu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANAРаботает и при разрыве соединения с бд? Есть у вас деление на fatal и не fatal исключения?
конечно. мы ж выше говорил что есть ошибки в бл, а есть анхедл если ретри политика не сработала.
я не могу сказать что лучше тут останавливать сервис или нет. мы пока не стопорим а херачим в елк. конечно ж если там аутофмемори то такое не ловиться. тока из ивентов системы если забирать

skyANAНаписано: "try с логикой нотификации".
Что читается как логика нотификации пишется прямо в коде, а не ботом по логу.

ну тут по чесноку у меня были разные варианты. наверное я поэтому сумбурно выразился. пробовали писал в лог ошибку и отправлял через "очередь\шину" сформированный кодом ответ и пробовали по логу формировать, но там снова парсинг строки лога что не очень нравиться. вообщем наверное я еще в поисках, может мне в провинции не хватает знаний и я мыслю не правильно и зря что то доказываю.
...
Рейтинг: 0 / 0
AspNet Core. Как заинжектить текущий контроллер в класс-сервис ?
    #39786455
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
handmadeFromRuskyANAРаботает и при разрыве соединения с бд? Есть у вас деление на fatal и не fatal исключения?
конечно. мы ж выше говорил что есть ошибки в бл, а есть анхедл если ретри политика не сработала.
я не могу сказать что лучше тут останавливать сервис или нет. мы пока не стопорим а херачим в елк. конечно ж если там аутофмемори то такое не ловиться. тока из ивентов системы если забирать
Я всё пытаюсь понять, где же то одно место...

Ретрай политика тоже на уровне того единственного try, что содержит логику нотификации и формирования ответа?
Как этот try отличает ошибки и решает, когда ретрай, а когда нет?
...
Рейтинг: 0 / 0
AspNet Core. Как заинжектить текущий контроллер в класс-сервис ?
    #39786467
handmadeFromRu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANAЯ всё пытаюсь понять, где же то одно место...

для реста эт хелпметод что ловит ошибки бл, для анхедл мидлваре
для вин службы эт вызов кода службы через метод что может понять ошибки бл + подписка на анхедлд

ок 2 места. я заврался

skyANAРетрай политика тоже на уровне того единственного try, что содержит логику нотификации и формирования ответа?
Как этот try отличает ошибки и решает, когда ретрай, а когда нет?
ну политика по месту.. вызов из бд обтягиваю метод политикой, для реквестов на внешние службы по месту вызова.
ну в политике конечно ж будет доп try без этого никуда если ты уж решил к этому докопаться но и в твоем варианте от этого не уйти. хотя может какой нить джун тебе сказал что https://github.com/App-vNext/Polly используй но там ж внутри также try
...
Рейтинг: 0 / 0
AspNet Core. Как заинжектить текущий контроллер в класс-сервис ?
    #39786531
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
handmadeFromRu,
Кстати.
У вас там core 2.2? на IAction... или Action...?
...
Рейтинг: 0 / 0
AspNet Core. Как заинжектить текущий контроллер в класс-сервис ?
    #39786572
handmadeFromRu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123handmadeFromRu,
Кстати.
У вас там core 2.2? на IAction... или Action...?
о чем речь? о ответе? то IActionResult
есть сервис новый на коре, а так старый добрый фреймворк..даже больше скажу есть проект на формах до сих пор делающий свою работу
...
Рейтинг: 0 / 0
AspNet Core. Как заинжектить текущий контроллер в класс-сервис ?
    #39786610
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
handmadeFromRuо чем речь? о ответе? то IActionResultда.
Спасибо.
А то смотрю, 5 страниц, и об интерфейсе только hVostt)
...
Рейтинг: 0 / 0
AspNet Core. Как заинжектить текущий контроллер в класс-сервис ?
    #39786644
handmadeFromRu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
да тут в коре то особо другое и не вернешь)

п.с. подход скиана мне нравиться как выглядит. но меня смущает
что сквозь слои я гоняю мета объект знающий о статусе. может поэтому я сопротивляюсь
...
Рейтинг: 0 / 0
AspNet Core. Как заинжектить текущий контроллер в класс-сервис ?
    #39786694
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
handmadeFromRuп.с. подход скиана мне нравиться как выглядит. но меня смущает
что сквозь слои я гоняю мета объект знающий о статусе. может поэтому я сопротивляюсьты код с интерфейсом приведи. И все увидишь.
...
Рейтинг: 0 / 0
AspNet Core. Как заинжектить текущий контроллер в класс-сервис ?
    #39786697
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
handmadeFromRuда тут в коре то особо другое и не вернешь)верно. Тогда зачем мне сервис ограничивать возвратом?
...
Рейтинг: 0 / 0
AspNet Core. Как заинжектить текущий контроллер в класс-сервис ?
    #39786775
handmadeFromRu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123handmadeFromRuда тут в коре то особо другое и не вернешь)верно. Тогда зачем мне сервис ограничивать возвратом?
я не понимаю хода мыслей. в чем я ограничиваю сервис? тем что я прокидываю чистую модель? хи ну ок если это ограничение
...
Рейтинг: 0 / 0
AspNet Core. Как заинжектить текущий контроллер в класс-сервис ?
    #39786793
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
handmadeFromRu,
Да не вы. У вас все логично.
Не логично из сервиса возвращать код возврата
Это же не http канал между двумя гетерогенными средами.
Логично?
...
Рейтинг: 0 / 0
AspNet Core. Как заинжектить текущий контроллер в класс-сервис ?
    #39786798
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
handmadeFromRuда тут в коре то особо другое и не вернешь)

п.с. подход скиана мне нравиться как выглядит. но меня смущает
что сквозь слои я гоняю мета объект знающий о статусе. может поэтому я сопротивляюсь
Через какие слои?

И это не мета объект, знающий о статусе :) Это результат операции.
Просто не примитивный.

Fighting Primitive Obsession, погугли :)
...
Рейтинг: 0 / 0
AspNet Core. Как заинжектить текущий контроллер в класс-сервис ?
    #39786800
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123handmadeFromRu,
Да не вы. У вас все логично.
Не логично из сервиса возвращать код возврата
Это же не http канал между двумя гетерогенными средами.
Логично?
А это не код возврата - это результат операции.

Метод, выполняющий операцию, возвращает результат этой операции.

Метод, выполняющий асинхронную операцию, вызывает внезапно Task<TResult>.
У которого внезапно есть и Status, и Exception, и Result.

Тоже может не логично? Тоже смахивает на коды возврата? :)

Это всё не я придумал. И никто не заставляет никого этим пользоваться. Как собственно и async, await.
...
Рейтинг: 0 / 0
AspNet Core. Как заинжектить текущий контроллер в класс-сервис ?
    #39786804
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
handmadeFromRuхотя может какой нить джун тебе сказал что https://github.com/App-vNext/Polly используй
Почему джун? :)

На Polly я смотрел, но в результате Circuit Breaker написал свой.
Его там писать-то не долго. Да и Couchbase.Net client не выкидывает исключения :)
...
Рейтинг: 0 / 0
AspNet Core. Как заинжектить текущий контроллер в класс-сервис ?
    #39786855
handmadeFromRu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANAhandmadeFromRuхотя может какой нить джун тебе сказал что https://github.com/App-vNext/Polly используй
Почему джун? :)

На Polly я смотрел, но в результате Circuit Breaker написал свой.
Его там писать-то не долго. Да и Couchbase.Net client не выкидывает исключения :)
ну тут посыл что человек мало понимает что стоит за повтором.

у меня раньше тоже было свой ..а потом решил взять поли потому что погибче оказалось
...
Рейтинг: 0 / 0
AspNet Core. Как заинжектить текущий контроллер в класс-сервис ?
    #39787157
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANAА это не код возврата - это результат операции.



А код возврата это что? Не результат операции?

Не я всё понимаю, но это ппц... Давайте хотя бы с логикой дружить? ))
...
Рейтинг: 0 / 0
AspNet Core. Как заинжектить текущий контроллер в класс-сервис ?
    #39787160
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дмитрий МухК примеру:
"404 Not Found - The server can not find requested resource. In the browser, this means the URL is not recognized."

Какой на фиг на уровне сервиса "URL is not recognized"? На уровне сервиса NotFound - это уже другое :)

Так и не понял при чём тут уровень. URL это идентификатор ресурса, если его нет, значит его нет. Ты ещё возвращай информацию, дескать маршрут найден, сущность найдена, но она удалена. Зачем это клиенту? А что насчёт ИБ? Да и какая разница. Если чего-то нет, то пофигу почему, URL у тебя кривой, сущности такой нет, или она удалена, или ещё +100500 причин. Результат один.

Поэтому. Не гони :)
...
Рейтинг: 0 / 0
AspNet Core. Как заинжектить текущий контроллер в класс-сервис ?
    #39787161
Дмитрий Мух
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttА код возврата это что? Не результат операции?Код возврата (англ. Exit status) программы, - это целочисленное значение, которое дочерний процесс возвращает родительскому процессу в момент завершения.

hVosttНе я всё понимаю, но это ппц... Давайте хотя бы с логикой дружить? ))Давай, попробуй :)
...
Рейтинг: 0 / 0
AspNet Core. Как заинжектить текущий контроллер в класс-сервис ?
    #39787162
Дмитрий Мух
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttДмитрий МухК примеру:
"404 Not Found - The server can not find requested resource. In the browser, this means the URL is not recognized."

Какой на фиг на уровне сервиса "URL is not recognized"? На уровне сервиса NotFound - это уже другое :)

Так и не понял при чём тут уровень. URL это идентификатор ресурса, если его нет, значит его нет. Ты ещё возвращай информацию, дескать маршрут найден, сущность найдена, но она удалена. Зачем это клиенту? А что насчёт ИБ? Да и какая разница. Если чего-то нет, то пофигу почему, URL у тебя кривой, сущности такой нет, или она удалена, или ещё +100500 причин. Результат один.

Поэтому. Не гони :)Когда ты ищешь подходящее размещение в отеле тебе тоже по фигу?

А потом жене говоришь:
- Нету
- Почему?
- Да какая разница? Нету и по фигу.

:)
...
Рейтинг: 0 / 0
AspNet Core. Как заинжектить текущий контроллер в класс-сервис ?
    #39787169
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дмитрий МухhVosttА код возврата это что? Не результат операции?Код возврата (англ. Exit status) программы, - это целочисленное значение, которое дочерний процесс возвращает родительскому процессу в момент завершения.

А твой enum это что? не целочисленное значение из справочника?

Дмитрий МухКогда ты ищешь подходящее размещение в отеле тебе тоже по фигу?

Угу, добавляешь товар в корзину, а тебе NotFound. Что за фигня? Товара такого нет? Товар на складе кончился? Или разработчик ошибся и не тот ИД передал, не тот URL вызвал? Какая пользователю разница? ))

Или давай так. Ты оформляешь перемещение товара со склада на другой склад, а тебе NotFound. Что? Товара такого нет? Исходного склада нет? Целевого склада нет?

И не надо пыль в глаза пускать, тут всё понятно для чего эти все enum-ы у тебя. Ты дёргаешь REST и передаёшь его через свой слой OperationResult. Зачем выдумывать какие-то высокие материи?

По мне подход имеет право на жизнь, но гордиться тут совершенно не чем, очередные нагромождения костылей, и не способность спроектировать нормальный слой логики.
...
Рейтинг: 0 / 0
AspNet Core. Как заинжектить текущий контроллер в класс-сервис ?
    #39787174
Дмитрий Мух
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttДмитрий Мухпропущено...
Код возврата (англ. Exit status) программы, - это целочисленное значение, которое дочерний процесс возвращает родительскому процессу в момент завершения.

А твой enum это что?
не целочисленное значение из справочника?
От этого он не становится кодом возврата. До абсурда-то зачем скатываться? :)
...
Рейтинг: 0 / 0
AspNet Core. Как заинжектить текущий контроллер в класс-сервис ?
    #39787175
Дмитрий Мух
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttДмитрий МухКогда ты ищешь подходящее размещение в отеле тебе тоже по фигу?

Угу, добавляешь товар в корзину, а тебе NotFound. Что за фигня? Товара такого нет? Товар на складе кончился? Или разработчик ошибся и не тот ИД передал, не тот URL вызвал? Какая пользователю разница? ))

Или давай так. Ты оформляешь перемещение товара со склада на другой склад, а тебе NotFound. Что? Товара такого нет? Исходного склада нет? Целевого склада нет?

И не надо пыль в глаза пускать, тут всё понятно для чего эти все enum-ы у тебя. Ты дёргаешь REST и передаёшь его через свой слой OperationResult. Зачем выдумывать какие-то высокие материи?

По мне подход имеет право на жизнь, но гордиться тут совершенно не чем, очередные нагромождения костылей, и не способность спроектировать нормальный слой логики.
Ты чушь какую-то понаписал. Нормальные аргументы у тебя есть? А не очередное: "Хвост считает, что это говно и точка"? :)
...
Рейтинг: 0 / 0
AspNet Core. Как заинжектить текущий контроллер в класс-сервис ?
    #39787176
Дмитрий Мух
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
The Task<TResult> class represents a single operation that returns a value and that usually executes asynchronously.
Task<TResult> objects are one of the central components of the task-based asynchronous pattern first introduced in the .NET Framework 4.
Because the work performed by a Task<TResult> object typically executes asynchronously on a thread pool thread rather than synchronously on the main application thread, you can use the Status property, as well as the IsCanceled , IsCompleted , and IsFaulted properties, to determine the state of a task. Most commonly, a lambda expression is used to specify the work that the task is to perform.


Какие-то костыли классом описывать результат операции. Со статусом в виде перечисления, значения в виде свойства, возможного исключением в виде другого свойства...

...
Рейтинг: 0 / 0
AspNet Core. Как заинжектить текущий контроллер в класс-сервис ?
    #39787180
Дмитрий Мух
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
AspNet Core. Как заинжектить текущий контроллер в класс-сервис ?
    #39789302
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дмитрий МухОт этого он не становится кодом возврата. До абсурда-то зачем скатываться? :)

Свой оверхед ты абсурдом не считаешь )


Дмитрий МухТы чушь какую-то понаписал. Нормальные аргументы у тебя есть? А не очередное: "Хвост считает, что это говно и точка"? :)

Нет конечно, откуда...


Дмитрий МухКакие-то костыли классом описывать результат операции. Со статусом в виде перечисления, значения в виде свойства, возможного исключением в виде другого свойства...

Ты передёргиваешь. Твоё перечисление и сам результат это конкретно, в упор, результат выполнения HTTP метода. Точка. Все эти обвесы в виде енамов и расширений, это какие-то костыли с непонятным назначением.

Насчёт тасков, тут свой типа результата под конкретную логику управления задачами. А у тебя один под любую, да и ещё явный HTTP-like, что прямо говорит о том, что абстракция высосана из корявого пальца.

Решение как решение, очередное нагромождение костылей )
...
Рейтинг: 0 / 0
AspNet Core. Как заинжектить текущий контроллер в класс-сервис ?
    #39789303
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дмитрий Мух

https://vimeo.com/97344498

очередное волшебство паттерн матчинга.

осталось только понять как сопровождать это уг, когда ты понятия не имеешь, какие паттерны тебе вернуться и какие вообще жизнеспособны. писать весело, безусловно. поддерживать? нафиг такое надо... :)
...
Рейтинг: 0 / 0
AspNet Core. Как заинжектить текущий контроллер в класс-сервис ?
    #39789445
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVostt,

нет никакого оверхеда, никаких костылей, никакого HTTP-like
просто тебе тупо не нравится

ну не нравится, так не нравится, не используй, делов-то
...
Рейтинг: 0 / 0
AspNet Core. Как заинжектить текущий контроллер в класс-сервис ?
    #39789447
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttосталось только понять как сопровождать
И какие сложности ты видишь в сопровождении?
Конструктив будет, или только бессмысленный и бесполезный скепсис?
...
Рейтинг: 0 / 0
AspNet Core. Как заинжектить текущий контроллер в класс-сервис ?
    #39789467
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
YouTube Video
...
Рейтинг: 0 / 0
AspNet Core. Как заинжектить текущий контроллер в класс-сервис ?
    #39792804
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANAнет никакого оверхеда, никаких костылей, никакого HTTP-like
просто тебе тупо не нравится

ну не нравится, так не нравится, не используй, делов-то

ну это из разряда "не доросли вы ещё до моей музыки" :)

skyANAИ какие сложности ты видишь в сопровождении?

очевидные. обсуждалось уже и не раз.


skyANAКонструктив будет, или только бессмысленный и бесполезный скепсис?

какой смысл мне повторяться? я уже примеры выше приводил, и мог бы ещё аргументировать и дискутировать, если бы ты с совершенно неуместной миной "гуру" не игнорил мои аргументы :)

видос с рельсами тут вообще не в тему.
...
Рейтинг: 0 / 0
AspNet Core. Как заинжектить текущий контроллер в класс-сервис ?
    #39792834
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVostt,

ладно, продолжу-ка я использовать данный подход, пока сам не доберусь до "очевидных" проблем в сопровождении
пока не добрался
...
Рейтинг: 0 / 0
AspNet Core. Как заинжектить текущий контроллер в класс-сервис ?
    #39792867
fkthat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дмитрий Мух- Да какая разница? Нету и по фигу.
А, если честно, то какая разница? Я иду в магаз за молоком а там его нету - меня если честно вообще не волнует почему - корова у них не подоилась, или машина, которая привозит сломалась - что мне за печаль до этого?
...
Рейтинг: 0 / 0
AspNet Core. Как заинжектить текущий контроллер в класс-сервис ?
    #39792873
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дмитрий МухКогда ты ищешь подходящее размещение в отеле
fkthatЯ иду в магаз за молоком
Действительно, какая в принципе разница... Всё это HTTP-like
...
Рейтинг: 0 / 0
AspNet Core. Как заинжектить текущий контроллер в класс-сервис ?
    #39792878
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
- Жена, молока там нету
- Где там?
- Да какая разница? Нету
...
Рейтинг: 0 / 0
AspNet Core. Как заинжектить текущий контроллер в класс-сервис ?
    #39792915
fkthat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANA- Жена, молока там нету
- Где там?
- Да какая разница? Нету

"Где там?" это как раз 404. Т.ч. все норм. А вот "Почему" это был бы ну очень странный вопрос. А вы, наверное, когда нужной еды в магазине не находите, то устраиваете расследованиие по всей его цепочке от поля/фермы и до магазина? Завидую тем, у кого столько свободного времени.
...
Рейтинг: 0 / 0
AspNet Core. Как заинжектить текущий контроллер в класс-сервис ?
    #39792917
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
fkthatskyANA- Жена, молока там нету
- Где там?
- Да какая разница? Нету

"Где там?" это как раз 404. Т.ч. все норм. А вот "Почему" это был бы ну очень странный вопрос. А вы, наверное, когда нужной еды в магазине не находите, то устраиваете расследованиие по всей его цепочке от поля/фермы и до магазина? Завидую тем, у кого столько свободного времени.
Я когда не нахожу то, что мне надо в одном магазине, то иду в другой, а не домой.
...
Рейтинг: 0 / 0
AspNet Core. Как заинжектить текущий контроллер в класс-сервис ?
    #39792934
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
fkthat,
Странное обсуждаем.
404 это исключительная ситуация. Это exe вызывает dll, а метода давно нету.
...
Рейтинг: 0 / 0
AspNet Core. Как заинжектить текущий контроллер в класс-сервис ?
    #39792936
PinkCat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123,

Это exe вызывает dll, а метода давно нету
----
Это - 500...
...
Рейтинг: 0 / 0
AspNet Core. Как заинжектить текущий контроллер в класс-сервис ?
    #39792949
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PinkCat,
)))
...
Рейтинг: 0 / 0
AspNet Core. Как заинжектить текущий контроллер в класс-сервис ?
    #39792952
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PinkCat,
У тебя +500 или http.error=500
)))
...
Рейтинг: 0 / 0
AspNet Core. Как заинжектить текущий контроллер в класс-сервис ?
    #39792988
fkthat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123fkthat,
Странное обсуждаем.
404 это исключительная ситуация. Это exe вызывает dll, а метода давно нету.
Чо? Какое ДЛЛ, какое ЕКЗЕ. Вбил криворукий руками урл в адресной строке несуществующий - что же тут исключительного.
...
Рейтинг: 0 / 0
AspNet Core. Как заинжектить текущий контроллер в класс-сервис ?
    #39793005
PinkCat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
fkthat,

Вбил криворукий руками урл в адресной строке несуществующий
-----
Не-не, не так - вот сервис сформировал урлу и получил... 404.
Всегда было - данные, а сегодня - 404...
А всего-то тупорылый админ перересайзил пулл динамических ипов...
...
Рейтинг: 0 / 0
AspNet Core. Как заинжектить текущий контроллер в класс-сервис ?
    #39793024
fkthat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PinkCatfkthat,

Вбил криворукий руками урл в адресной строке несуществующий
-----
Не-не, не так - вот сервис сформировал урлу и получил... 404.
Всегда было - данные, а сегодня - 404...
А всего-то тупорылый админ перересайзил пулл динамических ипов...

Тогда вообще будет иксепшен - не будет ни 404 ни 100500. Потому что не будет коннекта к серверу.
...
Рейтинг: 0 / 0
AspNet Core. Как заинжектить текущий контроллер в класс-сервис ?
    #39793029
fkthat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вообще, если это так нужно, то всегда можно в боди ответа 404 писать что угодно в любом формате. Это полностью в рамках рфц.
...
Рейтинг: 0 / 0
AspNet Core. Как заинжектить текущий контроллер в класс-сервис ?
    #39793064
PinkCat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
fkthat,

Потому что не будет коннекта к серверу.
-----
А кто сказал что на новом месте нет сервера? Они же по дефаулту ставятся...
...
Рейтинг: 0 / 0
AspNet Core. Как заинжектить текущий контроллер в класс-сервис ?
    #39793100
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
fkthatPetro123fkthat,
Странное обсуждаем.
404 это исключительная ситуация. Это exe вызывает dll, а метода давно нету.
Чо? Какое ДЛЛ, какое ЕКЗЕ. Вбил криворукий руками урл в адресной строке несуществующий - что же тут исключительного.
Урл в веб это поолный аналог названий методов с параметрами после знака вопроса. Веб API.
...
Рейтинг: 0 / 0
AspNet Core. Как заинжектить текущий контроллер в класс-сервис ?
    #39793102
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
fkthatВбил криворукий руками урл впрооще - сохранил на рабочий стол и через год кликнул. А api ака методы уже не те.
...
Рейтинг: 0 / 0
AspNet Core. Как заинжектить текущий контроллер в класс-сервис ?
    #39793112
fkthat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123Урл в веб это поолный аналог названий методов с параметрами после знака вопроса. Веб API.

Нет, скорее, урл - это ид некоторой сущности, или коллекции сущностей, а параметры запроса - некоторые опции представления этой сущности или коллекции. Так более по РЕСТ. А то, что вы описали - это чисто РПЦ подход, что диаметрально.
...
Рейтинг: 0 / 0
AspNet Core. Как заинжектить текущий контроллер в класс-сервис ?
    #39793117
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
fkthatэто ид некоторой сущностида. Строковое id это как раз символьное id метода.
URI.
Контракт между клиентом и сервером.
Я остаюсь при своем имхо)
Главное что 404 это исключение.
...
Рейтинг: 0 / 0
AspNet Core. Как заинжектить текущий контроллер в класс-сервис ?
    #39793120
fkthat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123,

РЕСТ он и хорош, что очень простой и интуитивно понятный. В тех же статусах ответа, например:

GET /orders/4269?blabla=bla

200 - все ок - получай, смотри
404 - заказа 4269 вообще в природе нет
403 - заказ такой есть, но хрен тебе можно его смотреть
400 - вроде все нормально, но, ты, чувак, после вопроса какую-то херню написал.
...
Рейтинг: 0 / 0
AspNet Core. Как заинжектить текущий контроллер в класс-сервис ?
    #39793122
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
fkthatпараметры запроса - некоторые опции представления этой сущности или коллекции.кстати, на POST какое там представление View? Как раз таки методы).
...
Рейтинг: 0 / 0
AspNet Core. Как заинжектить текущий контроллер в класс-сервис ?
    #39793126
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
fkthat404 - заказа 4269 вообще в природе нетну, мы же ASP рассматриваем. А ты взял пример ангуляра и логики на клиенте.
При ASP не ходят 404 на клиента.
...
Рейтинг: 0 / 0
AspNet Core. Как заинжектить текущий контроллер в класс-сервис ?
    #39793128
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
fkthat,
На sql.ru создай 404.
Исключительная ситуация.
...
Рейтинг: 0 / 0
AspNet Core. Как заинжектить текущий контроллер в класс-сервис ?
    #39793130
fkthat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123fkthatпараметры запроса - некоторые опции представления этой сущности или коллекции.кстати, на POST какое там представление View? Как раз таки методы).

POST - cоздание новой сущности-ресурса, представление (данные) которого при этом передаются в теле запроса. Аналогично PUT (PATCH) - обновление ресурса, соответствующего урлу запроса данными из тела запроса, DELETE - удаление ресурса, e.g. DELETE /orders/4269
...
Рейтинг: 0 / 0
AspNet Core. Как заинжектить текущий контроллер в класс-сервис ?
    #39793132
fkthat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123,

В общем-то достаточно общая тема, когда реально нужен РПЦ, но хочеться чистый РЕСТ, но, в принципе, можно решить просто как бы начав думать немного по-другому, типа, что "все что угодно есть ресурс" и рассматривать сам вызов команды, как ресурс. Например:

POST /rpc
Content-type: application/json

{
"command": "MoneyTransfer",
"params": {
"from": "bla-bla",
"to": "bla-bla-bla",
"amount": 100500
}
}

Тут вопрос просто в том, насколько хочется оставаться в рамках "чистого РЕСТ".
...
Рейтинг: 0 / 0
AspNet Core. Как заинжектить текущий контроллер в класс-сервис ?
    #39793134
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
fkthatPOST - cоздание новой сущности-ресурса,убери слово сущность и будет как у меня - это команды серверу или методы)))
Удачи!
...
Рейтинг: 0 / 0
AspNet Core. Как заинжектить текущий контроллер в класс-сервис ?
    #39793136
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
fkthatрамках "чистого РЕСТ".чистого никогда нет. Это как коммунизм(мечта)
...
Рейтинг: 0 / 0
AspNet Core. Как заинжектить текущий контроллер в класс-сервис ?
    #39793182
fkthat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123fkthatPOST - cоздание новой сущности-ресурса,убери слово сущность и будет как у меня - это команды серверу или методы)))
Удачи!

Вот блин, ну нет в РЕСТе такого как "команда серверу или метод". Вот, смотри, если провести параллель с БД, то, вот, вызов хранимки - это РПЦ , а СRUD - это РЕСТ. Вот, посоветую книгу, хотя она немного старенькая, т.ч. её по дигонали читать стоит, но, стоящая, тем не менее: https://goo.gl/SCjCw6
...
Рейтинг: 0 / 0
AspNet Core. Как заинжектить текущий контроллер в класс-сервис ?
    #39793224
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
fkthat,
Мы не про РЕСТ же тут.
А про аналогии. Про URI, контракты.
Это шире чем рест.
...
https://www.sql.ru/имя_приложения/показать?id=123
Не видно аналогию URI с API ака методами и параметрами?
Согласен что ошибка в синтаксисе выйдет в ошибку так же как и при вызове dll?
Да, я тут натянул сову на глобус, но аналогии всегда натяжка.
Имхо.
...
Рейтинг: 0 / 0
AspNet Core. Как заинжектить текущий контроллер в класс-сервис ?
    #39793235
fkthat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123fkthat,
Мы не про РЕСТ же тут.
А про аналогии. Про URI, контракты.
Это шире чем рест.
...
https://www.sql.ru/имя_приложения/показать?id=123
Не видно аналогию URI с API ака методами и параметрами?
Согласен что ошибка в синтаксисе выйдет в ошибку так же как и при вызове dll?
Да, я тут натянул сову на глобус, но аналогии всегда натяжка.
Имхо.

Ну, скуль, как бы и не заявляет, что он РЕСТ АПИ. Хотя, строго говоря, нет такого как "REST - не REST". Формально, все что использует HTTP это REST. Есть, просто некая модель "REST maturity level", где градации (по-моему от 1 до 5) по тому, насколько АПИ системы использует возможности HTTP. SOAP, например, там низший, из касты неприкасаемых Там тупой POST на один урл, вся инфа в боди запроса в ХМЛ. Но, дальше уже начинается подъем из днища
...
Рейтинг: 0 / 0
AspNet Core. Как заинжектить текущий контроллер в класс-сервис ?
    #39793242
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
fkthat,
Да. Рест, там 5 или 7 принципов. Многие стремятся но до конца не выгодно. Это как нормализация базы. Тоже до конца не выгодно.
...
Рейтинг: 0 / 0
AspNet Core. Как заинжектить текущий контроллер в класс-сервис ?
    #39793350
fkthat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123fkthat,
Да. Рест, там 5 или 7 принципов. Многие стремятся но до конца не выгодно. Это как нормализация базы. Тоже до конца не выгодно.

Ну, спрашиваешь, просто, у него, чем 3НФ отличается от НФБК (и, главное, еще пример, чтобы было в 3НФ, но не было в НФБК), и все :))
...
Рейтинг: 0 / 0
177 сообщений из 177, показаны все 8 страниц
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / AspNet Core. Как заинжектить текущий контроллер в класс-сервис ?
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]