All streams
Search
Write a publication
Pull to refresh
17
0
Смирнов Сергей @Serginio1

Программист

Send message
>>С самого начала мы отвергли идею какой-либо автоматической (хотя бы частичной) конверсии C++

Я понимаю, что это был 2006 год. Но сейчас вроде

Asm.js стал ещё быстрее

Например, после компиляции кода C++ в Asm.js с помощью компилятора Emscripten раньше потеря производительности была примерно двукратной, теперь же код Asm.js медленнее нативной программы не более чем в полтора раза.
1С этим не гордится. Это мои статьи.
Как и эти
Кроссплатформенное использование классов .Net в 1С через Native ВК. Или замена COM на Linux II

1С, Linux, Excel, Word, OpenXML, ADO, Net Core

Которые есть и на этой площадке Мои публикации
К моему огромному сожалению интеграция с .Net Core 1C не нужно. А вот например Samsung вполне использует Tizen C# API reference
Но вот для модальных и для асинхронных методов нужно вводить аналог C# async await.
О замыканиях не просит только ленивый. Опять же в управляемых формах серверный и клиентский код можно писать в одном модуле. И это прекрасно, но еще было бы эффективнее вызывать серверный код в виде замыкания, где бы захватывались переменные метода. Это бы значительно сократило время написания.

значение=ВызватьСерверныйМетод({ код который выполняется на сервере})

Ну и про свои чаяния про .Net Core в 1С промолчу
Которую забросили. Только добавили возможность передачи двоичных данных. Но вот, то что просят многие это возврат из функций объектов ВК и передача в параметрах объектов ВК (и объектов 1С как это сделано в COM варианте) даже в планах нет. А там особо то ничего и не нужно делать. Просто подсчет ссылок только на стороне 1С и время жизни только на время вызова метода.
То есть для ДД это можно, а для других объектов 1С это нельзя (в том числе и объектов ВК).
Даже First не нужен
public static IEnumerable<T> Compose<T, Y>(this IEnumerable<T> src, Expression<Func<T, Y>> propertyExpression, Expression<Func<Y, bool>> func)
        {
            return src.Where(Expression.Lambda<Func<T, bool>>(Expression.Invoke(func, propertyExpression.Body), propertyExpression.Parameters).Compile());
        }


Я к тому, что когда начал разбираться с примером, то решил восполнить свои пробелы в Expression и для меня пример Динамическое построение Linq запроса

Показался более понятным. А автору большой респект за Expression/ Кармы не хватает, а так бы плюсик поставил.
А чем это удобнее
 public static IEnumerable<T> Compose<T, Y>(this IEnumerable<T> src, Expression<Func<T, Y>> propertyExpression, Expression<Func<Y, bool>> func)
        {
            return src.Where(Expression.Lambda<Func<T, bool>>(Expression.Invoke(func, propertyExpression.Body), propertyExpression.Parameters.First()).Compile());
        }



То же самое, только кода меньше.
Проверил на IEnumerable
public  class TestExpression
    {
       public DateTime Created { get; set; }
      
        public TestExpression(DateTime Created)
        {

            this.Created = Created;

        }

    }

    public  static class РасширениеLinq
        {

        public static IEnumerable<T> Compose<T, Y>(this IEnumerable<T> src, Expression<Func<T, Y>> propertyExpression, Expression<Func<Y, bool>> func)
        {
            return src.Where(Expression.Lambda<Func<T, bool>>(Expression.Invoke(func, propertyExpression.Body), propertyExpression.Parameters.First()).Compile());
        }

        public static IEnumerable<T> Beetwen<T>(this IEnumerable<T> src, System.Linq.Expressions.Expression<Func<T, DateTime>> propertyExpression, DateTime from, DateTime to)
    {
        System.Linq.Expressions.Expression<Func<DateTime, bool>> func = d => d >= from && d <= to;
            
        return src.Where(System.Linq.Expressions.Expression.Lambda<Func<T, bool>>(System.Linq.Expressions.Expression.Invoke(func, propertyExpression.Body), propertyExpression.Parameters.First()).Compile());
    }

        public static IEnumerable<T> Beetwen2<T>(this IEnumerable<T> src, System.Linq.Expressions.Expression<Func<T, DateTime>> propertyExpression, DateTime from, DateTime to)
        {
            System.Linq.Expressions.Expression<Func<DateTime, bool>> func = d => d >= from && d <= to;

            return src.Compose(propertyExpression, func);
        }

    }


И использование
  var Дата = DateTime.Now;
            var d = new List<TestExpression>()
            {

                new TestExpression(DateTime.Now)
            };

            var res = d.Beetwen2(_ => _.Created, Дата.AddDays(-1), Дата.AddDays(1)).FirstOrDefault();
            res = d.Beetwen2(_ => _.Created, Дата.AddDays(1), Дата.AddDays(1)).FirstOrDefault();
Ну тут уж на любителя. Написать один раз
С таким же успехом можнгно И отдельную Функцию Написать

  public static IQueryable<T> Compose<T,Y>(this IQueryable<T> src,Expression<Func<T, Y>> propertyExpression,Expression<Func<Y, bool>> func )
{
return src.Where(Expression.Lambda<Func<T, bool>>(Expression.Invoke(func, propertyExpression.Body), propertyExpression.Parameters.First()));
}


