8:00 - 8:30 Registrering och frukost
8:30 - 9:15 How Functional Programming Influences My C# - Jonathan Worthington
C# in 2012 is a multi-paradigm language. While its OO roots are still clear to see, many of the more recent additions to the language have been inspired by functional programming. But what is FP anyway?
Taken in its purest form, functional programming presents a wildly different approach to software development than many of us are used to.
While imperative programming sees us writing programs that perform a series of steps that mutate variables and objects along the way, FP defines programs through a function applications and puts the focus firmly on immutable data structures.
In this talk, I'll start by taking a look at the C# language features that have been inspired by functional programming: lambda expressions and LINQ. However, that's only one part of the story; the influence of functional programming on my C# development goes deeper than just using certain language features. I'll discuss some of the ways this influence plays out in the code I write, and why you might want to do similar in your own development.
9:15 - 10:00 Death to the batch job - Andreas Öhlund
When most developers are tasked to implement time-bound business requrements the de facto solution is to create the dreaded batch job. While a batch job might solve the immediate problem their brute force nature makes them resource intensive and forces us to run them at night when the system is under less load.
But what if we run global operations that puts constant load on our system? What if that window of time is to short to get all work done?
When everything is getting more and more "real time" we need to run our jobs more often. But how often can we really run them given the load they put on our database?
Join Andreas for some real-time solutions to time-bound processes with the latest and greatest sagas from NServiceBus that will help you keep your events small and fit for the purpose thus mitigating the problems above.
Kaffepaus 10:00 - 10:15
10:15 - 11:00 Command-Query Responsibility Segregation (CQRS) explained - Andreas Öhlund
Command-Query Responsibility Segregation (CQRS) can help you come up with a more appropriate architecture for multi-user collaborative enterprise applications. We learn how exploit factors like data staleness and volatility to create simpler and more scalable constructs. We will also see how CQRS is a key enabler for both Domain Driven Design and ultimately storing your business data using Event Sourcing.
11:00 - 11:45 Web API and REST - Eric Lavesson
The MVC4 RC has been released, and Web API is perhaps the most exciting addition. Web API brings us new ways to build web services, especially RESTful services. But what constitutes a RESTful service? The idea of REST has been around for some time, and writing services in this manner has been possible before Web API. So what functionality does the new ASP.NET Web API framework offer? And how does it compare to other web service frameworks on the .Net platform, such as WCF?
In this talk, I’ll look at what REST is and how to implement a simple service using ASP.NET Web API.
Lunch 11:45 - 12:45
12:45 - 13:30 Reliable integrations with NServiceBus - Andreas Öhlund
In this talk, Andreas Öhlund will discuss how developers use NServiceBus in the core parts of their systems for the reliability it brings, but aren't aware that it can also help with integration as well. Further to this, Andreas will show how the saga capabilities in NServiceBus make integration code simpler, more robust, and testable.
13:30 - 14:15 Async Programming Awaits You - Jonathan Worthington
C# has come a long way since the first version arrived. Now version 5 of the language is around the corner, and its focus is on asynchronous programming. Traditionally, asynchronous programming has been fiddly enough to keep many developers from doing it widely. At the same time, the need for it has quietly crept up on us. Users demand ever more responsive applications, calling out to web services has become the norm and the multi-core world is pushing us to do more work in parallel, which of course we have to manage and synchronize somehow.
Asynchronous programming is applicable to all of these scenarios. The new async and await keywords in C# 5 aim to make asynchronous programming much easier. Rather than having to break your program up into dozens of callbacks, you can continue to program in an imperative style and leave the compiler to do the hard work for you. What would once have been a major refactor can now be achieved with a few small additions and tweaks. In this example-focused talk, I'll take a bunch of synchronous code and turn it asynchronous, exploring the benefits of doing so.
Kaffepaus 14:15 - 14:30
14:30 - 15:15 Putting your events on a diet - Andreas Öhlund
A common problem when designing service oriented architectures is that events going across services tend to be very large in terms of properties they carry. This has the negative effect of making development tougher, testing harder and deployment a risky operation. In this talk, NServiceBus and Enterprise Software Expert Andreas Öhlund will analyse the checkout process of an online retailer to identify some of the misconceptions that lead to fat events.
15:15 - 16:00 The Pain of Relational Dominance- Jonathan Worthington
We all know the drill. Design a database. Write code against it, maybe helped along by some ORM. As the system grows, add more tables to the database... And where does it lead us? All too often, to databases with hundreds of tables, monolithic applications, and all sorts of other pain. It's not that relational databases are bad per se; they're just somewhat overused, and widely misused. In this talk, I'll pick apart the causes of some of the pain this can lead to. I'll discuss why using events can help to free us from this situation, and lead to some powerful unifications.
Along the way, I'll also show how the CQRS architectural pattern points the way to a migration strategy to something better.
I samarbete med