понедельник, 21 октября 2019 г.

soa

В сервисной архитектуре сложность поддержки растёт экспоненциально с количеством сервисов. Я дам вам инструмент, который позволит значительно замедлить рост этой сложности. Мы поговорим, что можно считать платформой для межсервисного взаимодействия, как она может уже сейчас помочь вам решить проблемы с «наблюдаемостью» сервисов и увеличить надёжность системы, уменьшить объем рутины и снизить Time To Market.

Обсудим плюсы и минусы актуальных протоколов прикладного уровня. Расскажу, почему gRPC — «не вариант», и с какими проблемами вы столкнётесь, если начнёте его использовать.

Доклад будет интересен как тем, кто только начинает свой путь в SOA, так и тем, кто уже хорошо знаком с инструментами OpenAPI, Swagger, gRPC, protobuf. Авторизация запросов, трассировка и логирование, A/B-тестирование, сегментация фич — как получить всё то, что так легко давалось нам в монолите?

четверг, 17 октября 2019 г.

Predicate

https://stackoverflow.com/questions/14297633/c-sharp-pass-lambda-expression-as-method-parameter
public static void Method(Expression<Func<int, bool>> predicate) { 
    int[] number={1,2,3,4,5,6,7,8,9,10};
    var newList = from x in number
                  .Where(predicate.Compile()) //here compile your clausuly
                  select x;
                newList.ToList();//return a new list
    }
Calling method
Method(v => v.Equals(1));
public List<IJob> getJobs(/* i want to pass the lambda expr in here */) {
  using (SqlConnection connection = new SqlConnection(getConnectionString())) {
    connection.Open();
    return connection.Query<FullTimeJob, Student, FullTimeJob>(sql, 
      (job, student) => {         
        job.Student = student;
        job.StudentId = student.Id;
        return job;
        },
        splitOn: "user_id",
        param: parameters).ToList<IJob>();   
  }   
public string Name {get;set;}

public static List<Class> GetList(Expression<Func<Class, bool>> predicate)
    {
        List<Class> c = new List<Class>();
        c.Add(new Class("name1"));
        c.Add(new Class("name2"));

        var f = from g in c.
                Where (predicate.Compile())
                select g;
        f.ToList();

       return f;
    }
Calling method
Class.GetList(c=>c.Name=="yourname");

понедельник, 14 октября 2019 г.

Serialization/DeSerialization List

https://stackoverflow.com/questions/608110/is-it-possible-to-deserialize-xml-into-listt

https://docs.microsoft.com/ru-ru/dotnet/standard/serialization/controlling-xml-serialization-using-attributes

private void Serialize<T>(XDocument doc, List<T> paramList)
        {
            var serializer = new System.Xml.Serialization.XmlSerializer(paramList.GetType());
            var writer = doc.CreateWriter();
            serializer.Serialize(writer, paramList);
            writer.Close();
        }

        private List<T> Deserialize<T>(XDocument doc)
        {
            var serializer = new System.Xml.Serialization.XmlSerializer(typeof(List<T>));
            var reader = doc.CreateReader();
            var result = (List<T>)serializer.Deserialize(reader);
            reader.Close();
            return result;
        }

https://docs.microsoft.com/ru-ru/dotnet/standard/serialization/examples-of-xml-serialization