SlideShare a Scribd company logo
Enterprise Software Development
Join the Conversation #VS2015 @AdamCogan
V18.1
@AdamCogan | Chief Architect @ SSW | Microsoft Regional Director
What’s new in Visual
Studio 2015
Join the Conversation #VS2015 @AdamCogan
A trip down memory lane (Taylor Square – Oxford St Sydney)
• Web Forms
• XML Web Services
• Windows Forms
VS 2002
• .NET 1.1
• Mobile Devices
(ASP.NET)
• Compact Framework
• Enterprise Templates
VS 2003
• .NET 2.0
• Generics
• Click Once
• Web
ASP.NET 2.0
Local web server (Cassini)
• Testers
Web Tests
VS 2005
• .NET 3.5
• LINQ, LINQ to SQL
• WPF/HTML Designers
• Web
MVC 1.0
JavaScript IntelliSense
• Testing
Web/Load Testing
VS 2008
• .NET 4.0
• F#
• Parallel Extensions
• Quick Search (Navigate to)*
• IntelliTrace
• Web
MVC 2 & 3
• Testers
Test Manager
Coded UI Tests
VS 2010
Join the Conversation #VS2015 @AdamCogan
• Metro Modern UI!
• Search + Quick Launch
• Faster Add References
• NuGet
• New Team Explorer
• Storyboarding with PPT*
• IntelliTrace in Production
• Web
MVC 3 & 4
Page Inspector
CSS & HTML5
Debug in Chrome
• Testers
Exploratory Testing
Feedback Tool
VS 2012
Join the Conversation #VS2015 @AdamCogan
• VisualStudio.com
• Visual Studio Community*
• Git Support
• TypeScript
• Web
MVC 5 + WebAPIs
Browser Link*
Twitter Bootstrap
OAuth
• 64 bit Edit & Continue
• CTRL + ,
• Peek, Code Lens,
CodeMap
• Sync Preferences
VS 2013
• Uses SignalR to push changes to connected browsers
• Update HTML, CSS
• Refresh multiple browsers
• Design mode
Browser Link
Join the Conversation #VS2015 @AdamCogan
Join the Conversation #VS2015 @AdamCogan
Browser Link + Web Essentials
• Make changes in the browsers dev tools, save back to
VS
• Find unused CSS
• http://vswebessentials.com/features/browserlink
Join the Conversation #VS2015 @AdamCogan
A trip down memory lane
ASP.NET 5 (was vNext)
Mobile Development
Azure
Summary
What’s New (2014 + 2015)
Agenda
The Coganator
Adam Cogan
@AdamCogan
 Chief Architect at SSW
 Developing custom solutions
 Perform Software Audits
 Microsoft Gold Partner
 Microsoft Regional Director
 ASP Insider
 ALM MVP
