-
Notifications
You must be signed in to change notification settings - Fork 55
/
sockets.html
295 lines (197 loc) · 7.7 KB
/
sockets.html
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
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no">
<link rel="stylesheet" href="reveal/css/reveal.css">
<link rel="stylesheet" href="reveal/css/theme/kontur-light.css" id="theme">
<!-- Theme used for syntax highlighting of code -->
<link rel="stylesheet" href="reveal/css/highlight/idea-for-light.css">
<link rel="stylesheet" href="reveal/css/highlight/darkula-for-dark.css">
<!--[if lt IE 9]>
<script src="reveal/js/html5shiv.js"></script>
<![endif]-->
<script defer src="reveal/js/head.min.js"></script>
<script defer src="reveal/js/reveal.js"></script>
<script defer src="reveal/initialize.js"></script>
<script defer src="reveal/js/d3.min.js"></script>
<style>
.slides .center {
text-align: center;
}
</style>
<title>.NET 5</title>
</head>
<body>
<div class="reveal"><div class="slides">
<section data-markdown><script type="text/template">
# .NET 5
</script></section>
<section data-markdown><script type="text/template">
## Что это?
**.NET 5** - развитие .NET Core 3,
поддерживающий миграцию с .NET Framework 4
***
## Зачем?
***
### Особенности .NET Core и .NET 5
- Кроссплатформенность и контейнеры
- Инновация и производительность без обратной совместимости
- Command Line Interface, а не только Visual Studio
- Open source
- Обновляемые кусочки с быстрой разработкой
- Не надеется на GAC - все с собой
***
### Особенности ASP.NET Core
- Linux и контейнеры!
- Производительность!
- Быстро разрабатывается!
- Лучшие практики: Web Api объединен с MVC
---
## Как это работает?
***
### Несколько сред выполнения
**.NET Framework**, **.NET Core** и **.NET 5** — независимые среды выполнения
- API похожи, но все же разные
- В .NET 5 все самое свеженькое
Код, независимый от платформ, надо выделять отдельно!
Для этого есть библиотеки **.NET Standard**
***
### .NET с разными средами выполнения
<p><img src="assets/dotnetdesign.png" width="800"></p>
***
### Версионирование .NET
Язык C# развивается во всех средах выполнения.
Значит могут потребоваться новые особенности среды выполнения
Каждая версия сред выполнения .NET Frameword, .NET Core и .NET 5
поддерживает некоторую версию .NET Standard
***
**.NET Standard**
```txt
netstandard1.0, netstandard1.1, netstandard1.2,
netstandard1.3, netstandard1.4, netstandard1.5, netstandard1.6
netstandard2.0, netstandard2.1
```
**.NET Core**
```txt
netcoreapp1.x: <= netstandard1.6
netcoreapp2.x: <= netstandard2.0
netcoreapp3.x: <= netstandard2.1
```
**.NET Framework**
```txt
net45, net451, net452: <= netstandard1.2
net46, net461, net462: <= netstandard2.0
net47, net471, net472: <= netstandard2.0
net48: <= netstandard2.0
```
[Про версии .NET Standard](https://docs.microsoft.com/ru-ru/dotnet/standard/net-standard)
[Про семантическое версионирование](https://semver.org/lang/ru/)
***
### .NET 5
<p><img src="assets/dotnet5.png" width="800"></p>
***
### .NET 5 вместо .NET Standard
Все же проще разрабатывать одну среду выполнения .NET 5
под несколько платформ, чем много сред разработки и общий стандарт .NET Standard для них.
.NET Standard еще будет востребован, но будущее за .NET 5
***
### Модульность by NuGet
Многое, что было встроено в .NET Framework
**поставляется отдельными NuGet-пакетами**
Большие фреймворки, например, ASP.NET Core,
состоят из многих небольших пакетов
Чтобы обновлять пакеты согласованно,
добавлено понятие **metapackage**: набор пакетов
**ASP.NET Core** — это metapackage
***
### Удобные настройки MSBuild
Теперь почти все файлы внутри папки с файлом проекта
по умолчанию добавляются в проект, причем
- `*.cs` (и файлы других языков) добавляются с компиляцией
- `*.resx` добавляются как ресурсы
Таким образом `*.*proj` нет ничего лишнего!
***
### Можно донастраивать при необходимости
Копирование файла в bin
```
<ItemGroup>
<None Update="image.png">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</None>
</ItemGroup>
```
Можно вернуться к старому поведению
```
<PropertyGroup>
<EnableDefaultCompileItems>false</EnableDefaultCompileItems>
<EnableDefaultItems>false</EnableDefaultItems>
</PropertyGroup>
```
[Подробнее](https://docs.microsoft.com/ru-ru/dotnet/core/tools/csproj)
---
## Command Line Interface
***
### Команда dotnet
Создавать проекты и решения, добавлять зависимости,
строить и запускать можно через консоль!
```bash
# Узнать доступные команды
dotnet --help
# Узнать список шаблонов проектов
dotnet new --help
```
***
### Создание решения через CLI
```bash
# Создание решения с тестами на NUnit
dotnet new console -n Greeting
dotnet new sln -n Demo
dotnet sln add Greeting
dotnet new nunit -n Tests
dotnet sln add Tests
dotnet add Tests reference Greeting
dotnet restore
dotnet build
# Запуск с передачей параметров приложению
dotnet run -p Greeting -- 5 10
```
***
### Так, а где мой exe-шник?
***
### Публикация
```bash
dotnet publish -f net5.0 -r win10-x64 Greeting
```
Коды доступных [фреймворков](https://docs.microsoft.com/ru-ru/dotnet/standard/frameworks)
Коды доступных [сред выполнения](https://docs.microsoft.com/ru-ru/dotnet/core/rid-catalog)
***
### Параметры публикации в проекте
```xml
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<OutputType>Exe</OutputType>
<TargetFramework>net5.0</TargetFramework>
<RuntimeIdentifiers>win10-x64;osx.10.11-x64</RuntimeIdentifiers>
</PropertyGroup>
</Project>
```
***
### Расширение с помощью tools
```bash
### Встроенные инструменты для Entity Framework
dotnet ef -h
### Установка и использование генератора кода для ASP.NET Core
dotnet tool install --global dotnet-aspnet-codegenerator
dotnet aspnet-codegenerator view List List -udl -outDir Views/User -m User
dotnet aspnet-codegenerator view Details Details -udl -outDir Views/User -m User
### Установка и использование поисковика NuGet-пакетов
dotnet tool install --global dotnet-search
dotnet search FluentAssertions
```
---
## Вопросы?
</script></section>
</div></div>
</body>
</html>