ÜBER DIESE EPISODE
Episode 157
On this episode of Herding Code, the guys talk to Amir Rajan about his Oak and Gemini projects, which bring Rails-inspired dynamic programming to ASP.NET MVC.
Download / Listen:
Herding Code 157 - Amir Rajan on dynamic web development with Oak and Gemini
Show Notes:
- Overview - Developing with Oak
- Oak is an approach to building single page applications that are heavy on JavaScript that takes a lot of inspiration from the Ruby community's development approach.
- Jon asks Amir to explain his development workflow, including SpecWatcher, NSpec, and Growl.
- Jon asks about the File / New Project experience. Amir describes how that's not even required - Oak works with WarmuP to build out a new project.
- The next step is using Rake - Amir explains how Rake works. Running Rake builds the application and deploys, then sets up IIS against that instance.
- Dynamic programming and Gemini
- Oak leverages the dynamic keyword. Amir explains how it just augments what's already there in ASP.NET MVC.
- Amir explains how Oak works with Gemini, separate library he's built to enable building dynamic objects. It allows you to attach properties and methods through mixins. He gives an example of using Gemini to extend a dynamic object with validation methods.
- Amir describes how Oak leverages Gemini to take advantage of these decorated dynamic model objects throughout the different layers.
- Scott K asks where the composition happens - is this a pipeline process?
- Jon says it sounds like this is a more fleshed out version of some dynamic features that were started in ASP.NET MVC, like dynamic views and ViewBag. He explains how Gemini goes beyond Expando, because it also includes support for method missing.
- Jon says Gemini reminds him of the Clay dynamic objects used in Orchard.
- Data access and Cambium
- Jon asks Amir about Cambium, the data layer. Amir says he customized Rob Conery's Massive library to work with his Gemini objects, and points out that the resulting library uses remarkably little code.
- Scott K asks Amir if he's looked at Breeze. Amir says so far he's just worked with standard ASP.NET MVC controllers, but he's interested in looking at Breeze, Dapper, and NoSQL ORMs.
- But why?
- Kevin asks the silly question: why bother bringing Rails idioms to ASP.NET MVC - why not work in Rails?
- Jon says the thing he sees Amir's done is eliminate the shift between development and runtime modes in Visual Studio based development.
- Jon asks about change tracking support in Cambium.
- More about data - migrations
- Amir explains migrations and schema generation in Oak and Cambium.
- Amir says that SQL based migrations are important in many development environments.
- Single page and Ajax
- Jon asks Amir about the Single Page Application story in Oak. Amir explains some of the points of friction that exist in ASP.NET SPAs and explains how Oak is able to round-trip dynamic types.
- Scott K. asks why it's so hard to migrate schemas in .NET. Amir says that it's due to our fixation on trying to define our models using code first in .NET types rather than in the database.
- Jon asks how the first deployment and upgrade scenarios work in Oak.
- Jon asks how Ajax interactions work. Amir explains how this works using the TaskRabbit sample to explain.
- Amir explains how he's relying on client-side rendering and templating more and more. He asks if we're seeing that movement as well, and Scott K. agrees with him. They agree that focusing on serving JSON and rendering on the client solves a lot of problems.
- Jon asks Amir if he's using one controller to serve HTML and JSON, or if they're split out. Amir says he's got one controller to serve the HTML, then does everything else via a separate controller that serves JSON. He says he's noticed that the ORMs have very little need for state with this approach.
- Jon says he's seeing the shift from a little Ajax interaction in mostly HTML focused servers to servers that are almost completely focused on serving JSON.
- Some misc. questions
- Jon asks about Canopy. Amir describes how Canopy is a stabilization layer on top of Selinium, and talks about why Canopy is built on top of F#.
- Scott K. asks if Amir has looked at OWIN yet.
- Jon asks about Async support in Oak.
- Twitter question from Bobby Johnson: What do you do to limit the viral nature of dynamic in your code? Amir and Jon talk about how a lot of the assumed safety of static code is an illusion when you think about all the moving parts you've got no control over.
- K. Scott and Scott K. think this is a fascinating project and like the code.
- Scott K. and Jon joke about variants. Amir mentions that the dynamic nature of Gemini means that all the dynamic properties and methods are case insensitive.
- Wrap up and getting started with Oak
- Amir talks about how to get started with Oak.
- Jon says the sample apps, documentation and screencasts are really nice.
- Jon asks what's next. Amir lists a better SPA story, better file uploads, adding dynamic to ServiceStack and Nancy, and growing the number of Gemini modules.
- Kevin asks about the performance impact of this dynamic focus. Amir that he's got an included test, and he's found that dynamic is actually faster in a lot of cases which need to use reflection, such as ORMs, JSON serialization, and model binding.
- Amir calls out the NSpec project and references their interview on Hanselminutes.
Show Links:
- Amir Rajan (blog, @amirrajan)
- Oak: Frictionless development for ASP.NET MVC single page web apps. Prototypical and dynamic capabilities brought to C#.
- Oak project on GitHub
- Blog post introducing Gemini
- Clay: Malleable C# dynamic objects
- SpecWatchr
- Mighty Moose
- NCrunch
- WarmuP
- Rake - Ruby Make
- canopy: f# web testing framework
- Hanselminutes: Understanding BDD and NSpec with Matt Florence and Amir Rajan
Englisch
Vereinigte Staaten
TRANSKRIPT 🔗
Are you the producer of this podcast?
Add a podcast transcript
Need Audio-to-Text?
Transcribe with Listen411 in Just 60 Seconds
VERGANGENE FOLGEN SUCHEN
Vorhandene Folgen von Herding Code durchsuchen.
WEITERE EPISODEN IN DIESEM PODCAST
Download / Listen: Herding Code 240: Phil Haack on Working from Home
https://herdingcode.com/wp-content/uploads/HerdingCode-0240-Phil-Haack.mp3
Jon, Kevin, and Rob talk to Phil Haack about working from home.
Links:
How To Work From Home
How to Lead From Home
Geographically Distrib…
Recently Jon switched to developing on macOS, and Rob’s been developing on Windows. It’s time for the Freaky Friday edition! The guys compare notes, what they like, what’s confusing, and what they’ve learned.
Download / Listen: Herding Code 241: The Freaky Friday macOS /…
Kevin and Jon talk to Shawn Wildermuth about his new documentary film, Hello World. Shawn talks about how this film project began as a “love letter to software development,” exploring how amazing this career can be. As he delved into it he became more aware of the lack representation of…
Kevin, Jon and Rob talk to Ben Scheirman about developing user interfaces for the Apple platform with SwiftUI and Combine.
Ben screencasts at NSScreencast and is the creator of the Combine Swift course.
Download / Listen: Herding Code 244: Herding Code 244: Ben Scheirman on SwiftUI and Co…
Jon talks to Bruno Borges and Mark Heckler about Java development.
https://herdingcode.com/wp-content/uploads/HerdingCode-245-Catching-up-on-Java-dev-with-Bruno-Borges-and-Mark-Heckler.mp3
What? On video now?!?!
Download / Listen: Herding Code 245: Catching up on Java dev with Bruno B…
Rechtliche Hinweise: Der auf dieser Seite eingebettete Podcast und das Bildmaterial stammen von Herding Code, das Eigentum seines Eigentümers ist und nicht mit Listen Notes, Inc. verbunden ist oder von diesen unterstützt wird.
BEARBEITEN
Vielen Dank, dass Sie uns helfen, die Podcast-Datenbank auf dem neuesten Stand zu halten.