angular owin katana typescript

26
Angular, TypeScript and Katana Twin Cities Code Camp October 4 th 2014 Justin Wendlandt [email protected] @jwendl http://www.jwendl.net/

Upload: justin-wendlandt

Post on 23-Jun-2015

381 views

Category:

Technology


1 download

DESCRIPTION

My talk for TCCC17

TRANSCRIPT

Page 1: Angular Owin Katana TypeScript

Angular, TypeScript and KatanaTwin Cities Code CampOctober 4th 2014

Justin [email protected]

@jwendlhttp://www.jwendl.net/

Page 2: Angular Owin Katana TypeScript

Keywords and Terms

Katana

Page 3: Angular Owin Katana TypeScript

ASP.NET vNext• Who to follow for more

information Scott Guthrie, Scott

Hanselman, Damian Edwards and David Fowler.

Channel 9 Videos

Page 4: Angular Owin Katana TypeScript

What is OWIN?• Decouple server and application

No more System.Web – YAY!• Decouple client and server• Open standards• Stimulate open source Eco

System• Windows Internet of Things?

Embedded Devices?

Application

Framework

OWIN Middleware

Server

Host

Page 5: Angular Owin Katana TypeScript

What is Project Katana?• OWIN implementation for IIS• A few hooks into System.Web• A few hooks into

System.Net.HttpListener

Page 6: Angular Owin Katana TypeScript

Demos - Katana

Page 7: Angular Owin Katana TypeScript

What About the Server?• Web API vs. MVC• Business Logic• Data Access Layer• No Code Changes at all

(Unless you use Cache) (Unless you use Session) (Unless you use System.Web)

Page 8: Angular Owin Katana TypeScript

Decoupling the Client• Do you SPA?• Do you run server-side?• Do you go Hybrid?

Page 9: Angular Owin Katana TypeScript

Using the Hybrid Approach• ASP.NET MVC• TypeScript• Reactive Extensions

For Ajax For Updating DOM (using

jQuery)

Page 10: Angular Owin Katana TypeScript

Using the SPA Approach• ASP.NET Web API• TypeScript• Angular• Reactive Extensions

For Ajax

Page 11: Angular Owin Katana TypeScript

What is Angular?• It’s HTML Enhanced for Web

Apps• Single Page Application

Framework

Page 12: Angular Owin Katana TypeScript

Angular – Routing• Root page never navigates• Clicked links “Navigate”

Then data bind

Page 13: Angular Owin Katana TypeScript

Angular – $scope• Scope delivers model to DOM

and controller• $scope is NOT the model itself• Should contain multiple models

Page 14: Angular Owin Katana TypeScript

Angular – Dependency Injection• Resolves instance of object for

you• Helps decouple services and

providers

Page 15: Angular Owin Katana TypeScript

Angular – Two-Way Data Binding• No code to handle the binding,

ng-model does it for you• Based on $scope• Can contain filters for read-

bindings

Page 16: Angular Owin Katana TypeScript

Angular Demo – HotTowel

Page 17: Angular Owin Katana TypeScript

Reactive Extensions for JavaScript• Uses promises – Awesome!• Can handle events as well• Throttle Input if need be• Perfect for anything

asynchronous

Page 18: Angular Owin Katana TypeScript

The Reactive Manifesto•Respond in timely manner•Consistent Quality of ServiceResponsive•Stay responsive in the face of failure•Allows for recoveryResilient•Stay responsive under varying workload•No central bottlenecksElastic•Relies on Asynchronous Messages•Ensure Loose CouplingMessage Driven

Page 19: Angular Owin Katana TypeScript

Why Should I Always use RxJS?• Event-Driven• Avoids Nasty Nested Callbacks• Resembles .NET Fluent API• Perfect Fit for $Ajax calls that an

Angular App would need

Page 20: Angular Owin Katana TypeScript

Demo - SteamLookupApp

Page 21: Angular Owin Katana TypeScript

What is TypeScript?• It’s not JavaScript• It’s not C#• Interfaces are model prototypes• Modules are a separation layer

Page 22: Angular Owin Katana TypeScript

Interfaces vs. .d.ts Files• TypeScript Interfaces

Describes a model– var dog: Animal = { … }

Ensuring a model passed into a function– function Bark (animal: Dog) { … }

• TypeLite Takes .NET models and turns

them into TypeScript Interfaces

• TypeScript .d.ts files Third Party Applications _refs.ts

• DefinitelyTyped project on GitHub

Page 23: Angular Owin Katana TypeScript

Web Essentials• Preview Window• Drag n’ Drop• Native _refs.ts support

Page 24: Angular Owin Katana TypeScript

Demo - AsgardBlogEngine

Page 25: Angular Owin Katana TypeScript

References• Videos

http://channel9.msdn.com/Events/Speakers/Damian-Edwards

http://channel9.msdn.com/Events/Speakers/david-fowler

• TypeScript http://www.typescriptlang.org/

• Angular JS https://angularjs.org/

• HotTowel / HotTowel TypeScript https://

github.com/johnpapa/HotTowel-Angular

https://github.com/johnnyreilly/HotTowel-Angular-TypeScript

• RxJS http://reactive-extensions.github.

io/RxJS/

http://www.slideshare.net/mattpodwysocki/cascadiajs-dont-cross-the-streams

Page 26: Angular Owin Katana TypeScript

Questions???• http://www.jwendl.net/• Twitter: @jwendl• [email protected]• http://speakr.cc/• http://github.com/jwendl/