最有趣的DotNext 2018报告概述:EastBanc Technologies版本

您好,哈布罗夫斯克市民!

我们从DotNext .NET开发人员的会议中回来,并诚实地分享了我们对最难忘的报告的印象。 我们希望我们的评论对那些观看表演视频的人有用。

部分演示文稿已发布在会议网站上,因此我们在其中添加了一些评论链接。



第一天


在.NET项目中使用Tarantool-Anatoly Popov( 演示


该报告首先回顾了SQL-> NoSQL-> NewSQL数据库的发展及其优缺点。 Anatoly告诉我们,为什么实际上对NewSQL的需求已经成熟-这是一种尝试跨越NoSQL性能和SQL查询语言的尝试,为此已有数十亿个有用的工具。

提到了有关Tarantool的以下功能-记录存储为任意长度的元组。 在后台,Tarantool使用LSM树。

该报告的主要部分,Anatoly谈到了.NET的Tarantool驱动程序的实现中为性能而进行的斗争。 只读跨度和IMemoryOwner池的新抽象开始生效。 该标准采用200k RPS,它提供了Golang驱动程序,到目前为止已成功实现了1/3的结果。 发言者保证他将逐步改善指标,但具体的未来计划和前景仍然迷茫。

.NET Core内部的优化-Egor Bogatov


耶戈尔以适当的幽默感围绕着关于单声道和ryuJIT胆量的故事,这与穆特尔(Mutel)的同一个Unity不同,后者听起来很困。

Egor涵盖了单声道中的计算自动矢量化的主题,还谈到了SSE-AVX指令,现在可以直接从C#获得。

展望未来,他告诉我们在.Net Core 3层编译中等待着我们,即 像Java中的服务器一样,一个单独的重启动将在运行时出现。 在ryuJIT中,期望对循环展开和转义分析进行新的优化(后者是由学生看到的,让github帮助他)。

我们的评论:如今,由于Java世界和经典静态编译器的许多重要优化仍未在.Net中应用,因此,仍然需要为进一步提高平台性能而保留大量资源。

使用SAFE-Stack进行现代Web开发-Steffen Forkmann


Stefan是F#语言的热心辩护律师。 在报告中,他分享了他在完全基于功能规范的基础上进行Web开发的经验。 在这里,您既具有功能性MVC Web框架(Saturn),又具有用于将F#转换为JS的寓言,以及类似Elm的UI,并且用非常好的和非常好的短语进行了很好的调味。 总体而言,该报告还不错,证实了替代宗教的超自然能力。

创建飞机模型验证Xamarin应用程序-Gerald Versluis( 演示


根据表示方法,该报告与SAFE-Stack报告非常相似,并且看起来像一个“ Smack”程序:首先,将用于检测Internet访问的Essentials组件与应用程序一起放在板上,然后通过Refit传递REST API,冷却Akavache缓存中的数据,将Polly撒在顶部用于对网络请求进行巧妙的错误处理。 这并非没有荷兰人的讽刺意味,因为应用程序在模拟器中不断随机崩溃。

ASP.NET Core多租户体系结构:挑战和解决方案-HalilİbrahimKalkan( 演示


该报告描述了多租户应用程序体系结构的所有主要功能。

主要思想是,当一家公司开发SAAS应用程序时,它想充分利用基础架构。 因此,它在同一台服务器上有多个客户端,因此该服务器不会处于空闲状态。 这引起与以下事实有关的问题:不同客户端的所有数据好像都在同一锅炉中。 该报告重点介绍了能够可靠访问此数据的解决方案。

一份出色的报告,其中所有内容均已摆放在架子上。 简单易懂的示例,没有不必要的细节-使用现代模式和方法,它们非常优美地编写。 我高兴地看着。

域驱动的设计:实用主义者的食谱-Alexey Merson( 演示


关于DDD基本概念的出色报告。 首先阅读哪本书:“蓝色”或“红色”? 整个团队如何讲相同的语言? 可以在C#程序中使用西里尔字母命名吗? 如何最终避免害怕分离接口并使域代码独立于应用程序的其余部分? 本报告重点介绍了所有这些带有示例的要点。

阿列克谢(Alexey)强调语言(单一语言)对于实现一个有限上下文的重要性。 他讲述了如何选择“边界上下文”的大小以及可以使用哪种类型的子域。 该报告还说,一个边界上下文等于一个微服务-这与我们在实施项目中的经验紧密相关。

听到球根建筑的本质以及与三层/四层建筑相比的优点,这很有趣。

对于那些刚接触DDD并希望将其整体转移到微服务中的人以及开始开发微服务解决方案的人来说,该报告是理想的。

第二天


实用单元测试-Vladimir Khorikov( 演示


我们认为最好的报告和演讲者之一。

弗拉基米尔在书架上整理了项目测试的真正目的是什么,哪些指标确定测试的质量,各种类型的测试如何与这些指标相对应。 一个人不能不同意所有想法,因此必须看到。

霍里科夫在Pluralsight录制了许多课程-在那找他。 他也有一个不错的博客

即时设计-Maxim Arshinov( 演示


在继续Merson关于DDD的讨论时,Maxim在整个报告重构了更新用户电子邮件的方法时,谈到了从经典代码分层到洋葱体系结构的过渡。 结果是使用了最严格的DTO键入(hi,FSharpForFunAndProfit)的CQRS风格的装饰器(hi,yegor256)管道。

结果,我们收到了现成的操作指南,可以在项目中使用该指南以获得与Max相同的优美代码。

总的来说,该报告充满了有用的想法。 Maxim的教学经验对他的演讲能力有积极影响-听演讲很不错。

在突发编译器的背后,使用LLVM将.NET IL转换为高度优化的本机代码-Alexandre Mutel


显然,Unity致力于A级游戏,因此igrodelov需要更接近C ++的性能。 穆特尔告诉我们他们如何通过突出显示C#语言(HPC#)的子集来取得良好的结果,该子集具有现成的结构,可以有效地使用内存而无需GC和一些熟悉的语言构造。

想法是仅将此子集应用于最昂贵的方法,以使在其他地方,双手一如既往地不打结(在游戏开发人员允许的范围内)。 正在开发一个新的AOT / JIT突发编译器来编译HPC#。 与ryuJIT相比,爆发力在某些综合测试中已经提高了10倍。

所生成的汇编器的示例显示了编译器的聪明程度。 仅解决方案一项,就没有人感到惊讶-IL代码被输入到LLVM中。 还使用第三方高性能库为数学编写了本征函数。

报告很难理解,演讲者太苛刻了。

集群中演员的生活:为什么,何时以及如何-Vagif Abilov( Presentation


报告显示,一半的观​​众坐在F#上。 这也许是本报告中最令人高兴的事情。 表演以关于集群中脑裂的现场高喊结束。 这是光荣的。

如何在负载下生存:容错服务器,智能客户端-Igor Lukanin( 演示


伊戈尔谈到了Kontur项目中的高负荷厨房。 我对该公司在客户端上使用“平衡器”感到惊讶:API发送有关加载群集节点和状态的信息429,具体取决于客户端了解如何分发请求。 他还展示了资源利用率指标以及如何确定一切都好还是坏。 他讲述了如何按超时和客户端引用请求,以及为什么最好按LIFO顺序处理队列。

麦克风由一位经验丰富的演讲者拥有,听Igor感到很舒服。

Dodo IS Performance Architecture-Georgy Polevoy( 演示


起初,该报告似乎很乏味:叙述性的,不确定的幻灯片,技术列表和众所周知的定义的步调不确定。 在某个时候,引起了怀疑:演讲者很快会说,所需要做的只是在入口处排队。 但这不是那么简单。

简要描述该报告,我们可以说它是针对Polly库功能的,例如重试策略,隔离隔板,回退,并且以Dodo Pizza的生平中的优秀示例为基础。

近年来的趋势是在所有地方都使用异步。 但是这种趋势的影响并不明显-这导致服务器资源被“阻塞”。 以前,所有内容都限于线程池。 Web服务器具有固定的线程池,该线程池处理执行同步操作的传入请求。 这限制了服务器上的负载。 当所有工作真正完成时,每个线程都被释放并收到另一个处理请求。

如今,开发人员经常编写异步代码而没有考虑后果。 结果,释放了开始下一个异步任务的Web服务器流,并继续处理越来越多的新请求。 随着时间的流逝,竞争性异步操作的数量正在增长,并且Web服务器继续接受越来越多的请求。

作者在其报告中仅说明了并发性以及为什么应限制并发性。 顺便说一下,Polly库可以帮助完成负载管理和容错的此任务以及其他任务。

通常,即使您不开发高负载服务,也请务必查看此报告。

构建响应式和可伸缩的应用程序-Jeffrey Richter( 演示


这是Jeffrey Richter的相当老的报告。 它可以在互联网上找到至少一年,并且该主题没有新颖性。 但是,地狱,是杰弗里·里希特(Jeffrey Richter)! 我们不禁要听这本书的作者,这本书被认为是任何C#开发人员的圣经。 老杰弗里是一个很好的人,也是一个很好的演讲者。 我们玩得很开心。

Source: https://habr.com/ru/post/zh-CN431332/


All Articles