Join the Conversation #VS2015 @AdamCogan
What’s New
In the 2013 Updates
• Better support for IE <
10
• Bug fixes
VS 2013.1
http://support.microsoft.com/kb/2911573
Join the Conversation #VS2015 @AdamCogan
Visual Studio
• SQL 2014 support
• Testing
Cloud load testing + App Insights
integration
Coded UI + Unit Tests for WinPhone 8.1
• Git improvements (blame)
TFS
• Add charts to project portal
• Work Item Tagging
• Import from VSO
• Web
• Improved JSON/Sass/Less
editors
• TypeScript 1.0
• Backlog management
improvements
Non-working days
Performance
VS 2013.2
http://support.microsoft.com/kb/2927432/en-us
Visual Studio
• CodeLens for Git
• App Insights bundled in
• Azure Mobile Service
project
• Cordova tooling
TFS
• Configurable display on
‘in progress’ items on the
backlog
VS 2013.3
http://support.microsoft.com/kb/2933779
Visual Studio
• CodeLens improvements
TFS
• Testing
• Charts
• Filtering
• Tagging
• Release Management
VS 2013.4
http://www.visualstudio.com/en-
us/news/vs2013-update4-rtm-vs.aspx
3 Cools things on
VisualStudio.com
• 1. Monaco
Live editing of
Azure Sites
• 2. Pull Requests
for Git
• 3. App Insights
Monitoring of availability
+ Make bug tracking
+ Performance issues
+ usage tracking part of your
ALM process
2015 VSO / ALM…
• ? LinqPad
• Git Client
• Code Editor
• Almost as good as VS (desktop)
Intellisense
Highlight references/usage
1. Monaco Editor for VS Online
Join the Conversation #VS2015 @AdamCogan
Boring title, let’s make it
more exiting
An afterthought?
Add a dash of excitement
OneDrive…
• TFS History ?
• Annotate (and Blame) rock
• Git Pull Requests give code review abilities
• http://blogs.msdn.com/b/visualstudioalm/archive/201
4/06/10/git-pull-request-visual-studio-online.aspx
Git Pull Requests
Join the Conversation #VS2015 @AdamCogan
Jamal – the new guy
Join the Conversation #VS2015 @AdamCogan
Adam - What did Jamal change?
Review the pull request
Adam Cogan
Join the Conversation #VS2015 @AdamCogan
Summary of reviewers’ comments
Adam Cogan
Accepting or Rejecting
Adam Cogan
Join the Conversation #VS2015 @AdamCogan
• Monitoring availability, bugs, performance, usage
• Adds reporting to all your apps
• Telemetry - See how users are using your applications
• Logs data to VS Online
• Helps you inspect and adapt – ALM lifecycle
• http://rules.ssw.com.au/WebSites/RulesToBetterApplicationInsights/P
ages/Do-you-know-the-process-to-improve-the-health-of-your-web-
application.aspx
Application Insights
Join the Conversation #VS2015 @AdamCogan
Join the Conversation #VS2015 @AdamCogan
When should we deploy?
Friday SatThurWedTue Sun Mon Tue
What’s New
In Visual Studio 2015
Biggest User Gripe?
https://visualstudio.uservoice.com/forums/121579-visual-studio/suggestions/2837384-change-all-caps-menu-in-vs-2012-to-vs-beta-format
“Change All CAPS Menu in VS 2012 to VS Beta format:
File Edit Instead of FILE EDIT” (3056 votes)
https://visualstudio.uservoice.com/forums/121579-visual-studio/suggestions/2628203-remove-all-caps
“Remove ALL CAPS” (2072 votes)
VS 2015
Join the Conversation #VS2015 @AdamCogan
1. Roslyn
http://visualstudiomagazine.com/articles/2012/03/20/10-questions-10-
answers-on-roslyn.aspx
http://blogs.msdn.com/b/dotnet/archive/2014/02/24/a-new-look-for-net-
reference-source.aspx [video] Framework bugs? Reflector
Compilers for C# and VB.NET exposed as services via API
Eg. SSW Code Auditor has Roslyn compiled Rules
APIs for Code Analysis and Refactoring
Eg. SSW Code Auditor can work like CodeLens and highlight errors in the IDE
Resharper
2. New language operators
3. More refactoring
Developer Goodies
Join the Conversation #VS2015 @AdamCogan
What is Roslyn?
• New C# and VB.NET compiler
• Exposes modules for syntactic (lexical) analysis of code
• Letting you write plugins for Code Analysis and Refactoring
• Dynamic Compilation
• Fast!
• E.g. Code Lens, SSW Code Auditor…
Join the Conversation #VS2015 @AdamCogan
Old Regex Rule in Code Auditor
New C# Rules in Code Auditor using Roslyn
Roslyn Syntax Visualizer
Join the Conversation #VS2015 @AdamCogan
Join the Conversation #VS2015 @AdamCogan
It’s still beta
It doesn’t support other
languages e.g. HTML, JavaScript,
etc.
Scripting API was removed 
Lack of documentation
Out of the box Parser & Lexer
Allows code fixes
Accurate
It can be used in Standalone
product
Used throughout VS 2015
Reporting Services
The Pros and Cons of Roslyn
Join the Conversation #VS2015 @AdamCogan
Join the Conversation #VS2015 @AdamCogan
Microsoft.CodeAnalysis
https://visualstudio.uservoice.com/forums/121579-visual-studio/suggestions/3990187-add-operator-to-c
“Add "?.“ null propagating operator to C#” (5389 votes)
VS 2013
if (a != null)
{
a.Dispose();
}
VS 2015
a?.Dispose();
event EventHandler OnDoStuff;
void DoStuff()
{
if (OnDoStuff != null)
{
OnDoStuff.Invoke(this, new EventArgs());
}
}
event EventHandler OnDoStuff;
void DoStuff()
{
OnDoStuff?.Invoke(this, new EventArgs());
}
? = if it’s not null
Join the Conversation #VS2015 @AdamCogan
Other Language features from Roslyn
a. Auto Property Initializers
b. Declaration Expressions
c. Primary constructors
Join the Conversation #VS2015 @AdamCogan
Auto Property Initializers
VS 2013
public class Foo
{
public int Bar { get; set; }
public Foo()
{
Bar = 5;
}
}
VS 2015
public class Foo
{
public int Bar { get; set; } = 5;
}
Note: Don’t have to declare a constructor just to set defaults
Join the Conversation #VS2015 @AdamCogan
Declaration Expressions
VS 2013
public void Stuff()
{
var a = "123";
int b;
int.TryParse(a, out b);
}
VS 2015
public void Stuff()
{
var a = "123";
int.TryParse(a, out var b);
}
Join the Conversation #VS2015 @AdamCogan
c. Primary Constructors
VS 2013
public class FooBar
{
public int X { get; set; }
public int Y { get; set; }
public FooBar (int x, int y)
{
X = x;
Y = y;
}
}
VS 2015
public class FooBar(int x, int y)
{
public int X { get; set; } = x;
public int Y { get; set; } = y;
}
Auto Property Initializers
Join the Conversation #VS2015 @AdamCogan
One of the best language features in .NET…
• In 2008 we got LINQ
• In 2014 the java guys got LINQ in Java 8
• But…
Join the Conversation #VS2015 @AdamCogan
Join the Conversation #VS2015 @AdamCogan
In VS2013.4
Join the Conversation #VS2015 @AdamCogan
In VS2015
Other Language features from Roslyn
• For a full list see
• https://roslyn.codeplex.com/wikipage?title=Language%20Feature%20Status&r
eferringTitle=Home
String interpolation
"{0} {1} is {2} years old.“, p.First, p.Last, p.Age
"{p.First} {p.Last} is {p.Age} years old."
• You can write the same thing with 50% less code
• Now developers are now 50% more efficient.
• Bosses will now ask us to ship 50% faster ;)
Join the Conversation #VS2015 @AdamCogan
Warning: You need to modify the project file to enable
these new language features (in 2013)
<OutputPath>binDebug</OutputPath>
<DefineConstants>DEBUG;TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
<LangVersion>experimental</LangVersion>
Join the Conversation #VS2015 @AdamCogan
More Refactoring… Light bulbs
Join the Conversation #VS2015 @AdamCogan
Light bulbs are the new home for all quick
actions you take in the Visual Studio editor
(very similar to ReSharper)
More Refactoring… Get #
Gives you a preview of the
refactoring
Code Previews…
Gives you a preview of the code
changes Visual Studio will make
Join the Conversation #VS2015 @AdamCogan
Improved Tool Tips
VS 2013 VS 2015
Join the Conversation #VS2015 @AdamCogan
Improved Tool Tips
VS 2013 VS 2015
Join the Conversation #VS2015 @AdamCogan
Code Lens
Join the Conversation #VS2015 @AdamCogan
Impediments with Unit Tests…
• The code might not lend itself to being unit testable
• Tight dependencies
• External environments…
• Difficult to measuring test quality
• Code coverage
• Number of assertions
• The happy path vs edge cases
• What assertions should we put in?
Join the Conversation #VS2015 @AdamCogan
Smart Unit Tests…
• Address these impediments.
• Goes through the code, finding all of the possible
code paths
• Generates unit tests for each scenario it finds
Join the Conversation #VS2015 @AdamCogan
What’s
wrong with
this code?
Join the Conversation #VS2015 @AdamCogan
Right click
method
name to get
“Smart Unit
Test” option.
Join the Conversation #VS2015 @AdamCogan
Automatically
created unit
tests.
Join the Conversation #VS2015 @AdamCogan
Fix the code
Re-run smart
tests after
adding null
reference check
Join the Conversation #VS2015 @AdamCogan
Smart Unit tests are not an excuse not to write
Unit Tests!
Blend…
Join the Conversation #VS2015 @AdamCogan
Join the Conversation #VS2015 @AdamCogan
Join the Conversation #VS2015 @AdamCogan
Windows 10 will be HUGE
It will be a FREE upgrade for anyone on Win 7/8/8.1 for the first 12 months
It can be run on small devices, such as Raspberry Pi 2 (Headless)
It will be easy to develop solutions targeting more stuff, such as Xbox One and
new Augmented Reality headset (Holo Lens -
https://www.youtube.com/watch?v=aThCr0PsyuA)
Cortana (i.e. Siri or Google Voice) is coming pre-installed in Windows 10
Spartan web browser are coming to Windows 10. It is exciting.
Join the Conversation #VS2015 @AdamCogan
NET has gone Open Source on GitHub
Microsoft is providing the full .NET server stack in open source, including
- ASP.NET,
- the .NET compiler,
- the .NET Core Runtime,
- Framework and Libraries
Will enable developers to build with .NET across Windows, Mac or Linux.
Join the Conversation #VS2015 @AdamCogan
Shared Projects vs PCL
For 10 years we copied and pasted code and compiled against each platform
(Windows Mobile 6 vs Windows Form)
In VS2010 SP1 – PCLs were introduced, share the DLL, but we couldn't make use
of platform specific hardware
In VS2013 – PCLs for Windows 8.1
In VS2013.2 –Shared Projects for Windows 8.1 and Windows Phone 8.1 Projects.
Shared Projects could only be used for Universal XAML apps,
PCLs could be used for all other project types
Join the Conversation #VS2015 @AdamCogan
Shared Projects
Think of code existing in a Shared Project as actually
belonging to the project that references it
It produces no DLLs so you can’t Unit Test shared
projects directly
Join the Conversation #VS2015 @AdamCogan
Join the Conversation #VS2015 @AdamCogan
public class NavigationHelper
{
public NavigationHelper()
{
#if WINDOWS_PHONE_APP
Windows.Phone.UI.Input.HardwareButtons.BackPressed
+= HardwareButtons_BackPressed;
#elif WINDOWS_APP
// Ignore. Windows Store doesn't have support for this.
#else
#error Unknown platform
#endif
}
// ...
}
VS 2015
Can used Shared Projects for all projects
(MVC, WinForms)
Join the Conversation #VS2015 @AdamCogan
Portable Class Libraries
Is the minimum .NET Framework that runs across different
platforms
Good cross platform development
Produces a DLL that can be referenced by other projects
Unit Testable
Join the Conversation #VS2015 @AdamCogan
Join the Conversation #VS2015 @AdamCogan
Harder to share actual code to
projects outside the solution
Can quickly become
unmaintainable
Allow using platform specific
APIs by using #if
Can handle cases where the
source is compatible but the
binary wouldn’t be
Can include non-code resources
Join the Conversation #VS2015 @AdamCogan
Shared Projects
You get the minimum set of
classes/features across the different
platforms
Harder to make use of platform
specific functionality within the logic of
the PCL
E.g. PCL handles grabbing information
from the device’s sensors, can’t get
something new like developer’s coffee
intake, but just what’s common (GPS,
direction)
Can share code via NuGet
packages
Can specify which platforms the
PCL will target
Join the Conversation #VS2015 @AdamCogan
Portable Class Libraries
Recommendation
Use Portable Class Libraries where you don’t need
platform specific features
Join the Conversation #VS2015 @AdamCogan
Slow Code
Join the Conversation #VS2015 @AdamCogan
PerfTips
How long was your program running during the
previous step or since the last breakpoint?
Join the Conversation #VS2015 @AdamCogan
Debugging made easier
IntelliTrace?
Join the Conversation #VS2015 @AdamCogan
IntelliTrace in VS2015
Faster
More Stats while debugging
Join the Conversation #VS2015 @AdamCogan
Join the Conversation #VS2015 @AdamCogan
Join the Conversation #VS2015 @AdamCogan
Join the Conversation #VS2015 @AdamCogan
Zoom in on the timeline and see breakpoints and exceptions
See Debug/Output statements in the timeline and debugger tab
A trip down memory lane
ASP.NET 5 (was vNext)
Mobile Development
Azure
Summary
What’s New
Agenda
Mobile Development
With Xamarin Forms
Developers!
Developers!
Developers!
Mobile First!
Mobile First!
Mobile First!
+ Cloud First!
• ?
• Native
• Hybrid - HTML5 + Javascript/TypeScript (Cordova)
• Cross Compilers (Xamarin, NativeScript)
How many mobile options?
Join the Conversation #VS2015 @AdamCogan
• Write shared code in HTML
and Javascript
• Compiles into a Hybrid App on
Windows Phone, Android and
iOS
• VS2013 Update 3
Cordova
Suggestion
Actual?
Join the Conversation #VS2015 @AdamCogan
Join the Conversation #VS2015 @AdamCogan
Join the Conversation #VS2015 @AdamCogan
Join the Conversation #VS2015 @AdamCogan
Ripple?
Apache Ripple is
a web based
mobile
environment
simulator
Join the Conversation #VS2015 @AdamCogan
• ?
• When it’s sucky and clunky
• See if they are using native UI elements
E.g. Gmail when you swipe to delete it’s a different style button
• Show me a Hybrid app as good as Runkeeper and I’ll
switch
How do you tell when you are in a Hybrid
App?
Join the Conversation #VS2015 @AdamCogan
Spot the hybrid app
Join the Conversation #VS2015 @AdamCogan
iOS Android
@AdamCogan
“There’s two kinds of mobile developers:
Those developing native apps
& those that wish they were.”
• Mono…. “Microsoft support Miguel”
• .NET Foundation – Open sourcing .NET
• http://www.dotnetfoundation.org
• Microsoft contributed Roslyn
• Roslyn makes it easier for .NET apps to run on Mac and Linux
• Microsoft and Xamarin are closely working together
Microsoft + Xamarin
Join the Conversation #VS2015 @AdamCogan
• ? Write C#
• Build native mobile apps
• 3 apps - Learn the Xamarin API, deploy to many devices
• Less learning - Provides an abstraction over the native APIs
• Goal is to use the lowest common denominator
• Not limited - Still lets you directly call the native APIs
• Still need to code the UI natively for each platform
Xamarin is cool because…
Join the Conversation #VS2015 @AdamCogan
• Abstraction over the UI
• Compiler will convert the UI
elements into their native
counterparts
• Can still do native customizations
E.g. For WinPhone – adding the carousel
• Sexy UI Designer…
Xamarin.Forms
Join the Conversation #VS2015 @AdamCogan
Sexy UI designer…
var profilePage = new ContentPage {
Title = "Profile",
Icon = "Profile.png",
Content = new StackLayout {
Spacing = 20, Padding = 50,
VerticalOptions = LayoutOptions.Center,
Children = {
new Entry { Placeholder = "Username" },
new Entry { Placeholder = "Password", IsPassword = true },
new Button {
Text = "Login",
TextColor = Color.White,
BackgroundColor = Color.FromHex("77D065") }}}
};
var settingsPage = new ContentPage {
Title = "Settings",
Icon = "Settings.png",
(...)
};
var mainPage = new TabbedPage { Children = { profilePage, settingsPage } };
Join the Conversation #VS2015 @AdamCogan
Compiles and uses Native Controls
You can either use:
• C#
• XAML (no designer, no intellisense)
Sexy UI designer…
Join the Conversation #VS2015 @AdamCogan
Pages
Join the Conversation #VS2015 @AdamCogan
Layouts
Join the Conversation #VS2015 @AdamCogan
Image
Label
ListView
Map
OpenGLView
Picker
Controls
SearchBar
Slider
Stepper
TableView
TimePicker
WebView
ActivityIndicator
BoxView
Button
DatePicker
Editor
Entry
EntryCell
ImageCell
SwitchCell
TextCell
ViewCell
Join the Conversation #VS2015 @AdamCogan
http://rules.ssw.com.au/
• Category
Sub Category
Rules
Building a mobile app for SSW Rules
#exploring demo
1. File | New Project
2. F5
3. Add 2 content page (stack layout + grid layout)
4. Add a menu - Group the pages into a tabbed page
Join the Conversation #VS2015 @AdamCogan
Demo #1
File | New Project
If you have a Mac on
the network you can
install the Build host
to build the iOS
project
Shared Project
Android
iOS
Windows Phone
Join the Conversation #VS2015 @AdamCogan
F5 – Start testing on the two biggest mobile platforms
Join the Conversation #VS2015 @AdamCogan
Anyone running
Android?
Join the Conversation #VS2015 @AdamCogan
Use the emulator
Bad Android devs think they have 1
option
Join the Conversation #VS2015 @AdamCogan
• Use a device
• Use genymotion.com (but you have to give up Hyper-V
and the Windows Phone emulator)
• Or Hyper-V haxm (open GL drivers and x86 optimization
for the android emulator)
• VS2015 bundles a emulator for Android (Lollipop API
Level 21)
The good Android devs know
Join the Conversation #VS2015 @AdamCogan
And the 2nd major
mobile platform…
Join the Conversation #VS2015 @AdamCogan
Windows Phone emulator uses
Hyper-V
Join the Conversation #VS2015 @AdamCogan
Demo #2
Showing off the
controls – Stack
Layout
Stack Layout with 4 controls
Join the Conversation #VS2015 @AdamCogan
Join the Conversation #VS2015 @AdamCogan
Join the Conversation #VS2015 @AdamCogan
Demo #3
Showing off the
controls – Grid Layout
Grid Layout with 4 rows and 3 columns
Join the Conversation #VS2015 @AdamCogan
Join the Conversation #VS2015 @AdamCogan
Add some content and colour
// Column 0 to Column 3, Row 0 to Row 1
grid.Children.Add(new Label { Text = "Label 1", HorizontalOptions = LayoutOptions.Center }, 0, 3, 0, 1);
// Column 0, Row 1
grid.Children.Add(new Label { Text = "Label 2", TextColor = Color.White, BackgroundColor = Color.Lime }, 0, 1);
// Column 1, Row 1
grid.Children.Add(new BoxView { Color = Color.Red }, 1, 1);
// Column 0, Row 2
grid.Children.Add(new BoxView { Color = Color.Blue }, 0, 2);
// Column 1, Row 2
grid.Children.Add(new Label { Text = "Label 3", TextColor = Color.Purple, BackgroundColor = Color.Gray }, 1, 2);
// Column 2 to Column 3, Row 1 to Row 3
grid.Children.Add(new Label { Text = "Label 4", TextColor = Color.Yellow, BackgroundColor = Color.Navy }, 2, 3, 1, 3);
// Column 0 to Column 2, Row 3 to Row 4
grid.Children.Add(new Label { Text = "Label 4", TextColor = Color.Red, BackgroundColor = Color.Silver }, 0, 2, 3, 4);
// Column 2, Row 3
grid.Children.Add(new Label { Text = "Label 5", TextColor = Color.Aqua, BackgroundColor = Color.Red }, 2, 3);
Content = grid;
Join the Conversation #VS2015 @AdamCogan
4 rows
3 columns
Join the Conversation #VS2015 @AdamCogan
Join the Conversation #VS2015 @AdamCogan
Demo #4
Showing off the
controls – Add a
Tabbed Page
public static Page GetMainPage()
{
return new TabbedPage
{
Children =
{
new StackLayoutPage { Title = "Stack" },
new GridLayoutPage { Title = "Grid"}
}
};
}
Tabbed Page showing our Stack and Grid
Join the Conversation #VS2015 @AdamCogan
Join the Conversation #VS2015 @AdamCogan
Demo #5
Create SSW Rules App
#realapp
1. Start coding our Rules app [5 content pages]
1. Category Page
2. Sub Category Page
3. Rules List page
4. Rule Page #shortcut
5. Search Page …
Join the Conversation #VS2015 @AdamCogan
Category Page
• Add Nuget package (REST rules.ssw.com.au)
• Load the list of top level categories
Bind
• When we ‘click’, go to sub categories
Now the serious stuff…
Building the SSW Rule App
Join the Conversation #VS2015 @AdamCogan
public RuleCategoryPage(string url)
{
Title = "SSW Rules";
BaseUrl = url;
ListView = new ListView();
// Create a template for out list view
var cell = new DataTemplate(typeof(TextCell));
cell.SetBinding(TextCell.TextProperty, "Title");
ListView.ItemTemplate = cell;
Content = new StackLayout()
{
VerticalOptions = LayoutOptions.FillAndExpand,
Children = { ListView }
};
Create a template for the list view
Create a DataTemplate
for the ListView,
bind the Text property to
“Title” in our data
Join the Conversation #VS2015 @AdamCogan
protected override async void OnAppearing()
{
base.OnAppearing();
// Create our sharepoint rules client
var client = new SswSharePointRulesClient();
// Get a list of toplevel categories
var categoryResult = client.GetRuleCategories(BaseUrl);
var categories = await categoryResult;
ViewModel = new RuleCategoryViewModel()
{
Categories = new ObservableCollection<RuleCategoryModel>(categories)
};
// Bind out results to the list view
ListView.ItemsSource = ViewModel.Categories;
}
Load categories, bind on load
Call SharePoint REST API
to grab our categories
Bind results to our list
view
Join the Conversation #VS2015 @AdamCogan
public RuleCategoryPage(string url)
{
Title = "SSW Rules";
BaseUrl = url;
ListView = new ListView();
// Create a template for out list view
var cell = new DataTemplate(typeof(TextCell));
cell.SetBinding(TextCell.TextProperty, "Title");
ListView.ItemTemplate = cell;
Content = new StackLayout()
{
VerticalOptions = LayoutOptions.FillAndExpand,
Children = { ListView }
};
ListView.ItemSelected += OnListViewOnItemSelected;
}
protected virtual void OnListViewOnItemSelected(object sender, SelectedItemChangedEventArgs args)
{
var category = (RuleCategoryModel)args.SelectedItem;
var subCategoryPage = new RuleSubCategoryPage(category.Url);
Navigation.PushAsync(subCategoryPage);
}
Add event handlers – Item Selected
Attach an event handler to
the ItemSelected event
Instantiate the
RuleSubCategory page with
the Url of the category
Change the current page
Join the Conversation #VS2015 @AdamCogan
Join the Conversation #VS2015 @AdamCogan
<?xml version="1.0" encoding="utf-8" ?>
<ContentPage xmlns="http://xamarin.com/schemas/2014/forms"
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
x:Class="SSW.Rules.Mobile.RuleContentXamlPage" >
<WebView VerticalOptions="FillAndExpand" HorizontalOptions="FillAndExpand"
Source="{Binding Url}" />
</ContentPage>
#shortcut
View the Rule with a WebView (XAML)
WebView is basically an
iframe
Set the Source as the URL
of our rule
Join the Conversation #VS2015 @AdamCogan
Join the Conversation #VS2015 @AdamCogan
Demo #6
Add a search page
• SearchBar
• Label for result count
• ListView to show the results
Create a Search Page
Join the Conversation #VS2015 @AdamCogan
Join the Conversation #VS2015 @AdamCogan
• TFS - https://tfsodata.visualstudio.com/ (bad ODATA – read only)
• TFS -https://visualstudio.com/integrate (good REST)
• REST APIs rock
https://developers.google.com/
https://developers.facebook.com/
https://dev.twitter.com/
https://developer.nokia.com/
https://developer.github.com/
http://developer.xamarin.com/
https://Developer.visualstudio.com
REST APIs
Join the Conversation #VS2015 @AdamCogan
• SharePoint - http://msdn.microsoft.com/en-us/library/office/jj860569(v=office.15).aspx
• Office 365 - http://msdn.microsoft.com/en-us/library/office/dn605892(v=office.15).aspx
• Azure - http://msdn.microsoft.com/en-us/library/azure/ee460799.aspx
Even better would be to use the .NET libraries
http://www.bradygaster.com/post/getting-started-with-the-windows-azure-
management-libraries
• Yours?
• Note: RestSharp is a great .NET library for calling REST apis
REST APIs
Join the Conversation #VS2015 @AdamCogan
https://github.com/glennstephens/xfTemplates
Hot Tip – Resharper templates for
Xamarin.Forms
Join the Conversation #VS2015 @AdamCogan
A trip down memory lane
ASP.NET 5 (was vNext)
Mobile Development
Azure
Summary
What’s New
Agenda
Express
• October 2005 - Microsoft releases a free IDE
• Limited version Professional edition
• No licensing restrictions for applications
• No Extensions (No ReSharper / Web Essentials…)
Join the Conversation #VS2015 @AdamCogan
Express was not good enough…
• Visual Studio Express was crippled - no extensions
• Needlessly segmented into separate installers (Web, Windows, Desktop)
• Paid version too expensive for students and individuals
• Cheaper options for developers and languages
• Jetbrains (Java, Php, Ruby, Phyton, Frontent Dev (Javascript, Node.js, CSS, etc)
• Sublime
• Atom.io
• Notepad++
• …
“Visual Studio is universally praised, but if you talk to a developer in
college or straight out of college, they don’t want to pay,”
“We want to eliminate that friction and enable more developers to
use it on a day-to-day basis.”
Scott Guthrie, Microsoft
Join the Conversation #VS2015 @AdamCogan
Goodbye Express, welcome Visual Studio
2013 Community...
• November 2014 - Microsoft finally releases a *decent* free IDE
• *All* the great functionality of Visual Studio Professional 2013
• Any individual developer can use it to create their own free or
paid apps.
• Unlimited number of users within an organization for learning,
academic research, or for contributing to open source projects
• Choose from thousands of extensions for Visual Studio
Join the Conversation #VS2015 @AdamCogan
What will change?
• Today for VS 2013 there are 2020 extensions
• Web Essentials
• Package Intellisense (NPM)
• Grunt Launcher
• PHP Tools for Visual Studio
• NTVS (Node.js Tools for Visual Studio) this is a plugin
• Python Tools for Visual Studio
• But…
Join the Conversation #VS2015 @AdamCogan
What will change?
6 kinds of developers
1. HTML and JS devs
2. Node.js devs
3. PHP devs
4. Python devs
5. Non windows devs
6. VS devs (Express and Professional)
7. Administrators
Join the Conversation #VS2015 @AdamCogan
1. HTML and JS devs
• will jump on the bandwagon
• will love Bower support
Join the Conversation #VS2015 @AdamCogan
2. Node.js devs
• will grow slowly, stay niche... but will jump
• will love NPM package support (non .NET server side)
• will love the new grunt support (especially the task
runner)
Join the Conversation #VS2015 @AdamCogan
3. PHP devs
• will not move because
• they require a better PC than a 486
• find copy and paste too slow
• they would hate the 3 hour download and install
Join the Conversation #VS2015 @AdamCogan
4. Python devs
• are the unknown - the beginner devs will switch
• will love the support VS has for git
• will love the command line driven approach they can continue
to use in the new environment
• will be happy that they get PiP for packing (because they won’t
switch to Nuget)
• progressive universities will be happy to teach it
Join the Conversation #VS2015 @AdamCogan
5. Non windows devs
We can only hope they find http://www.omnisharp.net
(it is a cross platform plugin for a number of editors –
Sublime, Atom, Emacs, Brackets, Vim - that allow you to
develop .net)
Join the Conversation #VS2015 @AdamCogan
6. VS devs (Express and Professional)
(not specifically related to the community edition but)
• The majority of Microsoft devs will be shocked at the
amount of change in 2015.
• Most wont like that VS is even more complex.
• They will have to deal with it and grow.
Join the Conversation #VS2015 @AdamCogan
7. Administrators
- Want to run ASP.NET on Linux
- Today ASP.NET runs on Mono on Linux and Mac
- Tomorrow ASP.NET will run on the new .NET Core on
Linux and Mac (and be supported)
Join the Conversation #VS2015 @AdamCogan
Conclusion
new open source .Net Core
+
free VS Community
=
A lot of potential unlocked…
E.g. Develop self contained website for free, Docker deploy to an IoT device
(Win10 or Linux embedded e.g RaspberryPi).
Join the Conversation #VS2015 @AdamCogan
State of the Web
ASP.NET 5 (was vNext)
Join the Conversation #VS2015 @AdamCogan
MVC4 + WebAPI + TypeScript + KnockoutJS
MVC5 ?
Last Year I recommended…
Join the Conversation #VS2015 @AdamCogan
Restoring packages for c:usersericphandocumentsvisual studio 14ProjectsWebApplication3WebApplication3project.json
Attempting to resolve dependency WebApplication3 >= 1.0.0
Attempting to resolve dependency EntityFramework.SqlServer >= 7.0.0-alpha2
OPEN EntityFramework.SqlServer.7.0.0-alpha2.nupkg
OPEN EntityFramework.SqlServer.7.0.0-alpha2EntityFramework.SqlServer.7.0.0-alpha2.nuspec
Attempting to resolve dependency Microsoft.AspNet.Mvc >= 6.0.0-alpha2
OPEN Microsoft.AspNet.Mvc.6.0.0-alpha2.nupkg
OPEN Microsoft.AspNet.Mvc.Common.6.0.0-alpha2.nupkg
:
:
OPEN Microsoft.AspNet.Mvc.Razor.Host.6.0.0-alpha2Microsoft.AspNet.Mvc.Razor.Host.6.0.0-alpha2.nuspec
Attempting to resolve dependency EntityFramework.Migrations >= 7.0.0-alpha2
OPEN EntityFramework.Migrations.7.0.0-alpha2.nupkg
OPEN EntityFramework.Migrations.Design.7.0.0-alpha2.nupkg
OPEN EntityFramework.Migrations.7.0.0-alpha2EntityFramework.Migrations.7.0.0-alpha2.nuspec
OPEN EntityFramework.Migrations.Design.7.0.0-alpha2EntityFramework.Migrations.Design.7.0.0-alpha2.nuspec
Everything is a NuGet package
Change of attitude?
NUnit released in 2002 – Becomes the standard for .Net
With Visual Studio 2005 Microsoft releases MSTest
MSTest almost identical to NUnit
Why not support NUnit instead?
Join the Conversation #VS2015 @AdamCogan
New terms for the .NET Developer
• Bower
• Grunt
• NPM
• OWIN
Join the Conversation #VS2015 @AdamCogan
<Next PBI – create a cool logo>
• project.json
• config.json
• package.json
• bower.json
• gruntfile.js
No more web.config
No more csproj
• Add references to NuGet packages here
• Full intellisense
• IIS/Hosting configuration
project.json
Join the Conversation #VS2015 @AdamCogan
Join the Conversation #VS2015 @AdamCogan
Do we have to manually type in NuGet
Packages into project.json?
Join the Conversation #VS2015 @AdamCogan
Join the Conversation #VS2015 @AdamCogan
Join the Conversation #VS2015 @AdamCogan
New NuGet Package Manager
• Looks nicer
• Makes it easier to install other version of NuGet
packages
Join the Conversation #VS2015 @AdamCogan
Web.config
Stores connection strings and other app settings
config.json
{
"Data": {
"DefaultConnection": {
"ConnectionString":
"Server=(localdb)mssqllocaldb;Database=aspnetvnext-WebApplication3-15606acb-81ef-
4c1e-97c1-ac0b2d4e4a33;Trusted_Connection=True;MultipleActiveResultSets=true"
}
}
}
Join the Conversation #VS2015 @AdamCogan
• List if NPM (Node Package Manager) packages
• NPM is a javascript package manager for
development tasks (e.g. minification, bundling, image
optimization)
package.json
package.json
{
"version": "0.0.0",
"name": "",
"devDependencies": {
"grunt": "0.4.5",
"grunt-bower-task": "0.4.0"
}
}
Bower is a front end javascript package manager
(created by Twitter)
bower.json
bower.json
{
"name": "WebApplication",
"private": true,
"dependencies": {
"bootstrap": "3.0.0",
"jquery": "1.10.2",
"jquery-validation": "1.11.1",
"jquery-validation-unobtrusive": "3.2.2",
"hammer.js": "2.0.4",
"bootstrap-touch-carousel": "0.8.0"
},
"exportsOverride": {
"bootstrap": {
"js": "dist/js/*.*",
"css": "dist/css/*.*",
"fonts": "dist/fonts/*.*"
},
:
}
• A javascript task runner (also an npm package)
• Use it to process your js and css files
gruntfile.js
gruntfile.js
module.exports = function (grunt) {
grunt.initConfig({
bower: {
install: {
options: {
targetDir: "wwwroot/lib",
layout: "byComponent",
cleanTargetDir: false
}
}
}
});
grunt.registerTask("default", ["bower:install"]);
grunt.loadNpmTasks("grunt-bower-task");
};
What about NuGet?
• NuGet - .NET Dependencies (SignalR, Owin)
• Bower – Frontend Javascript Dependencies (jQuery,
Angular)
• NPM – Backend Javascript Dev Tools (lodash, browserify,
watchify, grunt, JSHint)
• Grunt/Gulp – MSBuild for client side files
Join the Conversation #VS2015 @AdamCogan
wwwroot?
• Static files go here (*.js, *.png, *.jpg)
• Maps to http://hostname/
• Cleaner separation between code
files and static files
• TypeScript, LESS should not be put in
here, only the output of these files
should be placed in here
Join the Conversation #VS2015 @AdamCogan
• Built in
• Startup.cs uses it
• StructureMap, AutoFac, Ninject, Windsor, and Unity
Dependency Injection
using Microsoft.Framework.DependencyInjection;
public class Startup
{
public void Configure(IBuilder app)
Join the Conversation #VS2015 @AdamCogan
Join the Conversation #VS2015 @AdamCogan
Dependency Inject
• Can use it in Razor page too
Join the Conversation #VS2015 @AdamCogan
@using WebApplication23
@inject TimeService TimeSvc
<h3>@ViewBag.Message</h3>
<h3>
@TimeSvc.Ticks From Razor
</h3>
WebAPI and Controllers in one
public class ValuesController : Controller
{
// GET /values
public string Get() { return "Values"; }
// GET /values/1
public string Get(int id) { return "Value " + id.ToString(); }
// POST /values
public ActionResult Post() { return new HttpStatusCodeResult(201); }
}
http://rules.ssw.com.au/SoftwareDevelopment/RulesToBetterWebAPI/Pages/Default.aspx
Join the Conversation #VS2015 @AdamCogan
New - View Components
• Similar to partial views, but more powerful.
• Include the same separation-of-concerns and testability benefits found between a controller
and view.
• Like a mini-controller—responsible for rendering a chunk rather than a whole response.
• Can solve any problem that is too complex with a partial, such as:
• Dynamic navigation menus
• Tag cloud (where it queries the database)
• Login panel
• Shopping cart
• …
Join the Conversation #VS2015 @AdamCogan
• Define what services and features this app will be using via Owin
• Services
EF
MVC
• Routes
• Features
BrowserLink
Static Files
• Authentication
Startup.cs
Join the Conversation #VS2015 @AdamCogan
Tip - What can
you do to make
IIS Faster?
Disable Modules
OWIN
• Owin is a standardised interface between web
servers and web applications.
• This means web servers that support Owin can run
any apps that implement Owin
• e.g. ASP.NET MVC running on Linux or OSX
Join the Conversation #VS2015 @AdamCogan
OWIN
• Owin.dll contains a single interface IAppBuilder
• Use this to register any middleware components that can handle the
web request
• SignalR
• ASP.NET Identity
• WebAPI
• This means your HTTP pipeline is optimized for just what you need,
instead of the old IIS default http modules that get loaded by default.
Join the Conversation #VS2015 @AdamCogan
Startup.cs
app.UseIdentity()
app.UseStaticFiles()
app.UseMvc()
Request/Home/Index
Request/Content/logo.png
Register OWIN middleware
1st Request comes in
to an MVC page
Verifies user is
logged in and passes
onto the next OWIN
middleware
Not a static file, so
move onto the next
OWIN middle wear
MVC route handles
request and returns
to the client
2nd Request comes in
for an image
Skips check and
moves on, because
we allow anonymous
Static file handler
gets the file and
returns to the client
Old
@Html.ActionLink(“Click me”, “View”, “Controller”)
New
<a asp-controller=“Controller” asp-view=“Index”>Click me</a>
Join the Conversation #VS2015 @AdamCogan
Razor Tag Helpers
Join the Conversation #VS2015 @AdamCogan
Razor Tag Helpers
Old
@Html.ValidationSummary(true, "", new { @class = "text-danger" })
<div class="form-group">
@Html.LabelFor(m => m.UserName, new { @class = "col-md-2 control-label" })
<div class="col-md-10">
@Html.TextBoxFor(m => m.UserName, new { @class = "form-control" })
@Html.ValidationMessageFor(m => m.UserName, "", new { @class = "text-danger" })
</div>
</div>
New
<div asp-validation-summary="ModelOnly" class="text-danger"></div>
<div class="form-group">
<label asp-for="UserName" class="col-md-2 control-label"></label>
<div class="col-md-10">
<input asp-for="UserName" class="form-control" />
<span asp-validation-for="UserName" class="text-danger"></span>
</div>
</div>
Harder to tell server side code
from client side code
More HTML like
More readable
More control over how the
HTML outputs
Join the Conversation #VS2015 @AdamCogan
Razor Tag Helpers
No need to hit build, just save and refresh
(powered by Roslyn)
Join the Conversation #VS2015 @AdamCogan
AngularJS
Join the Conversation #VS2015 @AdamCogan
AngularJS
http://www.adamcogan.com/2014/11/13/why-ssw-is-moving-to-angularjs/
https://github.com/johnpapa/angularjs-styleguide
http://www.ssw.com.au/ssw/Events/Webinars/DevSuperpowers-AngularJS-with-TypeScript.aspx
http://tv.ssw.com/5682/how-to-make-web-applications-with-angularjs-and-asp-net-mvc-dev-
superpowers-episode-7
http://tv.ssw.com/5818/angularjs-with-dan-wahlin
Dev Superpowers - AngularJS with TypeScript
made easy with Duncan Hunter
Join the Conversation #VS2015 @AdamCogan
How to make web applications with AngularJS and
ASP.NET MVC | Dev SuperPowers Episode 7
Join the Conversation #VS2015 @AdamCogan
The future of AngularJS: an interview with
Dan Wahlin
Join the Conversation #VS2015 @AdamCogan
AngularJS + VS2015
Built in templates to create
• Controller
• Service
• Directive
• Factory
• Module
Join the Conversation #VS2015 @AdamCogan
Join the Conversation #VS2015 @AdamCogan
AngularJS + VS2015 - Suggestion
Make these create TypeScript files instead of JavaScript
files
News – Angular 2.0 is to be written using TypeScript
Join the Conversation #VS2015 @AdamCogan
SignalR
• Add via the NuGet package
• Real time communication between clients
• Good for:
• Showing progress on long running tasks
• Interactive apps
• Team collaboration
Join the Conversation #VS2015 @AdamCogan
SignalR in action
https://sswhealthcheck.com/
https://sugarlearning.com/Public/healthcheck
https://sswlinkauditor.com/
Visual Studio BrowserLink
Join the Conversation #VS2015 @AdamCogan
ASP.NET 5 - KRE, KVM, KPM
• KRE – K Runtime Environment
• Code required to bootstrap and run an ASP.NET 5 application.
• KVM – K Version Manager
• Updating and installing different versions of KRE. KVM is also used to set
default KRE version.
• KPM – K Package Manager
• Manages packages needed by applications to run (NuGet)
Join the Conversation #VS2015 @AdamCogan
Join the Conversation #VS2015 @AdamCogan
Example – Download K, grab source from
Git, run app!
@powershell -NoProfile -ExecutionPolicy unrestricted -Command "iex ((new-object
net.webclient).DownloadString('https://raw.githubusercontent.com/aspnet/Home/master/kvminstall.
ps1'))"
kvm upgrade
git clone https://github.com/aspnet/Home.git
cd HomesamplesHelloWeb
kpm restore
k web
Join the Conversation #VS2015 @AdamCogan
• WCF
• Highly customizable
• Hard to configure
• Can work with multiple protocols
TCP, UDP, MSMQ
• Can use multiple encodings: Text,
XML, MTOM, Binary
• Duplex binding (two way
communication)
• Reliable messaging
• WebAPI
• Works with the HTTP protocol
• More interoperable with other
platforms
• Can only encode to a few
formats
• Can do two way
communication using SignalR
Join the Conversation #VS2015 @AdamCogan
WCF or WebAPI?
ECMA Script 6
• LINQ in javascript!
• But… Browser compatibility
• http://kangax.github.io/compat-table/es6/
Join the Conversation #VS2015 @AdamCogan
// Old Way
[1,2,3].map(function (x) {
return x * x;
});
// New Way
[1,2,3].map(x => x * x);
Still use Typescript
• Supports LINQ already
• Can set it to compile to different ECMA Script
versions
• Better intellisense support in VS
Join the Conversation #VS2015 @AdamCogan
Say goodbye…
- ASP.NET 4
- ASP.NET 5
- No Web Forms
- No VB.NET
- Faster
- Cheaper hosting (Linux, Mac)
Join the Conversation #VS2015 @AdamCogan
Join the Conversation #VS2015 @AdamCogan
• project.json (was dependencies)
• config.json (was web.config)
• Javascript package managers and builders (NPM, Bower, Grunt)
• Dependency Injection included
• ApiController is Controller
• Startup class using OWIN (was App_Start + global.asax)
• Razor Tag Helpers
• Compile ahead of time, no need to compile to see changes
• More love for Angular
• No
• + …
Summary - What’s changed in ASP.NET 5?
Join the Conversation #VS2015 @AdamCogan
A trip down memory lane
ASP.NET 5 (was vNext)
Mobile Development
Azure + Continuous Deployment + Testing
Summary
What’s New
Agenda
What are Azure Deployment Slots?
Auto Swap
Swapping
Testing in Production
Continuous Deploy to Deployment Slots
Azure +
Continuous
Deployment +
Testing
Boss says “Azure is slow”
• We are a large cinema chain
• We have a 100 MB Deployment and an IIS startup time of 1 minute
• We have a large customer base
• We use Sitefinity
• We deploy multiple times a day
• The boss checks his site coincidentally right after we deploy! (He
thinks Azure is slow)
Join the Conversation #VS2015 @AdamCogan
A:
Deploy less often
Or
Learn about Azure Deployment Slots
(they can make your downtime 0)
Join the Conversation #VS2015 @AdamCogan
A:
Dev
Test
Prod
Who has this?
Join the Conversation #VS2015 @AdamCogan
A:
Dev
Test / QA
UAT
Staging / Preprod
Prod / Live
www.northwind.com (1+2 Azure Deployment Slots)
Prod1 - www1.northwind.com Azure Deployment Slot #1 (Make Live) aka Swap
Prod2 – www2.northwind.com Azure Deployment Slot #2
Join the Conversation #VS2015 @AdamCogan
Good example - Do you use Azure
Deployment Slots on production?
Join the Conversation #VS2015 @AdamCogan
Configure
Deployment
Slots
Join the Conversation #VS2015 @AdamCogan
Deploy to
pre-prod
• Deploy a version of your website to the
pre-production slot
• Use Azure Continuous Deployment or
any of your favourite deployment tools
Join the Conversation #VS2015 @AdamCogan
The beauty of “Swap”
• No cold start
• The swap will simply switch pointers
• Changes can be rolled back by reversing the swap
Join the Conversation #VS2015 @AdamCogan
Deployment Slots
• Available on Standard Plan
• Up to 4 deployment slots for 1 production slot
• Scaling is not available for non-production slots.
• Shares the same resources as your production slots (sites)
and runs on the same VMs
Join the Conversation #VS2015 @AdamCogan
Eg. http://www1.northwind.com
Eg. http://azuredeploy-preprod.azurewebsites.net
Eg. http://www.northwind.com
Eg. http://azuredeploy.azurewebsites.net
Settings that are not swapped:
Publishing endpoints (URL,
ConnectionString)
Custom Domain Names
SSL certificates and bindings
Scale settings
Continuous Deployment
Settings
Settings that are swapped:
General settings - such as
framework version, 32/64-bit, Web
sockets
App settings (can be configured to
stick to a slot)
Connection strings (can be
configured to stick to a slot)
Handler mappings
Monitoring and diagnostic settings
Join the Conversation #VS2015 @AdamCogan
Configure Settings
Configure
Sticky Slot
Settings
• App settings and connection strings are
swapped by default
• App settings and connection strings
can be set to “Slot Sticky”
Join the Conversation #VS2015 @AdamCogan
Testing in
production
• A/B/N Testing
• Similar to Google Content Experiments
• Use App Insights to measure results
• ? 50/50 vs 33/33/33
• Using Production users as Testers
• Route traffic between your deployment
slots based on percentage of the traffic
• Use App Insights to check for problems
Join the Conversation #VS2015 @AdamCogan
Join the Conversation #VS2015 @AdamCogan
Eg. http://www.northwind.com
Eg. http://azuredeploy.azurewebsites.net
20%80%
Why should I use Testing in Production
• Measure effectiveness of different implementations of a
feature
• Test which site leads to a decrease in bounce rate, or to
the greatest increase in revenue or session duration
• Testing new features without affecting all users
(Making your disaster less of a disaster)
Join the Conversation #VS2015 @AdamCogan
Auto Swap
• Addresses the “cold start” issue
• When you deploy your code changes, a
swap will automatically take place once
the deployment is complete
Join the Conversation #VS2015 @AdamCogan
Eg. http://www.northwind.com
Eg. http://azuredeploy.azurewebsites.net
When deployment is finished, a
swap will automatically take place
Eg. http://www1.northwind.com
Eg. http://azuredeploy-preprod.azurewebsites.net
Join the Conversation #VS2015 @AdamCogan
Do you know how to find bad smells in code?
The state of testing
• Code
• VS Unit Tests (recommended)
• Nunit Tests
• UI
• Coded UI Tests with MTM
• Selenium + Chutzpah (recommended)
• Javascript
• JSUnit
• Qunit (made by the jQuery team)
• Mocha (new comer)
• Jasmine + Chutzpah (recommended)
Chutzpah
Lets you run Javascript unit tests in Visual Studio
1. Write your unit tests in your favourite framework
(Jasmine, Mocha)
2. Get the Chutzpah VS extension
3. Right click run tests!
Join the Conversation #VS2015 @AdamCogan
Join the Conversation #VS2015 @AdamCogan
Join the Conversation #VS2015 @AdamCogan
Join the Conversation #VS2015 @AdamCogan
Join the Conversation #VS2015 @AdamCogan
xUnit.net First Class Citizen in 2015
Join the Conversation #VS2015 @AdamCogan
Old way using MSTest
New way using xUnit.net
MVC + WebAPI + TypeScript + KnockoutJS + AngularJS
This Year I recommend…
• SPA app front end + WebAPI backend
• Use App Insights for usage tracking + DevOps
• Xamarin.Forms for native cross platform mobile development
• Continuous deployment to Azure using Testing in Production and Deployment Slots
• Testing
• .NET VS Tests
• Selenium
• Javascript (Jasmine + Chutzpah)
Join the Conversation #VS2015 @AdamCogan
A trip down memory lane
ASP.NET 5 (was vNext)
Mobile Development
Azure + Continuous Deployment
Summary
What’s New
Agenda
2 things...
@AdamCogan #NetUG
Tweet your favourite feature
Join the Conversation #VS2015 @AdamCogan
Tweet your favourite video @SSWTV
Check out tv.ssw.com
Join the Conversation #VS2015 @AdamCogan
Thank you!
info@ssw.com.au
www.ssw.com.au
Sydney | Melbourne | Brisbane | Adelaide
find me on slideshare:
http://www.slideshare.net/SSWconsulting/

More Related Content

What's hot

Team Foundation Server 2012 Reporting
Team Foundation Server 2012 ReportingTeam Foundation Server 2012 Reporting
Team Foundation Server 2012 Reporting
Steve Lange
 
Visual Studio 2010 Testing for Developers
Visual Studio 2010 Testing for DevelopersVisual Studio 2010 Testing for Developers
Visual Studio 2010 Testing for Developers
Steve Lange
 
Continuous test automation
Continuous test automationContinuous test automation
Continuous test automation
Viresh Doshi
 
DevOps Continuous Integration & Delivery - A Whitepaper by RapidValue
DevOps Continuous Integration & Delivery - A Whitepaper by RapidValueDevOps Continuous Integration & Delivery - A Whitepaper by RapidValue
DevOps Continuous Integration & Delivery - A Whitepaper by RapidValue
RapidValue
 
Dev ops is more than CI+CD tools
Dev ops is more than CI+CD toolsDev ops is more than CI+CD tools
Dev ops is more than CI+CD tools
Sudipta Lahiri
 
Test Automation With Cucumber JVM, Selenium, and Mocha
Test Automation With Cucumber JVM, Selenium, and MochaTest Automation With Cucumber JVM, Selenium, and Mocha
Test Automation With Cucumber JVM, Selenium, and Mocha
Salesforce Developers
 
Continuous Delivery, Continuous Integration
Continuous Delivery, Continuous Integration Continuous Delivery, Continuous Integration
Continuous Delivery, Continuous Integration
Amazon Web Services
 
[Webinar] Test First, Fail Fast - Simplifying the Tester's Transition to DevOps
[Webinar] Test First, Fail Fast - Simplifying the Tester's Transition to DevOps[Webinar] Test First, Fail Fast - Simplifying the Tester's Transition to DevOps
[Webinar] Test First, Fail Fast - Simplifying the Tester's Transition to DevOps
KMS Technology
 
Mobile Apps development best practices. TDD, CI, CD
Mobile Apps development best practices. TDD, CI, CDMobile Apps development best practices. TDD, CI, CD
Mobile Apps development best practices. TDD, CI, CD
GlobalLogic Ukraine
 
Introduction to Team Foundation Server (TFS) Online
Introduction to Team Foundation Server (TFS) OnlineIntroduction to Team Foundation Server (TFS) Online
Introduction to Team Foundation Server (TFS) Online
Denis Voituron
 
Continuous Delivery: The Dirty Details
Continuous Delivery: The Dirty DetailsContinuous Delivery: The Dirty Details
Continuous Delivery: The Dirty Details
Mike Brittain
 
Using Clojure, NoSQL Databases and Functional-Style JavaScript to Write Gext-...
Using Clojure, NoSQL Databases and Functional-Style JavaScript to Write Gext-...Using Clojure, NoSQL Databases and Functional-Style JavaScript to Write Gext-...
Using Clojure, NoSQL Databases and Functional-Style JavaScript to Write Gext-...
Stefan Richter
 
Lap Around Visual Studio 2010 Ultimate And TFS 2010
Lap Around Visual Studio 2010 Ultimate And TFS 2010Lap Around Visual Studio 2010 Ultimate And TFS 2010
Lap Around Visual Studio 2010 Ultimate And TFS 2010
Ed Blankenship
 
Testing for Logic App Solutions | Integration Monday
Testing for Logic App Solutions | Integration MondayTesting for Logic App Solutions | Integration Monday
Testing for Logic App Solutions | Integration Monday
BizTalk360
 
Continuous Delivery
Continuous DeliveryContinuous Delivery
Continuous Delivery
Mike McGarr
 
DevOps: Sprinkle Dev, Sprinkle Ops, Let's make Cake, not Mud Pies
DevOps: Sprinkle Dev, Sprinkle Ops, Let's make Cake, not Mud PiesDevOps: Sprinkle Dev, Sprinkle Ops, Let's make Cake, not Mud Pies
DevOps: Sprinkle Dev, Sprinkle Ops, Let's make Cake, not Mud Pies
Centric Consulting
 
TFS 2010: Team Development on Crack
TFS 2010: Team Development on CrackTFS 2010: Team Development on Crack
TFS 2010: Team Development on Crack
Steve Lange
 
Testing lightning components feb 15th 2018
Testing lightning components feb 15th 2018Testing lightning components feb 15th 2018
Testing lightning components feb 15th 2018
Richard Clark
 
Agile scrum как не угробить ваш продукт простым инструментом, Артем Быковец
Agile scrum как не угробить ваш продукт простым инструментом, Артем БыковецAgile scrum как не угробить ваш продукт простым инструментом, Артем Быковец
Agile scrum как не угробить ваш продукт простым инструментом, Артем Быковец
Sigma Software
 
Continuous Delivery Distilled
Continuous Delivery DistilledContinuous Delivery Distilled
Continuous Delivery Distilled
Matt Callanan
 

What's hot (20)

Team Foundation Server 2012 Reporting
Team Foundation Server 2012 ReportingTeam Foundation Server 2012 Reporting
Team Foundation Server 2012 Reporting
 
Visual Studio 2010 Testing for Developers
Visual Studio 2010 Testing for DevelopersVisual Studio 2010 Testing for Developers
Visual Studio 2010 Testing for Developers
 
Continuous test automation
Continuous test automationContinuous test automation
Continuous test automation
 
DevOps Continuous Integration & Delivery - A Whitepaper by RapidValue
DevOps Continuous Integration & Delivery - A Whitepaper by RapidValueDevOps Continuous Integration & Delivery - A Whitepaper by RapidValue
DevOps Continuous Integration & Delivery - A Whitepaper by RapidValue
 
Dev ops is more than CI+CD tools
Dev ops is more than CI+CD toolsDev ops is more than CI+CD tools
Dev ops is more than CI+CD tools
 
Test Automation With Cucumber JVM, Selenium, and Mocha
Test Automation With Cucumber JVM, Selenium, and MochaTest Automation With Cucumber JVM, Selenium, and Mocha
Test Automation With Cucumber JVM, Selenium, and Mocha
 
Continuous Delivery, Continuous Integration
Continuous Delivery, Continuous Integration Continuous Delivery, Continuous Integration
Continuous Delivery, Continuous Integration
 
[Webinar] Test First, Fail Fast - Simplifying the Tester's Transition to DevOps
[Webinar] Test First, Fail Fast - Simplifying the Tester's Transition to DevOps[Webinar] Test First, Fail Fast - Simplifying the Tester's Transition to DevOps
[Webinar] Test First, Fail Fast - Simplifying the Tester's Transition to DevOps
 
Mobile Apps development best practices. TDD, CI, CD
Mobile Apps development best practices. TDD, CI, CDMobile Apps development best practices. TDD, CI, CD
Mobile Apps development best practices. TDD, CI, CD
 
Introduction to Team Foundation Server (TFS) Online
Introduction to Team Foundation Server (TFS) OnlineIntroduction to Team Foundation Server (TFS) Online
Introduction to Team Foundation Server (TFS) Online
 
Continuous Delivery: The Dirty Details
Continuous Delivery: The Dirty DetailsContinuous Delivery: The Dirty Details
Continuous Delivery: The Dirty Details
 
Using Clojure, NoSQL Databases and Functional-Style JavaScript to Write Gext-...
Using Clojure, NoSQL Databases and Functional-Style JavaScript to Write Gext-...Using Clojure, NoSQL Databases and Functional-Style JavaScript to Write Gext-...
Using Clojure, NoSQL Databases and Functional-Style JavaScript to Write Gext-...
 
Lap Around Visual Studio 2010 Ultimate And TFS 2010
Lap Around Visual Studio 2010 Ultimate And TFS 2010Lap Around Visual Studio 2010 Ultimate And TFS 2010
Lap Around Visual Studio 2010 Ultimate And TFS 2010
 
Testing for Logic App Solutions | Integration Monday
Testing for Logic App Solutions | Integration MondayTesting for Logic App Solutions | Integration Monday
Testing for Logic App Solutions | Integration Monday
 
Continuous Delivery
Continuous DeliveryContinuous Delivery
Continuous Delivery
 
DevOps: Sprinkle Dev, Sprinkle Ops, Let's make Cake, not Mud Pies
DevOps: Sprinkle Dev, Sprinkle Ops, Let's make Cake, not Mud PiesDevOps: Sprinkle Dev, Sprinkle Ops, Let's make Cake, not Mud Pies
DevOps: Sprinkle Dev, Sprinkle Ops, Let's make Cake, not Mud Pies
 
TFS 2010: Team Development on Crack
TFS 2010: Team Development on CrackTFS 2010: Team Development on Crack
TFS 2010: Team Development on Crack
 
Testing lightning components feb 15th 2018
Testing lightning components feb 15th 2018Testing lightning components feb 15th 2018
Testing lightning components feb 15th 2018
 
Agile scrum как не угробить ваш продукт простым инструментом, Артем Быковец
Agile scrum как не угробить ваш продукт простым инструментом, Артем БыковецAgile scrum как не угробить ваш продукт простым инструментом, Артем Быковец
Agile scrum как не угробить ваш продукт простым инструментом, Артем Быковец
 
Continuous Delivery Distilled
Continuous Delivery DistilledContinuous Delivery Distilled
Continuous Delivery Distilled
 

Similar to What’s new in VS 2015 and ALM 2015

Que hay de nuevo en Visual Studio 2013 y ASP.NET 5.1
Que hay de nuevo en Visual Studio 2013 y ASP.NET 5.1Que hay de nuevo en Visual Studio 2013 y ASP.NET 5.1
Que hay de nuevo en Visual Studio 2013 y ASP.NET 5.1
Rodolfo Finochietti
 
Visual Studio | Lanzamiento VS2017 en Buenos Aires - 11/03/2017
Visual Studio | Lanzamiento VS2017 en Buenos Aires - 11/03/2017Visual Studio | Lanzamiento VS2017 en Buenos Aires - 11/03/2017
Visual Studio | Lanzamiento VS2017 en Buenos Aires - 11/03/2017
Pablo Ariel Di Loreto
 
Udvid din test portefølje med coded ui test og cloud load test
Udvid din test portefølje med coded ui test og cloud load testUdvid din test portefølje med coded ui test og cloud load test
Udvid din test portefølje med coded ui test og cloud load test
Peter Lindberg
 
Abhiram_Bharadwaj_Resume -Both
Abhiram_Bharadwaj_Resume -BothAbhiram_Bharadwaj_Resume -Both
Abhiram_Bharadwaj_Resume -BothAbhiram Bharadwaj
 
FEDSPUG April 2014: Visual Studio 2013 for Application Lifecycle Management &...
FEDSPUG April 2014: Visual Studio 2013 for Application Lifecycle Management &...FEDSPUG April 2014: Visual Studio 2013 for Application Lifecycle Management &...
FEDSPUG April 2014: Visual Studio 2013 for Application Lifecycle Management &...WSPDC & FEDSPUG
 
Vincent biret azure functions and flow (ottawa)
Vincent biret azure functions and flow (ottawa)Vincent biret azure functions and flow (ottawa)
Vincent biret azure functions and flow (ottawa)
Vincent Biret
 
Vincent biret azure functions and flow (toronto)
Vincent biret azure functions and flow (toronto)Vincent biret azure functions and flow (toronto)
Vincent biret azure functions and flow (toronto)
Vincent Biret
 
Planning for Windows 10 and Internet Explorer 11
Planning for Windows 10 and Internet Explorer 11 Planning for Windows 10 and Internet Explorer 11
Planning for Windows 10 and Internet Explorer 11
Flexera
 
Why and How SmartNews uses SaaS?
Why and How SmartNews uses SaaS?Why and How SmartNews uses SaaS?
Why and How SmartNews uses SaaS?
Takumi Sakamoto
 
Transform software delivery with tasktop integration hub
Transform software delivery with tasktop integration hubTransform software delivery with tasktop integration hub
Transform software delivery with tasktop integration hub
Tasktop
 
Shradha-exprnc -cv
Shradha-exprnc -cvShradha-exprnc -cv
Shradha-exprnc -cvshradha sahu
 
Oracle JET and React Frontends.pptx
Oracle JET and React Frontends.pptxOracle JET and React Frontends.pptx
Oracle JET and React Frontends.pptx
Dan Curtis
 
Azure and web sites hackaton deck
Azure and web sites hackaton deckAzure and web sites hackaton deck
Azure and web sites hackaton deck
Alexey Bokov
 
Measure and increase developer productivity with help of Severless by Kazulki...
Measure and increase developer productivity with help of Severless by Kazulki...Measure and increase developer productivity with help of Severless by Kazulki...
Measure and increase developer productivity with help of Severless by Kazulki...
Vadym Kazulkin
 
Nitin_Krishna_Resume
Nitin_Krishna_ResumeNitin_Krishna_Resume
Nitin_Krishna_ResumeNitin Krishna
 
Test Design for Fully Automated Build Architectures
Test Design for Fully Automated Build ArchitecturesTest Design for Fully Automated Build Architectures
Test Design for Fully Automated Build Architectures
Melissa Benua
 
Real World SharePoint Framework and Azure Services
Real World SharePoint Framework and Azure ServicesReal World SharePoint Framework and Azure Services
Real World SharePoint Framework and Azure Services
Brian Culver
 
Measure and Increase Developer Productivity with Help of Serverless at AWS Co...
Measure and Increase Developer Productivity with Help of Serverless at AWS Co...Measure and Increase Developer Productivity with Help of Serverless at AWS Co...
Measure and Increase Developer Productivity with Help of Serverless at AWS Co...
Vadym Kazulkin
 
S Kumar Resume
S Kumar ResumeS Kumar Resume
S Kumar ResumeS Kumar
 
English Resume - Glaucia Lemos
English Resume - Glaucia LemosEnglish Resume - Glaucia Lemos
English Resume - Glaucia Lemos
Glaucia Lemos
 

Similar to What’s new in VS 2015 and ALM 2015 (20)

Que hay de nuevo en Visual Studio 2013 y ASP.NET 5.1
Que hay de nuevo en Visual Studio 2013 y ASP.NET 5.1Que hay de nuevo en Visual Studio 2013 y ASP.NET 5.1
Que hay de nuevo en Visual Studio 2013 y ASP.NET 5.1
 
Visual Studio | Lanzamiento VS2017 en Buenos Aires - 11/03/2017
Visual Studio | Lanzamiento VS2017 en Buenos Aires - 11/03/2017Visual Studio | Lanzamiento VS2017 en Buenos Aires - 11/03/2017
Visual Studio | Lanzamiento VS2017 en Buenos Aires - 11/03/2017
 
Udvid din test portefølje med coded ui test og cloud load test
Udvid din test portefølje med coded ui test og cloud load testUdvid din test portefølje med coded ui test og cloud load test
Udvid din test portefølje med coded ui test og cloud load test
 
Abhiram_Bharadwaj_Resume -Both
Abhiram_Bharadwaj_Resume -BothAbhiram_Bharadwaj_Resume -Both
Abhiram_Bharadwaj_Resume -Both
 
FEDSPUG April 2014: Visual Studio 2013 for Application Lifecycle Management &...
FEDSPUG April 2014: Visual Studio 2013 for Application Lifecycle Management &...FEDSPUG April 2014: Visual Studio 2013 for Application Lifecycle Management &...
FEDSPUG April 2014: Visual Studio 2013 for Application Lifecycle Management &...
 
Vincent biret azure functions and flow (ottawa)
Vincent biret azure functions and flow (ottawa)Vincent biret azure functions and flow (ottawa)
Vincent biret azure functions and flow (ottawa)
 
Vincent biret azure functions and flow (toronto)
Vincent biret azure functions and flow (toronto)Vincent biret azure functions and flow (toronto)
Vincent biret azure functions and flow (toronto)
 
Planning for Windows 10 and Internet Explorer 11
Planning for Windows 10 and Internet Explorer 11 Planning for Windows 10 and Internet Explorer 11
Planning for Windows 10 and Internet Explorer 11
 
Why and How SmartNews uses SaaS?
Why and How SmartNews uses SaaS?Why and How SmartNews uses SaaS?
Why and How SmartNews uses SaaS?
 
Transform software delivery with tasktop integration hub
Transform software delivery with tasktop integration hubTransform software delivery with tasktop integration hub
Transform software delivery with tasktop integration hub
 
Shradha-exprnc -cv
Shradha-exprnc -cvShradha-exprnc -cv
Shradha-exprnc -cv
 
Oracle JET and React Frontends.pptx
Oracle JET and React Frontends.pptxOracle JET and React Frontends.pptx
Oracle JET and React Frontends.pptx
 
Azure and web sites hackaton deck
Azure and web sites hackaton deckAzure and web sites hackaton deck
Azure and web sites hackaton deck
 
Measure and increase developer productivity with help of Severless by Kazulki...
Measure and increase developer productivity with help of Severless by Kazulki...Measure and increase developer productivity with help of Severless by Kazulki...
Measure and increase developer productivity with help of Severless by Kazulki...
 
Nitin_Krishna_Resume
Nitin_Krishna_ResumeNitin_Krishna_Resume
Nitin_Krishna_Resume
 
Test Design for Fully Automated Build Architectures
Test Design for Fully Automated Build ArchitecturesTest Design for Fully Automated Build Architectures
Test Design for Fully Automated Build Architectures
 
Real World SharePoint Framework and Azure Services
Real World SharePoint Framework and Azure ServicesReal World SharePoint Framework and Azure Services
Real World SharePoint Framework and Azure Services
 
Measure and Increase Developer Productivity with Help of Serverless at AWS Co...
Measure and Increase Developer Productivity with Help of Serverless at AWS Co...Measure and Increase Developer Productivity with Help of Serverless at AWS Co...
Measure and Increase Developer Productivity with Help of Serverless at AWS Co...
 
S Kumar Resume
S Kumar ResumeS Kumar Resume
S Kumar Resume
 
English Resume - Glaucia Lemos
English Resume - Glaucia LemosEnglish Resume - Glaucia Lemos
English Resume - Glaucia Lemos
 

More from SSW

ALM for CRM - George Doubinski
ALM for CRM - George DoubinskiALM for CRM - George Doubinski
ALM for CRM - George DoubinskiSSW
 
Rules to-better-video-export-process
Rules to-better-video-export-processRules to-better-video-export-process
Rules to-better-video-export-processSSW
 
VisualStudio2012-WhatsNew-TechEd_v3-9
VisualStudio2012-WhatsNew-TechEd_v3-9VisualStudio2012-WhatsNew-TechEd_v3-9
VisualStudio2012-WhatsNew-TechEd_v3-9SSW
 
Interface usability-adding-schweppervescence-ver3-8
Interface usability-adding-schweppervescence-ver3-8Interface usability-adding-schweppervescence-ver3-8
Interface usability-adding-schweppervescence-ver3-8
SSW
 
SharePoint Jonah Lomu of CMS
SharePoint Jonah Lomu of CMSSharePoint Jonah Lomu of CMS
SharePoint Jonah Lomu of CMSSSW
 
Interface Usability - Adding Schweppervescence
Interface Usability - Adding SchweppervescenceInterface Usability - Adding Schweppervescence
Interface Usability - Adding Schweppervescence
SSW
 

More from SSW (6)

ALM for CRM - George Doubinski
ALM for CRM - George DoubinskiALM for CRM - George Doubinski
ALM for CRM - George Doubinski
 
Rules to-better-video-export-process
Rules to-better-video-export-processRules to-better-video-export-process
Rules to-better-video-export-process
 
VisualStudio2012-WhatsNew-TechEd_v3-9
VisualStudio2012-WhatsNew-TechEd_v3-9VisualStudio2012-WhatsNew-TechEd_v3-9
VisualStudio2012-WhatsNew-TechEd_v3-9
 
Interface usability-adding-schweppervescence-ver3-8
Interface usability-adding-schweppervescence-ver3-8Interface usability-adding-schweppervescence-ver3-8
Interface usability-adding-schweppervescence-ver3-8
 
SharePoint Jonah Lomu of CMS
SharePoint Jonah Lomu of CMSSharePoint Jonah Lomu of CMS
SharePoint Jonah Lomu of CMS
 
Interface Usability - Adding Schweppervescence
Interface Usability - Adding SchweppervescenceInterface Usability - Adding Schweppervescence
Interface Usability - Adding Schweppervescence
 

Recently uploaded

Navigating the Metaverse: A Journey into Virtual Evolution"
Navigating the Metaverse: A Journey into Virtual Evolution"Navigating the Metaverse: A Journey into Virtual Evolution"
Navigating the Metaverse: A Journey into Virtual Evolution"
Donna Lenk
 
Enhancing Research Orchestration Capabilities at ORNL.pdf
Enhancing Research Orchestration Capabilities at ORNL.pdfEnhancing Research Orchestration Capabilities at ORNL.pdf
Enhancing Research Orchestration Capabilities at ORNL.pdf
Globus
 
Atelier - Innover avec l’IA Générative et les graphes de connaissances
Atelier - Innover avec l’IA Générative et les graphes de connaissancesAtelier - Innover avec l’IA Générative et les graphes de connaissances
Atelier - Innover avec l’IA Générative et les graphes de connaissances
Neo4j
 
GOING AOT WITH GRAALVM FOR SPRING BOOT (SPRING IO)
GOING AOT WITH GRAALVM FOR  SPRING BOOT (SPRING IO)GOING AOT WITH GRAALVM FOR  SPRING BOOT (SPRING IO)
GOING AOT WITH GRAALVM FOR SPRING BOOT (SPRING IO)
Alina Yurenko
 
AI Fusion Buddy Review: Brand New, Groundbreaking Gemini-Powered AI App
AI Fusion Buddy Review: Brand New, Groundbreaking Gemini-Powered AI AppAI Fusion Buddy Review: Brand New, Groundbreaking Gemini-Powered AI App
AI Fusion Buddy Review: Brand New, Groundbreaking Gemini-Powered AI App
Google
 
BoxLang: Review our Visionary Licenses of 2024
BoxLang: Review our Visionary Licenses of 2024BoxLang: Review our Visionary Licenses of 2024
BoxLang: Review our Visionary Licenses of 2024
Ortus Solutions, Corp
 
Globus Compute wth IRI Workflows - GlobusWorld 2024
Globus Compute wth IRI Workflows - GlobusWorld 2024Globus Compute wth IRI Workflows - GlobusWorld 2024
Globus Compute wth IRI Workflows - GlobusWorld 2024
Globus
 
How to Position Your Globus Data Portal for Success Ten Good Practices
How to Position Your Globus Data Portal for Success Ten Good PracticesHow to Position Your Globus Data Portal for Success Ten Good Practices
How to Position Your Globus Data Portal for Success Ten Good Practices
Globus
 
Top Features to Include in Your Winzo Clone App for Business Growth (4).pptx
Top Features to Include in Your Winzo Clone App for Business Growth (4).pptxTop Features to Include in Your Winzo Clone App for Business Growth (4).pptx
Top Features to Include in Your Winzo Clone App for Business Growth (4).pptx
rickgrimesss22
 
Graspan: A Big Data System for Big Code Analysis
Graspan: A Big Data System for Big Code AnalysisGraspan: A Big Data System for Big Code Analysis
Graspan: A Big Data System for Big Code Analysis
Aftab Hussain
 
Essentials of Automations: The Art of Triggers and Actions in FME
Essentials of Automations: The Art of Triggers and Actions in FMEEssentials of Automations: The Art of Triggers and Actions in FME
Essentials of Automations: The Art of Triggers and Actions in FME
Safe Software
 
Cracking the code review at SpringIO 2024
Cracking the code review at SpringIO 2024Cracking the code review at SpringIO 2024
Cracking the code review at SpringIO 2024
Paco van Beckhoven
 
Prosigns: Transforming Business with Tailored Technology Solutions
Prosigns: Transforming Business with Tailored Technology SolutionsProsigns: Transforming Business with Tailored Technology Solutions
Prosigns: Transforming Business with Tailored Technology Solutions
Prosigns
 
Exploring Innovations in Data Repository Solutions - Insights from the U.S. G...
Exploring Innovations in Data Repository Solutions - Insights from the U.S. G...Exploring Innovations in Data Repository Solutions - Insights from the U.S. G...
Exploring Innovations in Data Repository Solutions - Insights from the U.S. G...
Globus
 
A Sighting of filterA in Typelevel Rite of Passage
A Sighting of filterA in Typelevel Rite of PassageA Sighting of filterA in Typelevel Rite of Passage
A Sighting of filterA in Typelevel Rite of Passage
Philip Schwarz
 
openEuler Case Study - The Journey to Supply Chain Security
openEuler Case Study - The Journey to Supply Chain SecurityopenEuler Case Study - The Journey to Supply Chain Security
openEuler Case Study - The Journey to Supply Chain Security
Shane Coughlan
 
Top 7 Unique WhatsApp API Benefits | Saudi Arabia
Top 7 Unique WhatsApp API Benefits | Saudi ArabiaTop 7 Unique WhatsApp API Benefits | Saudi Arabia
Top 7 Unique WhatsApp API Benefits | Saudi Arabia
Yara Milbes
 
APIs for Browser Automation (MoT Meetup 2024)
APIs for Browser Automation (MoT Meetup 2024)APIs for Browser Automation (MoT Meetup 2024)
APIs for Browser Automation (MoT Meetup 2024)
Boni García
 
Dominate Social Media with TubeTrivia AI’s Addictive Quiz Videos.pdf
Dominate Social Media with TubeTrivia AI’s Addictive Quiz Videos.pdfDominate Social Media with TubeTrivia AI’s Addictive Quiz Videos.pdf
Dominate Social Media with TubeTrivia AI’s Addictive Quiz Videos.pdf
AMB-Review
 
Quarkus Hidden and Forbidden Extensions
Quarkus Hidden and Forbidden ExtensionsQuarkus Hidden and Forbidden Extensions
Quarkus Hidden and Forbidden Extensions
Max Andersen
 

Recently uploaded (20)

Navigating the Metaverse: A Journey into Virtual Evolution"
Navigating the Metaverse: A Journey into Virtual Evolution"Navigating the Metaverse: A Journey into Virtual Evolution"
Navigating the Metaverse: A Journey into Virtual Evolution"
 
Enhancing Research Orchestration Capabilities at ORNL.pdf
Enhancing Research Orchestration Capabilities at ORNL.pdfEnhancing Research Orchestration Capabilities at ORNL.pdf
Enhancing Research Orchestration Capabilities at ORNL.pdf
 
Atelier - Innover avec l’IA Générative et les graphes de connaissances
Atelier - Innover avec l’IA Générative et les graphes de connaissancesAtelier - Innover avec l’IA Générative et les graphes de connaissances
Atelier - Innover avec l’IA Générative et les graphes de connaissances
 
GOING AOT WITH GRAALVM FOR SPRING BOOT (SPRING IO)
GOING AOT WITH GRAALVM FOR  SPRING BOOT (SPRING IO)GOING AOT WITH GRAALVM FOR  SPRING BOOT (SPRING IO)
GOING AOT WITH GRAALVM FOR SPRING BOOT (SPRING IO)
 
AI Fusion Buddy Review: Brand New, Groundbreaking Gemini-Powered AI App
AI Fusion Buddy Review: Brand New, Groundbreaking Gemini-Powered AI AppAI Fusion Buddy Review: Brand New, Groundbreaking Gemini-Powered AI App
AI Fusion Buddy Review: Brand New, Groundbreaking Gemini-Powered AI App
 
BoxLang: Review our Visionary Licenses of 2024
BoxLang: Review our Visionary Licenses of 2024BoxLang: Review our Visionary Licenses of 2024
BoxLang: Review our Visionary Licenses of 2024
 
Globus Compute wth IRI Workflows - GlobusWorld 2024
Globus Compute wth IRI Workflows - GlobusWorld 2024Globus Compute wth IRI Workflows - GlobusWorld 2024
Globus Compute wth IRI Workflows - GlobusWorld 2024
 
How to Position Your Globus Data Portal for Success Ten Good Practices
How to Position Your Globus Data Portal for Success Ten Good PracticesHow to Position Your Globus Data Portal for Success Ten Good Practices
How to Position Your Globus Data Portal for Success Ten Good Practices
 
Top Features to Include in Your Winzo Clone App for Business Growth (4).pptx
Top Features to Include in Your Winzo Clone App for Business Growth (4).pptxTop Features to Include in Your Winzo Clone App for Business Growth (4).pptx
Top Features to Include in Your Winzo Clone App for Business Growth (4).pptx
 
Graspan: A Big Data System for Big Code Analysis
Graspan: A Big Data System for Big Code AnalysisGraspan: A Big Data System for Big Code Analysis
Graspan: A Big Data System for Big Code Analysis
 
Essentials of Automations: The Art of Triggers and Actions in FME
Essentials of Automations: The Art of Triggers and Actions in FMEEssentials of Automations: The Art of Triggers and Actions in FME
Essentials of Automations: The Art of Triggers and Actions in FME
 
Cracking the code review at SpringIO 2024
Cracking the code review at SpringIO 2024Cracking the code review at SpringIO 2024
Cracking the code review at SpringIO 2024
 
Prosigns: Transforming Business with Tailored Technology Solutions
Prosigns: Transforming Business with Tailored Technology SolutionsProsigns: Transforming Business with Tailored Technology Solutions
Prosigns: Transforming Business with Tailored Technology Solutions
 
Exploring Innovations in Data Repository Solutions - Insights from the U.S. G...
Exploring Innovations in Data Repository Solutions - Insights from the U.S. G...Exploring Innovations in Data Repository Solutions - Insights from the U.S. G...
Exploring Innovations in Data Repository Solutions - Insights from the U.S. G...
 
A Sighting of filterA in Typelevel Rite of Passage
A Sighting of filterA in Typelevel Rite of PassageA Sighting of filterA in Typelevel Rite of Passage
A Sighting of filterA in Typelevel Rite of Passage
 
openEuler Case Study - The Journey to Supply Chain Security
openEuler Case Study - The Journey to Supply Chain SecurityopenEuler Case Study - The Journey to Supply Chain Security
openEuler Case Study - The Journey to Supply Chain Security
 
Top 7 Unique WhatsApp API Benefits | Saudi Arabia
Top 7 Unique WhatsApp API Benefits | Saudi ArabiaTop 7 Unique WhatsApp API Benefits | Saudi Arabia
Top 7 Unique WhatsApp API Benefits | Saudi Arabia
 
APIs for Browser Automation (MoT Meetup 2024)
APIs for Browser Automation (MoT Meetup 2024)APIs for Browser Automation (MoT Meetup 2024)
APIs for Browser Automation (MoT Meetup 2024)
 
Dominate Social Media with TubeTrivia AI’s Addictive Quiz Videos.pdf
Dominate Social Media with TubeTrivia AI’s Addictive Quiz Videos.pdfDominate Social Media with TubeTrivia AI’s Addictive Quiz Videos.pdf
Dominate Social Media with TubeTrivia AI’s Addictive Quiz Videos.pdf
 
Quarkus Hidden and Forbidden Extensions
Quarkus Hidden and Forbidden ExtensionsQuarkus Hidden and Forbidden Extensions
Quarkus Hidden and Forbidden Extensions
 

What’s new in VS 2015 and ALM 2015

  • 1. Enterprise Software Development Join the Conversation #VS2015 @AdamCogan V18.1
  • 2. @AdamCogan | Chief Architect @ SSW | Microsoft Regional Director What’s new in Visual Studio 2015 Join the Conversation #VS2015 @AdamCogan
  • 3. A trip down memory lane (Taylor Square – Oxford St Sydney)
  • 4. • Web Forms • XML Web Services • Windows Forms VS 2002
  • 5. • .NET 1.1 • Mobile Devices (ASP.NET) • Compact Framework • Enterprise Templates VS 2003
  • 6. • .NET 2.0 • Generics • Click Once • Web ASP.NET 2.0 Local web server (Cassini) • Testers Web Tests VS 2005
  • 7. • .NET 3.5 • LINQ, LINQ to SQL • WPF/HTML Designers • Web MVC 1.0 JavaScript IntelliSense • Testing Web/Load Testing VS 2008
  • 8. • .NET 4.0 • F# • Parallel Extensions • Quick Search (Navigate to)* • IntelliTrace • Web MVC 2 & 3 • Testers Test Manager Coded UI Tests VS 2010 Join the Conversation #VS2015 @AdamCogan
  • 9. • Metro Modern UI! • Search + Quick Launch • Faster Add References • NuGet • New Team Explorer • Storyboarding with PPT* • IntelliTrace in Production • Web MVC 3 & 4 Page Inspector CSS & HTML5 Debug in Chrome • Testers Exploratory Testing Feedback Tool VS 2012
  • 10. Join the Conversation #VS2015 @AdamCogan
  • 11. • VisualStudio.com • Visual Studio Community* • Git Support • TypeScript • Web MVC 5 + WebAPIs Browser Link* Twitter Bootstrap OAuth • 64 bit Edit & Continue • CTRL + , • Peek, Code Lens, CodeMap • Sync Preferences VS 2013
  • 12. • Uses SignalR to push changes to connected browsers • Update HTML, CSS • Refresh multiple browsers • Design mode Browser Link Join the Conversation #VS2015 @AdamCogan
  • 13.
  • 14. Join the Conversation #VS2015 @AdamCogan
  • 15. Browser Link + Web Essentials • Make changes in the browsers dev tools, save back to VS • Find unused CSS • http://vswebessentials.com/features/browserlink Join the Conversation #VS2015 @AdamCogan
  • 16. A trip down memory lane ASP.NET 5 (was vNext) Mobile Development Azure Summary What’s New (2014 + 2015) Agenda
  • 17. The Coganator Adam Cogan @AdamCogan  Chief Architect at SSW  Developing custom solutions  Perform Software Audits  Microsoft Gold Partner  Microsoft Regional Director  ASP Insider  ALM MVP Join the Conversation #VS2015 @AdamCogan
  • 18.
  • 19. What’s New In the 2013 Updates
  • 20. • Better support for IE < 10 • Bug fixes VS 2013.1 http://support.microsoft.com/kb/2911573 Join the Conversation #VS2015 @AdamCogan
  • 21. Visual Studio • SQL 2014 support • Testing Cloud load testing + App Insights integration Coded UI + Unit Tests for WinPhone 8.1 • Git improvements (blame) TFS • Add charts to project portal • Work Item Tagging • Import from VSO • Web • Improved JSON/Sass/Less editors • TypeScript 1.0 • Backlog management improvements Non-working days Performance VS 2013.2 http://support.microsoft.com/kb/2927432/en-us
  • 22. Visual Studio • CodeLens for Git • App Insights bundled in • Azure Mobile Service project • Cordova tooling TFS • Configurable display on ‘in progress’ items on the backlog VS 2013.3 http://support.microsoft.com/kb/2933779
  • 23. Visual Studio • CodeLens improvements TFS • Testing • Charts • Filtering • Tagging • Release Management VS 2013.4 http://www.visualstudio.com/en- us/news/vs2013-update4-rtm-vs.aspx
  • 24. 3 Cools things on VisualStudio.com
  • 25. • 1. Monaco Live editing of Azure Sites • 2. Pull Requests for Git • 3. App Insights Monitoring of availability + Make bug tracking + Performance issues + usage tracking part of your ALM process 2015 VSO / ALM…
  • 26. • ? LinqPad • Git Client • Code Editor • Almost as good as VS (desktop) Intellisense Highlight references/usage 1. Monaco Editor for VS Online Join the Conversation #VS2015 @AdamCogan
  • 27.
  • 28. Boring title, let’s make it more exiting
  • 29.
  • 31.
  • 32. Add a dash of excitement
  • 33.
  • 34.
  • 36. • TFS History ? • Annotate (and Blame) rock • Git Pull Requests give code review abilities • http://blogs.msdn.com/b/visualstudioalm/archive/201 4/06/10/git-pull-request-visual-studio-online.aspx Git Pull Requests Join the Conversation #VS2015 @AdamCogan
  • 37. Jamal – the new guy Join the Conversation #VS2015 @AdamCogan
  • 38.
  • 39. Adam - What did Jamal change? Review the pull request Adam Cogan Join the Conversation #VS2015 @AdamCogan
  • 40. Summary of reviewers’ comments Adam Cogan
  • 41. Accepting or Rejecting Adam Cogan Join the Conversation #VS2015 @AdamCogan
  • 42. • Monitoring availability, bugs, performance, usage • Adds reporting to all your apps • Telemetry - See how users are using your applications • Logs data to VS Online • Helps you inspect and adapt – ALM lifecycle • http://rules.ssw.com.au/WebSites/RulesToBetterApplicationInsights/P ages/Do-you-know-the-process-to-improve-the-health-of-your-web- application.aspx Application Insights Join the Conversation #VS2015 @AdamCogan
  • 43.
  • 44. Join the Conversation #VS2015 @AdamCogan
  • 45.
  • 46.
  • 47. When should we deploy?
  • 49. What’s New In Visual Studio 2015
  • 51. https://visualstudio.uservoice.com/forums/121579-visual-studio/suggestions/2837384-change-all-caps-menu-in-vs-2012-to-vs-beta-format “Change All CAPS Menu in VS 2012 to VS Beta format: File Edit Instead of FILE EDIT” (3056 votes) https://visualstudio.uservoice.com/forums/121579-visual-studio/suggestions/2628203-remove-all-caps “Remove ALL CAPS” (2072 votes)
  • 52. VS 2015 Join the Conversation #VS2015 @AdamCogan
  • 53. 1. Roslyn http://visualstudiomagazine.com/articles/2012/03/20/10-questions-10- answers-on-roslyn.aspx http://blogs.msdn.com/b/dotnet/archive/2014/02/24/a-new-look-for-net- reference-source.aspx [video] Framework bugs? Reflector Compilers for C# and VB.NET exposed as services via API Eg. SSW Code Auditor has Roslyn compiled Rules APIs for Code Analysis and Refactoring Eg. SSW Code Auditor can work like CodeLens and highlight errors in the IDE Resharper 2. New language operators 3. More refactoring Developer Goodies Join the Conversation #VS2015 @AdamCogan
  • 54. What is Roslyn? • New C# and VB.NET compiler • Exposes modules for syntactic (lexical) analysis of code • Letting you write plugins for Code Analysis and Refactoring • Dynamic Compilation • Fast! • E.g. Code Lens, SSW Code Auditor… Join the Conversation #VS2015 @AdamCogan
  • 55.
  • 56. Old Regex Rule in Code Auditor
  • 57. New C# Rules in Code Auditor using Roslyn
  • 59. Join the Conversation #VS2015 @AdamCogan
  • 60. Join the Conversation #VS2015 @AdamCogan
  • 61. It’s still beta It doesn’t support other languages e.g. HTML, JavaScript, etc. Scripting API was removed  Lack of documentation Out of the box Parser & Lexer Allows code fixes Accurate It can be used in Standalone product Used throughout VS 2015 Reporting Services The Pros and Cons of Roslyn Join the Conversation #VS2015 @AdamCogan
  • 62. Join the Conversation #VS2015 @AdamCogan
  • 65. VS 2013 if (a != null) { a.Dispose(); } VS 2015 a?.Dispose(); event EventHandler OnDoStuff; void DoStuff() { if (OnDoStuff != null) { OnDoStuff.Invoke(this, new EventArgs()); } } event EventHandler OnDoStuff; void DoStuff() { OnDoStuff?.Invoke(this, new EventArgs()); } ? = if it’s not null Join the Conversation #VS2015 @AdamCogan
  • 66. Other Language features from Roslyn a. Auto Property Initializers b. Declaration Expressions c. Primary constructors Join the Conversation #VS2015 @AdamCogan
  • 67. Auto Property Initializers VS 2013 public class Foo { public int Bar { get; set; } public Foo() { Bar = 5; } } VS 2015 public class Foo { public int Bar { get; set; } = 5; } Note: Don’t have to declare a constructor just to set defaults Join the Conversation #VS2015 @AdamCogan
  • 68. Declaration Expressions VS 2013 public void Stuff() { var a = "123"; int b; int.TryParse(a, out b); } VS 2015 public void Stuff() { var a = "123"; int.TryParse(a, out var b); } Join the Conversation #VS2015 @AdamCogan
  • 69. c. Primary Constructors VS 2013 public class FooBar { public int X { get; set; } public int Y { get; set; } public FooBar (int x, int y) { X = x; Y = y; } } VS 2015 public class FooBar(int x, int y) { public int X { get; set; } = x; public int Y { get; set; } = y; } Auto Property Initializers Join the Conversation #VS2015 @AdamCogan
  • 70. One of the best language features in .NET… • In 2008 we got LINQ • In 2014 the java guys got LINQ in Java 8 • But… Join the Conversation #VS2015 @AdamCogan
  • 71. Join the Conversation #VS2015 @AdamCogan In VS2013.4
  • 72. Join the Conversation #VS2015 @AdamCogan In VS2015
  • 73. Other Language features from Roslyn • For a full list see • https://roslyn.codeplex.com/wikipage?title=Language%20Feature%20Status&r eferringTitle=Home String interpolation "{0} {1} is {2} years old.“, p.First, p.Last, p.Age "{p.First} {p.Last} is {p.Age} years old." • You can write the same thing with 50% less code • Now developers are now 50% more efficient. • Bosses will now ask us to ship 50% faster ;) Join the Conversation #VS2015 @AdamCogan
  • 74. Warning: You need to modify the project file to enable these new language features (in 2013) <OutputPath>binDebug</OutputPath> <DefineConstants>DEBUG;TRACE</DefineConstants> <ErrorReport>prompt</ErrorReport> <WarningLevel>4</WarningLevel> <LangVersion>experimental</LangVersion> Join the Conversation #VS2015 @AdamCogan
  • 75. More Refactoring… Light bulbs Join the Conversation #VS2015 @AdamCogan Light bulbs are the new home for all quick actions you take in the Visual Studio editor (very similar to ReSharper)
  • 76. More Refactoring… Get # Gives you a preview of the refactoring
  • 77. Code Previews… Gives you a preview of the code changes Visual Studio will make Join the Conversation #VS2015 @AdamCogan
  • 78. Improved Tool Tips VS 2013 VS 2015 Join the Conversation #VS2015 @AdamCogan
  • 79. Improved Tool Tips VS 2013 VS 2015 Join the Conversation #VS2015 @AdamCogan
  • 80. Code Lens Join the Conversation #VS2015 @AdamCogan
  • 81. Impediments with Unit Tests… • The code might not lend itself to being unit testable • Tight dependencies • External environments… • Difficult to measuring test quality • Code coverage • Number of assertions • The happy path vs edge cases • What assertions should we put in? Join the Conversation #VS2015 @AdamCogan
  • 82. Smart Unit Tests… • Address these impediments. • Goes through the code, finding all of the possible code paths • Generates unit tests for each scenario it finds Join the Conversation #VS2015 @AdamCogan
  • 83. What’s wrong with this code? Join the Conversation #VS2015 @AdamCogan
  • 84. Right click method name to get “Smart Unit Test” option. Join the Conversation #VS2015 @AdamCogan
  • 85. Automatically created unit tests. Join the Conversation #VS2015 @AdamCogan
  • 86. Fix the code Re-run smart tests after adding null reference check Join the Conversation #VS2015 @AdamCogan
  • 87. Smart Unit tests are not an excuse not to write Unit Tests!
  • 88. Blend… Join the Conversation #VS2015 @AdamCogan
  • 89. Join the Conversation #VS2015 @AdamCogan
  • 90. Join the Conversation #VS2015 @AdamCogan
  • 91. Windows 10 will be HUGE It will be a FREE upgrade for anyone on Win 7/8/8.1 for the first 12 months It can be run on small devices, such as Raspberry Pi 2 (Headless) It will be easy to develop solutions targeting more stuff, such as Xbox One and new Augmented Reality headset (Holo Lens - https://www.youtube.com/watch?v=aThCr0PsyuA) Cortana (i.e. Siri or Google Voice) is coming pre-installed in Windows 10 Spartan web browser are coming to Windows 10. It is exciting. Join the Conversation #VS2015 @AdamCogan
  • 92. NET has gone Open Source on GitHub Microsoft is providing the full .NET server stack in open source, including - ASP.NET, - the .NET compiler, - the .NET Core Runtime, - Framework and Libraries Will enable developers to build with .NET across Windows, Mac or Linux. Join the Conversation #VS2015 @AdamCogan
  • 93. Shared Projects vs PCL For 10 years we copied and pasted code and compiled against each platform (Windows Mobile 6 vs Windows Form) In VS2010 SP1 – PCLs were introduced, share the DLL, but we couldn't make use of platform specific hardware In VS2013 – PCLs for Windows 8.1 In VS2013.2 –Shared Projects for Windows 8.1 and Windows Phone 8.1 Projects. Shared Projects could only be used for Universal XAML apps, PCLs could be used for all other project types Join the Conversation #VS2015 @AdamCogan
  • 94. Shared Projects Think of code existing in a Shared Project as actually belonging to the project that references it It produces no DLLs so you can’t Unit Test shared projects directly Join the Conversation #VS2015 @AdamCogan
  • 95. Join the Conversation #VS2015 @AdamCogan public class NavigationHelper { public NavigationHelper() { #if WINDOWS_PHONE_APP Windows.Phone.UI.Input.HardwareButtons.BackPressed += HardwareButtons_BackPressed; #elif WINDOWS_APP // Ignore. Windows Store doesn't have support for this. #else #error Unknown platform #endif } // ... }
  • 96. VS 2015 Can used Shared Projects for all projects (MVC, WinForms) Join the Conversation #VS2015 @AdamCogan
  • 97. Portable Class Libraries Is the minimum .NET Framework that runs across different platforms Good cross platform development Produces a DLL that can be referenced by other projects Unit Testable Join the Conversation #VS2015 @AdamCogan
  • 98. Join the Conversation #VS2015 @AdamCogan
  • 99. Harder to share actual code to projects outside the solution Can quickly become unmaintainable Allow using platform specific APIs by using #if Can handle cases where the source is compatible but the binary wouldn’t be Can include non-code resources Join the Conversation #VS2015 @AdamCogan Shared Projects
  • 100. You get the minimum set of classes/features across the different platforms Harder to make use of platform specific functionality within the logic of the PCL E.g. PCL handles grabbing information from the device’s sensors, can’t get something new like developer’s coffee intake, but just what’s common (GPS, direction) Can share code via NuGet packages Can specify which platforms the PCL will target Join the Conversation #VS2015 @AdamCogan Portable Class Libraries
  • 101. Recommendation Use Portable Class Libraries where you don’t need platform specific features Join the Conversation #VS2015 @AdamCogan
  • 102. Slow Code Join the Conversation #VS2015 @AdamCogan
  • 103. PerfTips How long was your program running during the previous step or since the last breakpoint? Join the Conversation #VS2015 @AdamCogan
  • 104. Debugging made easier IntelliTrace? Join the Conversation #VS2015 @AdamCogan
  • 105. IntelliTrace in VS2015 Faster More Stats while debugging Join the Conversation #VS2015 @AdamCogan
  • 106. Join the Conversation #VS2015 @AdamCogan
  • 107. Join the Conversation #VS2015 @AdamCogan
  • 108. Join the Conversation #VS2015 @AdamCogan Zoom in on the timeline and see breakpoints and exceptions
  • 109. See Debug/Output statements in the timeline and debugger tab
  • 110. A trip down memory lane ASP.NET 5 (was vNext) Mobile Development Azure Summary What’s New Agenda
  • 113. Mobile First! Mobile First! Mobile First! + Cloud First!
  • 114. • ? • Native • Hybrid - HTML5 + Javascript/TypeScript (Cordova) • Cross Compilers (Xamarin, NativeScript) How many mobile options? Join the Conversation #VS2015 @AdamCogan
  • 115. • Write shared code in HTML and Javascript • Compiles into a Hybrid App on Windows Phone, Android and iOS • VS2013 Update 3 Cordova
  • 117.
  • 118.
  • 119. Join the Conversation #VS2015 @AdamCogan
  • 120. Join the Conversation #VS2015 @AdamCogan
  • 121. Join the Conversation #VS2015 @AdamCogan
  • 122. Join the Conversation #VS2015 @AdamCogan
  • 123. Ripple? Apache Ripple is a web based mobile environment simulator Join the Conversation #VS2015 @AdamCogan
  • 124. • ? • When it’s sucky and clunky • See if they are using native UI elements E.g. Gmail when you swipe to delete it’s a different style button • Show me a Hybrid app as good as Runkeeper and I’ll switch How do you tell when you are in a Hybrid App? Join the Conversation #VS2015 @AdamCogan
  • 125. Spot the hybrid app Join the Conversation #VS2015 @AdamCogan
  • 127.
  • 128. @AdamCogan “There’s two kinds of mobile developers: Those developing native apps & those that wish they were.”
  • 129. • Mono…. “Microsoft support Miguel” • .NET Foundation – Open sourcing .NET • http://www.dotnetfoundation.org • Microsoft contributed Roslyn • Roslyn makes it easier for .NET apps to run on Mac and Linux • Microsoft and Xamarin are closely working together Microsoft + Xamarin Join the Conversation #VS2015 @AdamCogan
  • 130. • ? Write C# • Build native mobile apps • 3 apps - Learn the Xamarin API, deploy to many devices • Less learning - Provides an abstraction over the native APIs • Goal is to use the lowest common denominator • Not limited - Still lets you directly call the native APIs • Still need to code the UI natively for each platform Xamarin is cool because… Join the Conversation #VS2015 @AdamCogan
  • 131. • Abstraction over the UI • Compiler will convert the UI elements into their native counterparts • Can still do native customizations E.g. For WinPhone – adding the carousel • Sexy UI Designer… Xamarin.Forms Join the Conversation #VS2015 @AdamCogan
  • 132. Sexy UI designer… var profilePage = new ContentPage { Title = "Profile", Icon = "Profile.png", Content = new StackLayout { Spacing = 20, Padding = 50, VerticalOptions = LayoutOptions.Center, Children = { new Entry { Placeholder = "Username" }, new Entry { Placeholder = "Password", IsPassword = true }, new Button { Text = "Login", TextColor = Color.White, BackgroundColor = Color.FromHex("77D065") }}} }; var settingsPage = new ContentPage { Title = "Settings", Icon = "Settings.png", (...) }; var mainPage = new TabbedPage { Children = { profilePage, settingsPage } }; Join the Conversation #VS2015 @AdamCogan
  • 133. Compiles and uses Native Controls
  • 134. You can either use: • C# • XAML (no designer, no intellisense) Sexy UI designer… Join the Conversation #VS2015 @AdamCogan
  • 135. Pages Join the Conversation #VS2015 @AdamCogan
  • 136. Layouts Join the Conversation #VS2015 @AdamCogan
  • 139. #exploring demo 1. File | New Project 2. F5 3. Add 2 content page (stack layout + grid layout) 4. Add a menu - Group the pages into a tabbed page Join the Conversation #VS2015 @AdamCogan
  • 140. Demo #1 File | New Project
  • 141.
  • 142. If you have a Mac on the network you can install the Build host to build the iOS project
  • 143. Shared Project Android iOS Windows Phone Join the Conversation #VS2015 @AdamCogan
  • 144. F5 – Start testing on the two biggest mobile platforms Join the Conversation #VS2015 @AdamCogan
  • 145. Anyone running Android? Join the Conversation #VS2015 @AdamCogan
  • 146.
  • 147.
  • 148. Use the emulator Bad Android devs think they have 1 option Join the Conversation #VS2015 @AdamCogan
  • 149. • Use a device • Use genymotion.com (but you have to give up Hyper-V and the Windows Phone emulator) • Or Hyper-V haxm (open GL drivers and x86 optimization for the android emulator) • VS2015 bundles a emulator for Android (Lollipop API Level 21) The good Android devs know Join the Conversation #VS2015 @AdamCogan
  • 150. And the 2nd major mobile platform… Join the Conversation #VS2015 @AdamCogan
  • 151. Windows Phone emulator uses Hyper-V Join the Conversation #VS2015 @AdamCogan
  • 152. Demo #2 Showing off the controls – Stack Layout
  • 153. Stack Layout with 4 controls Join the Conversation #VS2015 @AdamCogan
  • 154. Join the Conversation #VS2015 @AdamCogan
  • 155. Join the Conversation #VS2015 @AdamCogan
  • 156. Demo #3 Showing off the controls – Grid Layout
  • 157. Grid Layout with 4 rows and 3 columns Join the Conversation #VS2015 @AdamCogan
  • 158. Join the Conversation #VS2015 @AdamCogan
  • 159. Add some content and colour // Column 0 to Column 3, Row 0 to Row 1 grid.Children.Add(new Label { Text = "Label 1", HorizontalOptions = LayoutOptions.Center }, 0, 3, 0, 1); // Column 0, Row 1 grid.Children.Add(new Label { Text = "Label 2", TextColor = Color.White, BackgroundColor = Color.Lime }, 0, 1); // Column 1, Row 1 grid.Children.Add(new BoxView { Color = Color.Red }, 1, 1); // Column 0, Row 2 grid.Children.Add(new BoxView { Color = Color.Blue }, 0, 2); // Column 1, Row 2 grid.Children.Add(new Label { Text = "Label 3", TextColor = Color.Purple, BackgroundColor = Color.Gray }, 1, 2); // Column 2 to Column 3, Row 1 to Row 3 grid.Children.Add(new Label { Text = "Label 4", TextColor = Color.Yellow, BackgroundColor = Color.Navy }, 2, 3, 1, 3); // Column 0 to Column 2, Row 3 to Row 4 grid.Children.Add(new Label { Text = "Label 4", TextColor = Color.Red, BackgroundColor = Color.Silver }, 0, 2, 3, 4); // Column 2, Row 3 grid.Children.Add(new Label { Text = "Label 5", TextColor = Color.Aqua, BackgroundColor = Color.Red }, 2, 3); Content = grid; Join the Conversation #VS2015 @AdamCogan
  • 160. 4 rows 3 columns Join the Conversation #VS2015 @AdamCogan
  • 161. Join the Conversation #VS2015 @AdamCogan
  • 162. Demo #4 Showing off the controls – Add a Tabbed Page
  • 163. public static Page GetMainPage() { return new TabbedPage { Children = { new StackLayoutPage { Title = "Stack" }, new GridLayoutPage { Title = "Grid"} } }; } Tabbed Page showing our Stack and Grid Join the Conversation #VS2015 @AdamCogan
  • 164. Join the Conversation #VS2015 @AdamCogan
  • 165. Demo #5 Create SSW Rules App
  • 166. #realapp 1. Start coding our Rules app [5 content pages] 1. Category Page 2. Sub Category Page 3. Rules List page 4. Rule Page #shortcut 5. Search Page … Join the Conversation #VS2015 @AdamCogan
  • 167. Category Page • Add Nuget package (REST rules.ssw.com.au) • Load the list of top level categories Bind • When we ‘click’, go to sub categories Now the serious stuff… Building the SSW Rule App Join the Conversation #VS2015 @AdamCogan
  • 168. public RuleCategoryPage(string url) { Title = "SSW Rules"; BaseUrl = url; ListView = new ListView(); // Create a template for out list view var cell = new DataTemplate(typeof(TextCell)); cell.SetBinding(TextCell.TextProperty, "Title"); ListView.ItemTemplate = cell; Content = new StackLayout() { VerticalOptions = LayoutOptions.FillAndExpand, Children = { ListView } }; Create a template for the list view Create a DataTemplate for the ListView, bind the Text property to “Title” in our data Join the Conversation #VS2015 @AdamCogan
  • 169. protected override async void OnAppearing() { base.OnAppearing(); // Create our sharepoint rules client var client = new SswSharePointRulesClient(); // Get a list of toplevel categories var categoryResult = client.GetRuleCategories(BaseUrl); var categories = await categoryResult; ViewModel = new RuleCategoryViewModel() { Categories = new ObservableCollection<RuleCategoryModel>(categories) }; // Bind out results to the list view ListView.ItemsSource = ViewModel.Categories; } Load categories, bind on load Call SharePoint REST API to grab our categories Bind results to our list view Join the Conversation #VS2015 @AdamCogan
  • 170. public RuleCategoryPage(string url) { Title = "SSW Rules"; BaseUrl = url; ListView = new ListView(); // Create a template for out list view var cell = new DataTemplate(typeof(TextCell)); cell.SetBinding(TextCell.TextProperty, "Title"); ListView.ItemTemplate = cell; Content = new StackLayout() { VerticalOptions = LayoutOptions.FillAndExpand, Children = { ListView } }; ListView.ItemSelected += OnListViewOnItemSelected; } protected virtual void OnListViewOnItemSelected(object sender, SelectedItemChangedEventArgs args) { var category = (RuleCategoryModel)args.SelectedItem; var subCategoryPage = new RuleSubCategoryPage(category.Url); Navigation.PushAsync(subCategoryPage); } Add event handlers – Item Selected Attach an event handler to the ItemSelected event Instantiate the RuleSubCategory page with the Url of the category Change the current page Join the Conversation #VS2015 @AdamCogan
  • 171. Join the Conversation #VS2015 @AdamCogan
  • 172. <?xml version="1.0" encoding="utf-8" ?> <ContentPage xmlns="http://xamarin.com/schemas/2014/forms" xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml" x:Class="SSW.Rules.Mobile.RuleContentXamlPage" > <WebView VerticalOptions="FillAndExpand" HorizontalOptions="FillAndExpand" Source="{Binding Url}" /> </ContentPage> #shortcut View the Rule with a WebView (XAML) WebView is basically an iframe Set the Source as the URL of our rule Join the Conversation #VS2015 @AdamCogan
  • 173. Join the Conversation #VS2015 @AdamCogan
  • 174. Demo #6 Add a search page
  • 175. • SearchBar • Label for result count • ListView to show the results Create a Search Page Join the Conversation #VS2015 @AdamCogan
  • 176. Join the Conversation #VS2015 @AdamCogan
  • 177. • TFS - https://tfsodata.visualstudio.com/ (bad ODATA – read only) • TFS -https://visualstudio.com/integrate (good REST) • REST APIs rock https://developers.google.com/ https://developers.facebook.com/ https://dev.twitter.com/ https://developer.nokia.com/ https://developer.github.com/ http://developer.xamarin.com/ https://Developer.visualstudio.com REST APIs Join the Conversation #VS2015 @AdamCogan
  • 178. • SharePoint - http://msdn.microsoft.com/en-us/library/office/jj860569(v=office.15).aspx • Office 365 - http://msdn.microsoft.com/en-us/library/office/dn605892(v=office.15).aspx • Azure - http://msdn.microsoft.com/en-us/library/azure/ee460799.aspx Even better would be to use the .NET libraries http://www.bradygaster.com/post/getting-started-with-the-windows-azure- management-libraries • Yours? • Note: RestSharp is a great .NET library for calling REST apis REST APIs Join the Conversation #VS2015 @AdamCogan
  • 179. https://github.com/glennstephens/xfTemplates Hot Tip – Resharper templates for Xamarin.Forms Join the Conversation #VS2015 @AdamCogan
  • 180. A trip down memory lane ASP.NET 5 (was vNext) Mobile Development Azure Summary What’s New Agenda
  • 181.
  • 182. Express • October 2005 - Microsoft releases a free IDE • Limited version Professional edition • No licensing restrictions for applications • No Extensions (No ReSharper / Web Essentials…) Join the Conversation #VS2015 @AdamCogan
  • 183. Express was not good enough… • Visual Studio Express was crippled - no extensions • Needlessly segmented into separate installers (Web, Windows, Desktop) • Paid version too expensive for students and individuals • Cheaper options for developers and languages • Jetbrains (Java, Php, Ruby, Phyton, Frontent Dev (Javascript, Node.js, CSS, etc) • Sublime • Atom.io • Notepad++ • …
  • 184. “Visual Studio is universally praised, but if you talk to a developer in college or straight out of college, they don’t want to pay,” “We want to eliminate that friction and enable more developers to use it on a day-to-day basis.” Scott Guthrie, Microsoft Join the Conversation #VS2015 @AdamCogan
  • 185. Goodbye Express, welcome Visual Studio 2013 Community... • November 2014 - Microsoft finally releases a *decent* free IDE • *All* the great functionality of Visual Studio Professional 2013 • Any individual developer can use it to create their own free or paid apps. • Unlimited number of users within an organization for learning, academic research, or for contributing to open source projects • Choose from thousands of extensions for Visual Studio Join the Conversation #VS2015 @AdamCogan
  • 186. What will change? • Today for VS 2013 there are 2020 extensions • Web Essentials • Package Intellisense (NPM) • Grunt Launcher • PHP Tools for Visual Studio • NTVS (Node.js Tools for Visual Studio) this is a plugin • Python Tools for Visual Studio • But… Join the Conversation #VS2015 @AdamCogan
  • 187. What will change? 6 kinds of developers 1. HTML and JS devs 2. Node.js devs 3. PHP devs 4. Python devs 5. Non windows devs 6. VS devs (Express and Professional) 7. Administrators Join the Conversation #VS2015 @AdamCogan
  • 188. 1. HTML and JS devs • will jump on the bandwagon • will love Bower support Join the Conversation #VS2015 @AdamCogan
  • 189. 2. Node.js devs • will grow slowly, stay niche... but will jump • will love NPM package support (non .NET server side) • will love the new grunt support (especially the task runner) Join the Conversation #VS2015 @AdamCogan
  • 190. 3. PHP devs • will not move because • they require a better PC than a 486 • find copy and paste too slow • they would hate the 3 hour download and install Join the Conversation #VS2015 @AdamCogan
  • 191. 4. Python devs • are the unknown - the beginner devs will switch • will love the support VS has for git • will love the command line driven approach they can continue to use in the new environment • will be happy that they get PiP for packing (because they won’t switch to Nuget) • progressive universities will be happy to teach it Join the Conversation #VS2015 @AdamCogan
  • 192. 5. Non windows devs We can only hope they find http://www.omnisharp.net (it is a cross platform plugin for a number of editors – Sublime, Atom, Emacs, Brackets, Vim - that allow you to develop .net) Join the Conversation #VS2015 @AdamCogan
  • 193. 6. VS devs (Express and Professional) (not specifically related to the community edition but) • The majority of Microsoft devs will be shocked at the amount of change in 2015. • Most wont like that VS is even more complex. • They will have to deal with it and grow. Join the Conversation #VS2015 @AdamCogan
  • 194. 7. Administrators - Want to run ASP.NET on Linux - Today ASP.NET runs on Mono on Linux and Mac - Tomorrow ASP.NET will run on the new .NET Core on Linux and Mac (and be supported) Join the Conversation #VS2015 @AdamCogan
  • 195. Conclusion new open source .Net Core + free VS Community = A lot of potential unlocked… E.g. Develop self contained website for free, Docker deploy to an IoT device (Win10 or Linux embedded e.g RaspberryPi). Join the Conversation #VS2015 @AdamCogan
  • 196. State of the Web ASP.NET 5 (was vNext) Join the Conversation #VS2015 @AdamCogan
  • 197. MVC4 + WebAPI + TypeScript + KnockoutJS MVC5 ? Last Year I recommended… Join the Conversation #VS2015 @AdamCogan
  • 198.
  • 199.
  • 200. Restoring packages for c:usersericphandocumentsvisual studio 14ProjectsWebApplication3WebApplication3project.json Attempting to resolve dependency WebApplication3 >= 1.0.0 Attempting to resolve dependency EntityFramework.SqlServer >= 7.0.0-alpha2 OPEN EntityFramework.SqlServer.7.0.0-alpha2.nupkg OPEN EntityFramework.SqlServer.7.0.0-alpha2EntityFramework.SqlServer.7.0.0-alpha2.nuspec Attempting to resolve dependency Microsoft.AspNet.Mvc >= 6.0.0-alpha2 OPEN Microsoft.AspNet.Mvc.6.0.0-alpha2.nupkg OPEN Microsoft.AspNet.Mvc.Common.6.0.0-alpha2.nupkg : : OPEN Microsoft.AspNet.Mvc.Razor.Host.6.0.0-alpha2Microsoft.AspNet.Mvc.Razor.Host.6.0.0-alpha2.nuspec Attempting to resolve dependency EntityFramework.Migrations >= 7.0.0-alpha2 OPEN EntityFramework.Migrations.7.0.0-alpha2.nupkg OPEN EntityFramework.Migrations.Design.7.0.0-alpha2.nupkg OPEN EntityFramework.Migrations.7.0.0-alpha2EntityFramework.Migrations.7.0.0-alpha2.nuspec OPEN EntityFramework.Migrations.Design.7.0.0-alpha2EntityFramework.Migrations.Design.7.0.0-alpha2.nuspec Everything is a NuGet package
  • 201. Change of attitude? NUnit released in 2002 – Becomes the standard for .Net With Visual Studio 2005 Microsoft releases MSTest MSTest almost identical to NUnit Why not support NUnit instead? Join the Conversation #VS2015 @AdamCogan
  • 202. New terms for the .NET Developer • Bower • Grunt • NPM • OWIN Join the Conversation #VS2015 @AdamCogan <Next PBI – create a cool logo>
  • 203. • project.json • config.json • package.json • bower.json • gruntfile.js No more web.config No more csproj
  • 204. • Add references to NuGet packages here • Full intellisense • IIS/Hosting configuration project.json Join the Conversation #VS2015 @AdamCogan
  • 205. Join the Conversation #VS2015 @AdamCogan
  • 206. Do we have to manually type in NuGet Packages into project.json? Join the Conversation #VS2015 @AdamCogan
  • 207. Join the Conversation #VS2015 @AdamCogan
  • 208. Join the Conversation #VS2015 @AdamCogan
  • 209. New NuGet Package Manager • Looks nicer • Makes it easier to install other version of NuGet packages Join the Conversation #VS2015 @AdamCogan
  • 211. Stores connection strings and other app settings config.json { "Data": { "DefaultConnection": { "ConnectionString": "Server=(localdb)mssqllocaldb;Database=aspnetvnext-WebApplication3-15606acb-81ef- 4c1e-97c1-ac0b2d4e4a33;Trusted_Connection=True;MultipleActiveResultSets=true" } } } Join the Conversation #VS2015 @AdamCogan
  • 212. • List if NPM (Node Package Manager) packages • NPM is a javascript package manager for development tasks (e.g. minification, bundling, image optimization) package.json package.json { "version": "0.0.0", "name": "", "devDependencies": { "grunt": "0.4.5", "grunt-bower-task": "0.4.0" } }
  • 213. Bower is a front end javascript package manager (created by Twitter) bower.json bower.json { "name": "WebApplication", "private": true, "dependencies": { "bootstrap": "3.0.0", "jquery": "1.10.2", "jquery-validation": "1.11.1", "jquery-validation-unobtrusive": "3.2.2", "hammer.js": "2.0.4", "bootstrap-touch-carousel": "0.8.0" }, "exportsOverride": { "bootstrap": { "js": "dist/js/*.*", "css": "dist/css/*.*", "fonts": "dist/fonts/*.*" }, : }
  • 214. • A javascript task runner (also an npm package) • Use it to process your js and css files gruntfile.js gruntfile.js module.exports = function (grunt) { grunt.initConfig({ bower: { install: { options: { targetDir: "wwwroot/lib", layout: "byComponent", cleanTargetDir: false } } } }); grunt.registerTask("default", ["bower:install"]); grunt.loadNpmTasks("grunt-bower-task"); };
  • 215. What about NuGet? • NuGet - .NET Dependencies (SignalR, Owin) • Bower – Frontend Javascript Dependencies (jQuery, Angular) • NPM – Backend Javascript Dev Tools (lodash, browserify, watchify, grunt, JSHint) • Grunt/Gulp – MSBuild for client side files Join the Conversation #VS2015 @AdamCogan
  • 216. wwwroot? • Static files go here (*.js, *.png, *.jpg) • Maps to http://hostname/ • Cleaner separation between code files and static files • TypeScript, LESS should not be put in here, only the output of these files should be placed in here Join the Conversation #VS2015 @AdamCogan
  • 217. • Built in • Startup.cs uses it • StructureMap, AutoFac, Ninject, Windsor, and Unity Dependency Injection using Microsoft.Framework.DependencyInjection; public class Startup { public void Configure(IBuilder app) Join the Conversation #VS2015 @AdamCogan
  • 218. Join the Conversation #VS2015 @AdamCogan
  • 219. Dependency Inject • Can use it in Razor page too Join the Conversation #VS2015 @AdamCogan @using WebApplication23 @inject TimeService TimeSvc <h3>@ViewBag.Message</h3> <h3> @TimeSvc.Ticks From Razor </h3>
  • 220. WebAPI and Controllers in one public class ValuesController : Controller { // GET /values public string Get() { return "Values"; } // GET /values/1 public string Get(int id) { return "Value " + id.ToString(); } // POST /values public ActionResult Post() { return new HttpStatusCodeResult(201); } } http://rules.ssw.com.au/SoftwareDevelopment/RulesToBetterWebAPI/Pages/Default.aspx Join the Conversation #VS2015 @AdamCogan
  • 221. New - View Components • Similar to partial views, but more powerful. • Include the same separation-of-concerns and testability benefits found between a controller and view. • Like a mini-controller—responsible for rendering a chunk rather than a whole response. • Can solve any problem that is too complex with a partial, such as: • Dynamic navigation menus • Tag cloud (where it queries the database) • Login panel • Shopping cart • … Join the Conversation #VS2015 @AdamCogan
  • 222.
  • 223. • Define what services and features this app will be using via Owin • Services EF MVC • Routes • Features BrowserLink Static Files • Authentication Startup.cs Join the Conversation #VS2015 @AdamCogan
  • 224. Tip - What can you do to make IIS Faster? Disable Modules
  • 225. OWIN • Owin is a standardised interface between web servers and web applications. • This means web servers that support Owin can run any apps that implement Owin • e.g. ASP.NET MVC running on Linux or OSX Join the Conversation #VS2015 @AdamCogan
  • 226. OWIN • Owin.dll contains a single interface IAppBuilder • Use this to register any middleware components that can handle the web request • SignalR • ASP.NET Identity • WebAPI • This means your HTTP pipeline is optimized for just what you need, instead of the old IIS default http modules that get loaded by default. Join the Conversation #VS2015 @AdamCogan
  • 227. Startup.cs app.UseIdentity() app.UseStaticFiles() app.UseMvc() Request/Home/Index Request/Content/logo.png Register OWIN middleware 1st Request comes in to an MVC page Verifies user is logged in and passes onto the next OWIN middleware Not a static file, so move onto the next OWIN middle wear MVC route handles request and returns to the client 2nd Request comes in for an image Skips check and moves on, because we allow anonymous Static file handler gets the file and returns to the client
  • 228. Old @Html.ActionLink(“Click me”, “View”, “Controller”) New <a asp-controller=“Controller” asp-view=“Index”>Click me</a> Join the Conversation #VS2015 @AdamCogan Razor Tag Helpers
  • 229. Join the Conversation #VS2015 @AdamCogan Razor Tag Helpers Old @Html.ValidationSummary(true, "", new { @class = "text-danger" }) <div class="form-group"> @Html.LabelFor(m => m.UserName, new { @class = "col-md-2 control-label" }) <div class="col-md-10"> @Html.TextBoxFor(m => m.UserName, new { @class = "form-control" }) @Html.ValidationMessageFor(m => m.UserName, "", new { @class = "text-danger" }) </div> </div> New <div asp-validation-summary="ModelOnly" class="text-danger"></div> <div class="form-group"> <label asp-for="UserName" class="col-md-2 control-label"></label> <div class="col-md-10"> <input asp-for="UserName" class="form-control" /> <span asp-validation-for="UserName" class="text-danger"></span> </div> </div>
  • 230. Harder to tell server side code from client side code More HTML like More readable More control over how the HTML outputs Join the Conversation #VS2015 @AdamCogan Razor Tag Helpers
  • 231. No need to hit build, just save and refresh (powered by Roslyn) Join the Conversation #VS2015 @AdamCogan
  • 232. AngularJS Join the Conversation #VS2015 @AdamCogan
  • 234. Dev Superpowers - AngularJS with TypeScript made easy with Duncan Hunter Join the Conversation #VS2015 @AdamCogan
  • 235. How to make web applications with AngularJS and ASP.NET MVC | Dev SuperPowers Episode 7 Join the Conversation #VS2015 @AdamCogan
  • 236. The future of AngularJS: an interview with Dan Wahlin Join the Conversation #VS2015 @AdamCogan
  • 237. AngularJS + VS2015 Built in templates to create • Controller • Service • Directive • Factory • Module Join the Conversation #VS2015 @AdamCogan
  • 238. Join the Conversation #VS2015 @AdamCogan
  • 239. AngularJS + VS2015 - Suggestion Make these create TypeScript files instead of JavaScript files News – Angular 2.0 is to be written using TypeScript Join the Conversation #VS2015 @AdamCogan
  • 240. SignalR • Add via the NuGet package • Real time communication between clients • Good for: • Showing progress on long running tasks • Interactive apps • Team collaboration Join the Conversation #VS2015 @AdamCogan
  • 242. ASP.NET 5 - KRE, KVM, KPM • KRE – K Runtime Environment • Code required to bootstrap and run an ASP.NET 5 application. • KVM – K Version Manager • Updating and installing different versions of KRE. KVM is also used to set default KRE version. • KPM – K Package Manager • Manages packages needed by applications to run (NuGet) Join the Conversation #VS2015 @AdamCogan
  • 243. Join the Conversation #VS2015 @AdamCogan
  • 244. Example – Download K, grab source from Git, run app! @powershell -NoProfile -ExecutionPolicy unrestricted -Command "iex ((new-object net.webclient).DownloadString('https://raw.githubusercontent.com/aspnet/Home/master/kvminstall. ps1'))" kvm upgrade git clone https://github.com/aspnet/Home.git cd HomesamplesHelloWeb kpm restore k web Join the Conversation #VS2015 @AdamCogan
  • 245. • WCF • Highly customizable • Hard to configure • Can work with multiple protocols TCP, UDP, MSMQ • Can use multiple encodings: Text, XML, MTOM, Binary • Duplex binding (two way communication) • Reliable messaging • WebAPI • Works with the HTTP protocol • More interoperable with other platforms • Can only encode to a few formats • Can do two way communication using SignalR Join the Conversation #VS2015 @AdamCogan WCF or WebAPI?
  • 246. ECMA Script 6 • LINQ in javascript! • But… Browser compatibility • http://kangax.github.io/compat-table/es6/ Join the Conversation #VS2015 @AdamCogan // Old Way [1,2,3].map(function (x) { return x * x; }); // New Way [1,2,3].map(x => x * x);
  • 247. Still use Typescript • Supports LINQ already • Can set it to compile to different ECMA Script versions • Better intellisense support in VS Join the Conversation #VS2015 @AdamCogan
  • 248. Say goodbye… - ASP.NET 4 - ASP.NET 5 - No Web Forms - No VB.NET - Faster - Cheaper hosting (Linux, Mac) Join the Conversation #VS2015 @AdamCogan
  • 249. Join the Conversation #VS2015 @AdamCogan
  • 250. • project.json (was dependencies) • config.json (was web.config) • Javascript package managers and builders (NPM, Bower, Grunt) • Dependency Injection included • ApiController is Controller • Startup class using OWIN (was App_Start + global.asax) • Razor Tag Helpers • Compile ahead of time, no need to compile to see changes • More love for Angular • No • + … Summary - What’s changed in ASP.NET 5? Join the Conversation #VS2015 @AdamCogan
  • 251. A trip down memory lane ASP.NET 5 (was vNext) Mobile Development Azure + Continuous Deployment + Testing Summary What’s New Agenda
  • 252. What are Azure Deployment Slots? Auto Swap Swapping Testing in Production Continuous Deploy to Deployment Slots Azure + Continuous Deployment + Testing
  • 253. Boss says “Azure is slow” • We are a large cinema chain • We have a 100 MB Deployment and an IIS startup time of 1 minute • We have a large customer base • We use Sitefinity • We deploy multiple times a day • The boss checks his site coincidentally right after we deploy! (He thinks Azure is slow) Join the Conversation #VS2015 @AdamCogan
  • 254. A: Deploy less often Or Learn about Azure Deployment Slots (they can make your downtime 0) Join the Conversation #VS2015 @AdamCogan
  • 255. A: Dev Test Prod Who has this? Join the Conversation #VS2015 @AdamCogan
  • 256. A: Dev Test / QA UAT Staging / Preprod Prod / Live www.northwind.com (1+2 Azure Deployment Slots) Prod1 - www1.northwind.com Azure Deployment Slot #1 (Make Live) aka Swap Prod2 – www2.northwind.com Azure Deployment Slot #2 Join the Conversation #VS2015 @AdamCogan
  • 257. Good example - Do you use Azure Deployment Slots on production? Join the Conversation #VS2015 @AdamCogan
  • 259. Deploy to pre-prod • Deploy a version of your website to the pre-production slot • Use Azure Continuous Deployment or any of your favourite deployment tools Join the Conversation #VS2015 @AdamCogan
  • 260. The beauty of “Swap” • No cold start • The swap will simply switch pointers • Changes can be rolled back by reversing the swap Join the Conversation #VS2015 @AdamCogan
  • 261. Deployment Slots • Available on Standard Plan • Up to 4 deployment slots for 1 production slot • Scaling is not available for non-production slots. • Shares the same resources as your production slots (sites) and runs on the same VMs Join the Conversation #VS2015 @AdamCogan
  • 262. Eg. http://www1.northwind.com Eg. http://azuredeploy-preprod.azurewebsites.net Eg. http://www.northwind.com Eg. http://azuredeploy.azurewebsites.net
  • 263. Settings that are not swapped: Publishing endpoints (URL, ConnectionString) Custom Domain Names SSL certificates and bindings Scale settings Continuous Deployment Settings Settings that are swapped: General settings - such as framework version, 32/64-bit, Web sockets App settings (can be configured to stick to a slot) Connection strings (can be configured to stick to a slot) Handler mappings Monitoring and diagnostic settings Join the Conversation #VS2015 @AdamCogan Configure Settings
  • 264. Configure Sticky Slot Settings • App settings and connection strings are swapped by default • App settings and connection strings can be set to “Slot Sticky” Join the Conversation #VS2015 @AdamCogan
  • 265. Testing in production • A/B/N Testing • Similar to Google Content Experiments • Use App Insights to measure results • ? 50/50 vs 33/33/33 • Using Production users as Testers • Route traffic between your deployment slots based on percentage of the traffic • Use App Insights to check for problems Join the Conversation #VS2015 @AdamCogan
  • 266. Join the Conversation #VS2015 @AdamCogan Eg. http://www.northwind.com Eg. http://azuredeploy.azurewebsites.net 20%80%
  • 267. Why should I use Testing in Production • Measure effectiveness of different implementations of a feature • Test which site leads to a decrease in bounce rate, or to the greatest increase in revenue or session duration • Testing new features without affecting all users (Making your disaster less of a disaster) Join the Conversation #VS2015 @AdamCogan
  • 268. Auto Swap • Addresses the “cold start” issue • When you deploy your code changes, a swap will automatically take place once the deployment is complete Join the Conversation #VS2015 @AdamCogan
  • 269. Eg. http://www.northwind.com Eg. http://azuredeploy.azurewebsites.net When deployment is finished, a swap will automatically take place Eg. http://www1.northwind.com Eg. http://azuredeploy-preprod.azurewebsites.net
  • 270. Join the Conversation #VS2015 @AdamCogan Do you know how to find bad smells in code?
  • 271. The state of testing • Code • VS Unit Tests (recommended) • Nunit Tests • UI • Coded UI Tests with MTM • Selenium + Chutzpah (recommended) • Javascript • JSUnit • Qunit (made by the jQuery team) • Mocha (new comer) • Jasmine + Chutzpah (recommended)
  • 272. Chutzpah Lets you run Javascript unit tests in Visual Studio 1. Write your unit tests in your favourite framework (Jasmine, Mocha) 2. Get the Chutzpah VS extension 3. Right click run tests! Join the Conversation #VS2015 @AdamCogan
  • 273. Join the Conversation #VS2015 @AdamCogan
  • 274. Join the Conversation #VS2015 @AdamCogan
  • 275. Join the Conversation #VS2015 @AdamCogan
  • 276. Join the Conversation #VS2015 @AdamCogan
  • 277. xUnit.net First Class Citizen in 2015 Join the Conversation #VS2015 @AdamCogan Old way using MSTest New way using xUnit.net
  • 278. MVC + WebAPI + TypeScript + KnockoutJS + AngularJS This Year I recommend… • SPA app front end + WebAPI backend • Use App Insights for usage tracking + DevOps • Xamarin.Forms for native cross platform mobile development • Continuous deployment to Azure using Testing in Production and Deployment Slots • Testing • .NET VS Tests • Selenium • Javascript (Jasmine + Chutzpah) Join the Conversation #VS2015 @AdamCogan
  • 279. A trip down memory lane ASP.NET 5 (was vNext) Mobile Development Azure + Continuous Deployment Summary What’s New Agenda
  • 281. @AdamCogan #NetUG Tweet your favourite feature Join the Conversation #VS2015 @AdamCogan
  • 282. Tweet your favourite video @SSWTV Check out tv.ssw.com Join the Conversation #VS2015 @AdamCogan
  • 283. Thank you! info@ssw.com.au www.ssw.com.au Sydney | Melbourne | Brisbane | Adelaide
  • 284. find me on slideshare: http://www.slideshare.net/SSWconsulting/

Editor's Notes

  1. Debug in chrome means start chrome up when debugging
  2. Add mockup of Mobile | Hybrid, Mobile | Xamrin
  3. See if you can get a screenshot showing windows Who is ripple
  4. See if you can get a screenshot showing windows Who is ripple
  5. See if you can get a screenshot showing windows Who is ripple
  6. TODO: Rule on this