Diese Präsentation wurde erfolgreich gemeldet.
Die SlideShare-Präsentation wird heruntergeladen. ×

Connect() Mini 2016

Anzeige
Anzeige
Anzeige
Anzeige
Anzeige
Anzeige
Anzeige
Anzeige
Anzeige
Anzeige
Anzeige
Anzeige
Wird geladen in …3
×

Hier ansehen

1 von 99 Anzeige

Weitere Verwandte Inhalte

Diashows für Sie (19)

Anzeige

Ähnlich wie Connect() Mini 2016 (20)

Weitere von Jeff Chu (20)

Anzeige

Aktuellste (20)

Connect() Mini 2016

  1. 1. Mini 
  2. 2. 61%YoY Growth .NET Active Developers (VS 2012+) 40%.NET Core downloads by new developers 62% GitHub contributions from outside of Microsoft (corefx / coreclr repos) 0 100 200 300 400 500 600 700 800 900 Jan Feb Mar Apr May Jun Jul Aug Oct Nov Dec Jan Feb Mar Apr May Jun Jul Aug Oct Nov Dec Jan Feb Mar Apr May Jun Jul Aug Qtr1 Qtr2 Qtr3 Qtr4 Qtr1 Qtr2 Qtr3 Qtr4 Qtr1 Qtr2 Qtr3 2014 2015 2016 Community PRs by month
  3. 3. .NET in 2015
  4. 4. .NET in 2016
  5. 5. .NET STANDARD LIBRARY
  6. 6. .NET STANDARD LIBRARY
  7. 7. .NET STANDARD LIBRARY
  8. 8. Plain Text Request Per Second
  9. 9. https://www.techempower.com/benchmarks
  10. 10. http://example.com https://example.com
  11. 11. http://example.com https://example.com
  12. 12. @await Component.InvokeAsync("Copyright", new { website = "example.com", year = 2016 })
  13. 13. <vc:copyright website=“example.com” year>< vc:copyright>
  14. 14. http://example.com https://example.com
  15. 15. • Use the current release to get the latest features • Supported as long as you keep updating to the latest • Use the Long Term Support release as the most stable platform • LTS is fully supported for 3 years and receives regular important updates • You can mix and match your strategy (even in the same machine!) Current (1.1) Long Term Support (LTS) 1.0
  16. 16. .NET STANDARD LIBRARY
  17. 17. .NET STANDARD LIBRARY
  18. 18. Primitives • Collections • Reflection • Interop • LinqCORE Threads • Thread Pool • TasksTHREADING Files • Compression • MMFIO Sockets • Http • Mail • WebSocketsNETWORKING BinaryFormatter • Data Contract • XMLSERILIZATION XLinq • XML Document • XPath • Schema • XSLXML
  19. 19. MY .NET FRAMEWORK APP MY STANDARD LIBRARY MY .NET CORE APP MY XAMARIN APP
  20. 20. Create Cluster
  21. 21. Build/CI, Integrate, Test Monitor and Diagnose Production environments Run, Manage Container Service Service Fabric Batch App Services coming soon … … Azure Container Registry Code Run Validate Debug Inner-Loop CD, Deploy Source Code Control (SCC)
  22. 22. Public Preview • November GA • Spring ‘17 aka.ms/AzureContainerRegistry
  23. 23. Bot Framework Your bots – wherever your users are talking. Build and connect intelligent bots to interact with your users naturally wherever they are, from text/SMS to Skype, Slack, Messenger, Office 365 mail and other popular services.
  24. 24. Channel support Direct Line support Cognitive Services Embedded web chat API
  25. 25. https://channel9.msdn.com/Events/Connect/2016
  26. 26. int[] numbers = { 1, 2, 4, 8, 16, 32 };
  27. 27. int[] numbers = { 0b1, 2, 4, 8, 16, 32 };
  28. 28. int[] numbers = { 0b1, 0b10, 4, 8, 16, 32 };
  29. 29. int[] numbers = { 0b1, 0b10, 0b100, 8, 16, 32 };
  30. 30. int[] numbers = { 0b1, 0b10, 0b100, 0b1000, 16, 32 };
  31. 31. int[] numbers = { 0b1, 0b10, 0b100, 0b1000, 0b10000, 32 };
  32. 32. int[] numbers = { 0b1, 0b10, 0b100, 0b1000, 0b1_0000, 32 };
  33. 33. int[] numbers = { 0b1, 0b10, 0b100, 0b1000, 0b1_0000, 3_2 };
  34. 34. int[] numbers = { 0b1, 0b10, 0b100, 0b1000, 0b1_0000, 3_______2 };
  35. 35. int[] numbers = { 0b1, 0b10, 0b100, 0b1000, 0b1_0000, 0b100000 };
  36. 36. int[] numbers = { 0b1, 0b10, 0b100, 0b1000, 0b1_0000, 0b10_0000 };
  37. 37. int[] numbers = { 0b1, 0b10, 0b100, 0b1000, 0b1_0000, 0b10_0000 };
  38. 38. int[] numbers = { 0b1, 0b10, 0b100, 0b1000, 0b1_0000, 0b10_0000 }; var t = Tally(numbers);
  39. 39. int[] numbers = { 0b1, 0b10, 0b100, 0b1000, 0b1_0000, 0b10_0000 }; var t = Tally(numbers); (int, int) Tally(int[] values) { }
  40. 40. int[] numbers = { 0b1, 0b10, 0b100, 0b1000, 0b1_0000, 0b10_0000 }; var t = Tally(numbers); (int, int) Tally(int[] values) { var r = (0, 0); return r; }
  41. 41. int[] numbers = { 0b1, 0b10, 0b100, 0b1000, 0b1_0000, 0b10_0000 }; var t = Tally(numbers); WriteLine($"Sum: {t.Item1}, count: {t.Item2}"); (int, int) Tally(int[] values) { var r = (0, 0); return r; }
  42. 42. int[] numbers = { 0b1, 0b10, 0b100, 0b1000, 0b1_0000, 0b10_0000 }; var t = Tally(numbers); WriteLine($"Sum: {t.Item1}, count: {t.Item2}"); (int sum, int count) Tally(int[] values) { var r = (0, 0); return r; }
  43. 43. int[] numbers = { 0b1, 0b10, 0b100, 0b1000, 0b1_0000, 0b10_0000 }; var t = Tally(numbers); WriteLine($"Sum: {t.sum}, count: {t.count}"); (int sum, int count) Tally(int[] values) { var r = (0, 0); return r; }
  44. 44. int[] numbers = { 0b1, 0b10, 0b100, 0b1000, 0b1_0000, 0b10_0000 }; var t = Tally(numbers); WriteLine($"Sum: {t.sum}, count: {t.count}"); (int sum, int count) Tally(int[] values) { var r = (s:0, c:0); return r; }
  45. 45. int[] numbers = { 0b1, 0b10, 0b100, 0b1000, 0b1_0000, 0b10_0000 }; var (sum, count) = Tally(numbers); WriteLine($"Sum: {t.sum}, count: {t.count}"); (int sum, int count) Tally(int[] values) { var r = (s:0, c:0); return r; }
  46. 46. int[] numbers = { 0b1, 0b10, 0b100, 0b1000, 0b1_0000, 0b10_0000 }; var (sum, count) = Tally(numbers); WriteLine($"Sum: {sum}, count: {count}"); (int sum, int count) Tally(int[] values) { var r = (s:0, c:0); return r; }
  47. 47. int[] numbers = { 0b1, 0b10, 0b100, 0b1000, 0b1_0000, 0b10_0000 }; var (sum, count) = Tally(numbers); WriteLine($"Sum: {sum}, count: {count}"); (int sum, int count) Tally(int[] values) { var r = (s:0, c:0); return r; }
  48. 48. int[] numbers = { 0b1, 0b10, 0b100, 0b1000, 0b1_0000, 0b10_0000 }; var (sum, count) = Tally(numbers); WriteLine($"Sum: {sum}, count: {count}"); (int sum, int count) Tally(int[] values) { var r = (s:0, c:0); foreach (var v in values) { } return r; }
  49. 49. int[] numbers = { 0b1, 0b10, 0b100, 0b1000, 0b1_0000, 0b10_0000 }; var (sum, count) = Tally(numbers); WriteLine($"Sum: {sum}, count: {count}"); (int sum, int count) Tally(int[] values) { var r = (s:0, c:0); foreach (var v in values) { r = (r.s + v, r.c + 1); } return r; }
  50. 50. int[] numbers = { 0b1, 0b10, 0b100, 0b1000, 0b1_0000, 0b10_0000 }; var (sum, count) = Tally(numbers); WriteLine($"Sum: {sum}, count: {count}"); (int sum, int count) Tally(int[] values) { var r = (s:0, c:0); foreach (var v in values) { r.s += v; } return r; }
  51. 51. int[] numbers = { 0b1, 0b10, 0b100, 0b1000, 0b1_0000, 0b10_0000 }; var (sum, count) = Tally(numbers); WriteLine($"Sum: {sum}, count: {count}"); (int sum, int count) Tally(int[] values) { var r = (s:0, c:0); foreach (var v in values) { r.s += v; r.c++; } return r; }
  52. 52. int[] numbers = { 0b1, 0b10, 0b100, 0b1000, 0b1_0000, 0b10_0000 }; var (sum, count) = Tally(numbers); WriteLine($"Sum: {sum}, count: {count}"); (int sum, int count) Tally(int[] values) { var r = (s:0, c:0); foreach (var v in values) { r.s += v; r.c++; } return r; }
  53. 53. int[] numbers = { 0b1, 0b10, 0b100, 0b1000, 0b1_0000, 0b10_0000 }; var (sum, count) = Tally(numbers); WriteLine($"Sum: {sum}, count: {count}"); (int sum, int count) Tally(int[] values) { var r = (s:0, c:0); foreach (var v in values) { Add(v, 1); } return r; }
  54. 54. int[] numbers = { 0b1, 0b10, 0b100, 0b1000, 0b1_0000, 0b10_0000 }; var (sum, count) = Tally(numbers); WriteLine($"Sum: {sum}, count: {count}"); (int sum, int count) Tally(int[] values) { var r = (s:0, c:0); foreach (var v in values) { Add(v, 1); } return r; void Add(int s, int c) { r.s += s; r.c += c; } }
  55. 55. public void PrintStars(object o) { }
  56. 56. public void PrintStars(object o) { if (o is null) return; // constant pattern "null" }
  57. 57. public void PrintStars(object o) { if (o is null) return; // constant pattern "null" if (!(o is int i)) return; // type pattern "int i" }
  58. 58. public void PrintStars(object o) { if (o is null) return; // constant pattern "null" if (!(o is int i)) return; // type pattern "int i" WriteLine(new string('*', i)); }
  59. 59. switch (shape) // Switch on anything { }
  60. 60. switch (shape) // Switch on anything { default: WriteLine("<unknown shape>"); break; }
  61. 61. switch (shape) // Switch on anything { case null: throw new ArgumentNullException(nameof(shape)); default: WriteLine("<unknown shape>"); break; }
  62. 62. switch (shape) // Switch on anything { case Circle c: // Type pattern break; case null: throw new ArgumentNullException(nameof(shape)); default: WriteLine("<unknown shape>"); break; }
  63. 63. switch (shape) // Switch on anything { case Circle c: // Type pattern WriteLine($"circle with radius {c.Radius}"); // use c break; case null: throw new ArgumentNullException(nameof(shape)); default: WriteLine("<unknown shape>"); break; }
  64. 64. switch (shape) // Switch on anything { case Rectangle r: WriteLine($"{r.Length} x {r.Height} rectangle"); break; case Circle c: // Type pattern WriteLine($"circle with radius {c.Radius}"); // use c break; case null: throw new ArgumentNullException(nameof(shape)); default: WriteLine("<unknown shape>"); break; }
  65. 65. switch (shape) // Switch on anything { case Rectangle s when (s.Length == s.Height): // when-condition WriteLine($"{s.Length} x {s.Height} square"); break; case Rectangle r: WriteLine($"{r.Length} x {r.Height} rectangle"); break; case Circle c: // Type pattern WriteLine($"circle with radius {c.Radius}"); // use c break; case null: throw new ArgumentNullException(nameof(shape)); default: WriteLine("<unknown shape>"); break; }
  66. 66. blogs.msdn.microsoft.com/dotnet/ 2016/08/24/whats-new-in-csharp-7-0/

×