Сейчас проверю
Это не принципиально.
Главное использование

dbContext.Products
    .NiceRating(x => x.Category)


А можно ссылочку на Compose
И соответственно вызов

dbContext.Products
    .NiceRating(x => x.Category)

Спасибо за статью. Решил свой пробел в Expression восполнить. Поэто му по мотивам
Динамическое построение Linq запроса

По аналогии
public static IQueryable<T> Beetwen<T>(this IQueryable<T> src, Expression<Func<T, DateTime>> propertyExpression, DateTime from, DateTime to)
{
    Expression<Func<DateTime, bool>> func = d => d >= from && d <= to;

    return src.Where(Expression.Lambda<Func<T, bool>>(Expression.Invoke(func, propertyExpression.Body), propertyExpression.Parameters.First()));
} 


сделать

public static IQueryable<T> NiceRating<T>(this IQueryable<T> q,Expression<Func<T, Category>> propertyExpression) 
     {
        Expression<Func<Category, bool>> func = x => x.Rating > 50;
 return src.Where(Expression.Lambda<Func<T, bool>>(Expression.Invoke(func, propertyExpression.Body), propertyExpression.Parameters.First()));
    }



Прошу прощения, за некомпетентность. Решил наверстать упущенное
https://github.com/aspnet/SignalR-Server/blob/dev/samples/SignalRSample.Web/Startup.cs

Ну да. из вот варианты
 app.UseWebSockets();

            app.UseSignalR<RawConnection>("/raw-connection");

            app.UseSignalR();
Добавлю, что я сделал SignalR сервер на ASP.NET Core. При этом под хамарин есть клиент, а для .Net Core нет даже альфы пока. Вот ссылка SignalRSample.Web/

https://chsakell.com/2016/10/10/real-time-applications-using-asp-net-core-signalr-angular/
https://radu-matei.github.io/blog/aspnet-core-mvc-signalr/
По ссылочке
AspNetCoreModule
Хостирование приложений ASP.NET Core на IIS происходит с помощью нативного модуля IIS под названием AspNetCoreModule, который сконфигурирован таким образом, чтобы перенаправлять запросы на веб-сервер Kestrel. Этот модуль управляет запуском внешнего процесса dotnet.exe, в рамках которого хостируется приложение, и перенаправляет все запросы от IIS к этому хостирующему процессу.


При этом
Публикация на IIS
Традиционно веб-сервер IIS (Internet Information Services) применялся для развертывания веб-приложений. Для хостирования веб-приложений ASP.NET Core также может применяться IIS, только в отличие от предыдущих версий ASP.NET теперь его роль будет сводиться к прокси-серверу. Хостирование приложений ASP.NET Core на IIS происходит с помощью нативного модуля AspNetCoreModule, который сконфигурирован таким образом, чтобы перенаправлять запросы на веб-сервер Kestrel. Этот модуль управляет запуском внешнего процесса dotnet.exe, в рамках которого хостируется приложение, и перенаправляет все запросы от IIS к этому хостирующему процессу.


При этом пул приложения выбирается
В открывшемся окне для параметра Версия среды CLR .NET установим значение Без управляемого кода:
И главное, что им не нужна была совместимость с ASP.NET Core сегодня: за и против
Платформе ASP.NET более 15 лет.  Кроме этого, на момент создания System.Web содержала большое количество кода для поддержки обратной совместимости с классическим ASP. За это время платформа накопила достаточное количество кода, который просто больше уже не нужен и устарел. Microsoft встала перед непростым выбором: отказаться от обратной совместимости или анонсировать новую платформу. Они выбрали второй вариант. Одновременно с этим они должны были отказаться и от существующего runtime. Microsoft всегда была компанией, ориентированной на создание и запуск всего и вся на Windows. Существующая ASP.NET не был исключением. Сейчас ситуация сильно поменялась: значительное место в стратегии компании стали занимать Azure и Linux.

ASP.NET Core – это работа над ошибками классического ASP.NET MVC, возможность начать с чистого листа. Кроме этого, Microsoft также стремится стать такой же популярной, как Ruby и NodeJS среди более юных разработчиков.

— Что значит для нас переход на новую платформу?

— .NET Core не содержит многих компонентов, к которым мы привыкли. Забудьте про System.Web, Web Forms, Transaction Scope, WPF, Win Forms. Их больше нет.
Я не думаю, что для MS интересно делать WPF кроссплатформенным учитывая процент декстопов на котором стоит Windows.
А вот для мобильных устройств будут развивать Xamarin Forms.

А вот для серверов WPF не нужен, а интересны им юниксы линуксы именно из-за облаков.
Я уже давал ссылку на бенчмарки

Кроме того несложно перенести проект на Asp.Net Core Портирование большого проекта на .NET Core

Так или иначе .Net Core будет развиваться бОльшими темпами. За ним будущее.
Ну не в 3 и на Plain Text with HTTP Pipelining
Для Plain Text всего 1.4

Information

Rating
Does not participate
Location
Москва, Москва и Московская обл., Россия
Date of birth
Registered
Activity