SlideShare a Scribd company logo
1 of 42
Download to read offline
Real Time
 Event Feeds
    with
NServiceBus
     and
                       @roycornelissen

  SignalR                                #SIGNALR
                                                    #NSERVICEBUS
               @marktaling


                                                      #SDE
Combining
Introduction   NServiceBus   SignalR
                                        the two




                             Demos
Showcase: real time monitor


                         production
               gateway
                          monitor
Showcase: real time monitor
             monitor service                   gateway

                     Plugins




                       SendAvailablePlugins
                        PluginAvailable (3x)
                                                    [connect]




Powered By
A service bus
        is an
architectural style
  for integration

To simplify communication between
  services in a distributed system

           NServiceBus
Loose coupling

Share contract and schema,
         not class


Temporal decoupling through
    queued messaging
Where is
  “the bus”?

Like Ethernet, it’s
   everywhere!
A .NET framework to help implement SOA
with the Service Bus architectural style


Abstracts away transport, threading,
queues, transactions


Focuses on implementing business logic


Highly pluggable
developers!

    developers!

developers!

         Very developer
            focused
http has a pull model
The push concept
The server takes the
initiative to send data
to the client
Push protocols




   irc     smtp   websocket   server sent
                                events
Two way, persistent connection, initiated
by client



W3C draft, worked on by IETF




Support (partial) in some browsers
Server side events
“Pub/Sub” like protocol over http

Also still a W3C draft

One-way, client needs extra channel for send

Proxies need to know about
content-type:text/event-stream
But I want it now!
                                   Veruca Salt
     Willy Wonka & The Chocolate Factory, 1971
Other options
                                     long polling
client 1
                      Got msg?                 “message”      Got msg?       “message”

server
                                           POST “message”                POST “message”
client 2


                                     forever frame
           <iframe src=“/forever”>
client 1                                         <script>                      <script>
                      GET /forever                display(“message”);           display(“message”);
                                                 </script>                     </script>
server
                                            POST “message”               POST “message”
client 2
SignalR to the rescue
SignalR will abstract away the
actual protocol used, and adds
a couple of layers on top to
make things even easier

SignalR’s layers of abstraction
hub


                                            persistent connection


SignalR 1.0                                         protocols
                              web sockets   server events     long polling   forever frame


•   Unified programming model
•   Deals with connectivity issues (connection slow, reconnect, disconnects)
•   Available for multiple types of clients
•   Messaging bus
•   Utilizes Json.NET for serialization
hubs
Client/server boundaries fade
 Hubs let you provide a semantic API between client and server
 SignalR creates a proxy between the two parties

         client (javascript)                                  server
 var chat = $.connection.chatHub;              class ChatHub: Hub
 …                                             {
 chat.server.message(“hi!”);           proxy       public void message(string text)
 …                                                 {
 chat.client.notify = function(text)                   Clients.All.notify(text);
 {                                                 }
     // do something with text                 }
 }                                                       dynamic
SignalR options
                               clients


                     Windows
JavaScript   .NET              Silverlight   WinRT      iOS       Android
                      Phone



                                                                  Service
ASP.NET      OWIN    Custom                   SQL       Redis
                                                                    Bus



             hosts                                   backplanes
Gateway
                                                    input
                                                    queue


       Gateway
                                                            Monitor Service
     MonitorHub: Hub
                  GlobalHost
                   .ConnectionManager                            NServiceBus
                   .GetHubContext<MonitorHub>();.
                                 input
                                 queue

     MessageForwarder:
    IHandleMessages<T>


                 IIS AppFabric
Transport
               Gateway
                                         Monitor Service
NServiceBus   MonitorHub: Hub
                                              NServiceBus
                                                SignalR




                         IIS AppFabric
SignalR transport

       The Good

 Transparent: no
notion of SignalR
  NServiceBus in
       the client
SignalR transport

      The Bad

No guaranteed
      delivery
No transaction
      support
Scaling out SignalR via backplanes


                  ?
          B

                           NServiceBus
An NServiceBus backplane
                                                                             input
                                                                             queue

                                                                                        Backplane Service
           SignalR
                                                                                        MessageDispatcher:
                                                                                         IHandleMessages<DistributeMessage>
    NServiceBusMessageBus:                   Bus.Send<DistributeMessage>()


      ScaleoutMessageBus
                                                                                                          NServiceBus
                           OnReceived(…);.
                                             input                                   Bus.Publish<MessagesAvailable>()
                                             queue


              Receiver:
    IHandleMessages<MessagesAvailable>




                          IIS AppFabric
SignalR backplane

Considerations
Reliability offered
by NServiceBus
What about
scalability of the
backplane service
itself?
Links
                          www.nuget.org

                 www.nservicebus.com
            www.github.com/nservicebus
                    www.udidahan.com

                 www.github.com/signalr
        www.github.com/gshackles/signalr
@roycornelissen

royc@infosupport.com

roycornelissen.wordpress.com



@marktaling

markt@infosupport.com



          thanks!

More Related Content

What's hot

Auto scaling and dynamic routing for was liberty collectives
Auto scaling and dynamic routing for was liberty collectivesAuto scaling and dynamic routing for was liberty collectives
Auto scaling and dynamic routing for was liberty collectives
sflynn073
 

What's hot (20)

Introduction to NServiceBus
Introduction to NServiceBusIntroduction to NServiceBus
Introduction to NServiceBus
 
Mulesoft Anypoint platform introduction
Mulesoft Anypoint platform introductionMulesoft Anypoint platform introduction
Mulesoft Anypoint platform introduction
 
WAS vs JBoss, WebLogic, Tomcat (year 2015)
WAS vs JBoss, WebLogic, Tomcat (year 2015)WAS vs JBoss, WebLogic, Tomcat (year 2015)
WAS vs JBoss, WebLogic, Tomcat (year 2015)
 
WSO2 Gateway
WSO2 GatewayWSO2 Gateway
WSO2 Gateway
 
Until Successful Scope With Mule ESB
Until Successful Scope With Mule ESBUntil Successful Scope With Mule ESB
Until Successful Scope With Mule ESB
 
Building out a Microservices Architecture with WebSphere Liberty Profile and ...
Building out a Microservices Architecture with WebSphere Liberty Profile and ...Building out a Microservices Architecture with WebSphere Liberty Profile and ...
Building out a Microservices Architecture with WebSphere Liberty Profile and ...
 
AAI-4847 Full Disclosure on the Performance Characteristics of WebSphere Appl...
AAI-4847 Full Disclosure on the Performance Characteristics of WebSphere Appl...AAI-4847 Full Disclosure on the Performance Characteristics of WebSphere Appl...
AAI-4847 Full Disclosure on the Performance Characteristics of WebSphere Appl...
 
Mule esb
Mule esbMule esb
Mule esb
 
IBM WebSphere Application Server traditional and Docker
IBM WebSphere Application Server traditional and DockerIBM WebSphere Application Server traditional and Docker
IBM WebSphere Application Server traditional and Docker
 
Real time websites and mobile apps with SignalR
Real time websites and mobile apps with SignalRReal time websites and mobile apps with SignalR
Real time websites and mobile apps with SignalR
 
WebSphere application server 8.5.5 - quick overview
WebSphere application server 8.5.5 - quick overviewWebSphere application server 8.5.5 - quick overview
WebSphere application server 8.5.5 - quick overview
 
Was liberty
Was libertyWas liberty
Was liberty
 
IBM WebSphere Application Server Update - Technical University (March 2015)
IBM WebSphere Application Server Update - Technical University (March 2015)IBM WebSphere Application Server Update - Technical University (March 2015)
IBM WebSphere Application Server Update - Technical University (March 2015)
 
NServiceBus - introduction to a message based distributed architecture
NServiceBus - introduction to a message based distributed architectureNServiceBus - introduction to a message based distributed architecture
NServiceBus - introduction to a message based distributed architecture
 
Liberty management
Liberty managementLiberty management
Liberty management
 
Auto scaling and dynamic routing for was liberty collectives
Auto scaling and dynamic routing for was liberty collectivesAuto scaling and dynamic routing for was liberty collectives
Auto scaling and dynamic routing for was liberty collectives
 
Building microservices sample application
Building microservices sample applicationBuilding microservices sample application
Building microservices sample application
 
Mule ESB - Integration Simplified
Mule ESB - Integration SimplifiedMule ESB - Integration Simplified
Mule ESB - Integration Simplified
 
Best Practices for Deploying Microsoft Workloads on AWS
Best Practices for Deploying Microsoft Workloads on AWSBest Practices for Deploying Microsoft Workloads on AWS
Best Practices for Deploying Microsoft Workloads on AWS
 
Jeffrey Richter
Jeffrey RichterJeffrey Richter
Jeffrey Richter
 

Similar to Real time event feeds with NServiceBus and SignalR

Real time Communication with Signalr (Android Client)
Real time Communication with Signalr (Android Client)Real time Communication with Signalr (Android Client)
Real time Communication with Signalr (Android Client)
Deepak Gupta
 
Asynchronous Messaging with NServiceBus
Asynchronous Messaging with NServiceBusAsynchronous Messaging with NServiceBus
Asynchronous Messaging with NServiceBus
Britt King
 
Microsoft signal r
Microsoft signal rMicrosoft signal r
Microsoft signal r
rustd
 
Birds Of The Same Feather   Biz Talk Server And Wcf
Birds Of The Same Feather    Biz Talk Server And WcfBirds Of The Same Feather    Biz Talk Server And Wcf
Birds Of The Same Feather   Biz Talk Server And Wcf
rsnarayanan
 
Openstack Quantum yahoo meetup 1 23-13
Openstack Quantum yahoo meetup 1 23-13Openstack Quantum yahoo meetup 1 23-13
Openstack Quantum yahoo meetup 1 23-13
Dan Wendlandt
 
Am 04 track1--salvatore orlando--openstack-apac-2012-final
Am 04 track1--salvatore orlando--openstack-apac-2012-finalAm 04 track1--salvatore orlando--openstack-apac-2012-final
Am 04 track1--salvatore orlando--openstack-apac-2012-final
OpenCity Community
 
Real time web applications with signal r
Real time web applications with signal rReal time web applications with signal r
Real time web applications with signal r
Elad Avneri
 

Similar to Real time event feeds with NServiceBus and SignalR (20)

WCF
WCFWCF
WCF
 
Building Scalable and Robust Solutions with Service Bus in Cloud and Server
Building Scalable and Robust Solutions with Service Bus in Cloud and ServerBuilding Scalable and Robust Solutions with Service Bus in Cloud and Server
Building Scalable and Robust Solutions with Service Bus in Cloud and Server
 
Consul: Service Mesh for Microservices
Consul: Service Mesh for MicroservicesConsul: Service Mesh for Microservices
Consul: Service Mesh for Microservices
 
Service mesh in action with onap
Service mesh in action with onapService mesh in action with onap
Service mesh in action with onap
 
Real time Communication with Signalr (Android Client)
Real time Communication with Signalr (Android Client)Real time Communication with Signalr (Android Client)
Real time Communication with Signalr (Android Client)
 
Building a scalable microservice architecture with envoy, kubernetes and istio
Building a scalable microservice architecture with envoy, kubernetes and istioBuilding a scalable microservice architecture with envoy, kubernetes and istio
Building a scalable microservice architecture with envoy, kubernetes and istio
 
Istio presentation jhug
Istio presentation jhugIstio presentation jhug
Istio presentation jhug
 
Asynchronous Messaging with NServiceBus
Asynchronous Messaging with NServiceBusAsynchronous Messaging with NServiceBus
Asynchronous Messaging with NServiceBus
 
Asynchronous Messaging with NServiceBus
Asynchronous Messaging with NServiceBusAsynchronous Messaging with NServiceBus
Asynchronous Messaging with NServiceBus
 
Fluentd Plugins for CouchDB, Amazon SQS/SNS
Fluentd Plugins for CouchDB, Amazon SQS/SNSFluentd Plugins for CouchDB, Amazon SQS/SNS
Fluentd Plugins for CouchDB, Amazon SQS/SNS
 
IPC with Qt
IPC with QtIPC with Qt
IPC with Qt
 
Net Services
Net ServicesNet Services
Net Services
 
C# - Azure, WP7, MonoTouch and Mono for Android (MonoDroid)
C# - Azure, WP7, MonoTouch and Mono for Android (MonoDroid)C# - Azure, WP7, MonoTouch and Mono for Android (MonoDroid)
C# - Azure, WP7, MonoTouch and Mono for Android (MonoDroid)
 
Microservices with asp dot net core, a next gen technology
Microservices with asp dot net core, a next gen technologyMicroservices with asp dot net core, a next gen technology
Microservices with asp dot net core, a next gen technology
 
Consuming Web Services in Microsoft Silverlight 3
Consuming Web Services in Microsoft Silverlight 3Consuming Web Services in Microsoft Silverlight 3
Consuming Web Services in Microsoft Silverlight 3
 
Microsoft signal r
Microsoft signal rMicrosoft signal r
Microsoft signal r
 
Birds Of The Same Feather   Biz Talk Server And Wcf
Birds Of The Same Feather    Biz Talk Server And WcfBirds Of The Same Feather    Biz Talk Server And Wcf
Birds Of The Same Feather   Biz Talk Server And Wcf
 
Openstack Quantum yahoo meetup 1 23-13
Openstack Quantum yahoo meetup 1 23-13Openstack Quantum yahoo meetup 1 23-13
Openstack Quantum yahoo meetup 1 23-13
 
Am 04 track1--salvatore orlando--openstack-apac-2012-final
Am 04 track1--salvatore orlando--openstack-apac-2012-finalAm 04 track1--salvatore orlando--openstack-apac-2012-final
Am 04 track1--salvatore orlando--openstack-apac-2012-final
 
Real time web applications with signal r
Real time web applications with signal rReal time web applications with signal r
Real time web applications with signal r
 

Recently uploaded

Architecting Cloud Native Applications
Architecting Cloud Native ApplicationsArchitecting Cloud Native Applications
Architecting Cloud Native Applications
WSO2
 
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Victor Rentea
 

Recently uploaded (20)

EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWEREMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
 
AXA XL - Insurer Innovation Award Americas 2024
AXA XL - Insurer Innovation Award Americas 2024AXA XL - Insurer Innovation Award Americas 2024
AXA XL - Insurer Innovation Award Americas 2024
 
Exploring Multimodal Embeddings with Milvus
Exploring Multimodal Embeddings with MilvusExploring Multimodal Embeddings with Milvus
Exploring Multimodal Embeddings with Milvus
 
Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...
Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...
Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...
 
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, AdobeApidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
 
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processors
 
Corporate and higher education May webinar.pptx
Corporate and higher education May webinar.pptxCorporate and higher education May webinar.pptx
Corporate and higher education May webinar.pptx
 
AWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of TerraformAWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of Terraform
 
Architecting Cloud Native Applications
Architecting Cloud Native ApplicationsArchitecting Cloud Native Applications
Architecting Cloud Native Applications
 
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
 
FWD Group - Insurer Innovation Award 2024
FWD Group - Insurer Innovation Award 2024FWD Group - Insurer Innovation Award 2024
FWD Group - Insurer Innovation Award 2024
 
Rising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdf
Rising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdfRising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdf
Rising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdf
 
"I see eyes in my soup": How Delivery Hero implemented the safety system for ...
"I see eyes in my soup": How Delivery Hero implemented the safety system for ..."I see eyes in my soup": How Delivery Hero implemented the safety system for ...
"I see eyes in my soup": How Delivery Hero implemented the safety system for ...
 
ICT role in 21st century education and its challenges
ICT role in 21st century education and its challengesICT role in 21st century education and its challenges
ICT role in 21st century education and its challenges
 
Cyberprint. Dark Pink Apt Group [EN].pdf
Cyberprint. Dark Pink Apt Group [EN].pdfCyberprint. Dark Pink Apt Group [EN].pdf
Cyberprint. Dark Pink Apt Group [EN].pdf
 
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost SavingRepurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
 
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot TakeoffStrategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
 
Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...
Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...
Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...
 
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
 
Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdf
 

Real time event feeds with NServiceBus and SignalR

  • 1. Real Time Event Feeds with NServiceBus and @roycornelissen SignalR #SIGNALR #NSERVICEBUS @marktaling #SDE
  • 2. Combining Introduction NServiceBus SignalR the two Demos
  • 3.
  • 4. Showcase: real time monitor production gateway monitor
  • 5. Showcase: real time monitor monitor service gateway Plugins SendAvailablePlugins PluginAvailable (3x) [connect] Powered By
  • 6.
  • 7.
  • 8. A service bus is an architectural style for integration To simplify communication between services in a distributed system NServiceBus
  • 9. Loose coupling Share contract and schema, not class Temporal decoupling through queued messaging
  • 10. Where is “the bus”? Like Ethernet, it’s everywhere!
  • 11. A .NET framework to help implement SOA with the Service Bus architectural style Abstracts away transport, threading, queues, transactions Focuses on implementing business logic Highly pluggable
  • 12. developers! developers! developers! Very developer focused
  • 13.
  • 14.
  • 15.
  • 16. http has a pull model
  • 17. The push concept The server takes the initiative to send data to the client
  • 18. Push protocols irc smtp websocket server sent events
  • 19. Two way, persistent connection, initiated by client W3C draft, worked on by IETF Support (partial) in some browsers
  • 20. Server side events “Pub/Sub” like protocol over http Also still a W3C draft One-way, client needs extra channel for send Proxies need to know about content-type:text/event-stream
  • 21. But I want it now! Veruca Salt Willy Wonka & The Chocolate Factory, 1971
  • 22. Other options long polling client 1 Got msg? “message” Got msg? “message” server POST “message” POST “message” client 2 forever frame <iframe src=“/forever”> client 1 <script> <script> GET /forever display(“message”); display(“message”); </script> </script> server POST “message” POST “message” client 2
  • 23. SignalR to the rescue
  • 24. SignalR will abstract away the actual protocol used, and adds a couple of layers on top to make things even easier SignalR’s layers of abstraction
  • 25. hub persistent connection SignalR 1.0 protocols web sockets server events long polling forever frame • Unified programming model • Deals with connectivity issues (connection slow, reconnect, disconnects) • Available for multiple types of clients • Messaging bus • Utilizes Json.NET for serialization
  • 26. hubs
  • 27. Client/server boundaries fade Hubs let you provide a semantic API between client and server SignalR creates a proxy between the two parties client (javascript) server var chat = $.connection.chatHub; class ChatHub: Hub … { chat.server.message(“hi!”); proxy public void message(string text) … { chat.client.notify = function(text) Clients.All.notify(text); { } // do something with text } } dynamic
  • 28.
  • 29. SignalR options clients Windows JavaScript .NET Silverlight WinRT iOS Android Phone Service ASP.NET OWIN Custom SQL Redis Bus hosts backplanes
  • 30.
  • 31. Gateway input queue Gateway Monitor Service MonitorHub: Hub GlobalHost .ConnectionManager NServiceBus .GetHubContext<MonitorHub>();. input queue MessageForwarder: IHandleMessages<T> IIS AppFabric
  • 32.
  • 33. Transport Gateway Monitor Service NServiceBus MonitorHub: Hub NServiceBus SignalR IIS AppFabric
  • 34.
  • 35. SignalR transport The Good Transparent: no notion of SignalR NServiceBus in the client
  • 36. SignalR transport The Bad No guaranteed delivery No transaction support
  • 37. Scaling out SignalR via backplanes ? B NServiceBus
  • 38. An NServiceBus backplane input queue Backplane Service SignalR MessageDispatcher: IHandleMessages<DistributeMessage> NServiceBusMessageBus: Bus.Send<DistributeMessage>() ScaleoutMessageBus NServiceBus OnReceived(…);. input Bus.Publish<MessagesAvailable>() queue Receiver: IHandleMessages<MessagesAvailable> IIS AppFabric
  • 39.
  • 40. SignalR backplane Considerations Reliability offered by NServiceBus What about scalability of the backplane service itself?
  • 41. Links www.nuget.org www.nservicebus.com www.github.com/nservicebus www.udidahan.com www.github.com/signalr www.github.com/gshackles/signalr

Editor's Notes

  1. Photo Credit: &lt;a href=&quot;http://www.flickr.com/photos/50972268@N00/3960160842/&quot;&gt;upton&lt;/a&gt; via &lt;a href=&quot;http://compfight.com&quot;&gt;Compfight&lt;/a&gt; &lt;a href=&quot;http://creativecommons.org/licenses/by-nd/2.0/&quot;&gt;cc&lt;/a&gt;
  2. Photo Credit: &lt;a href=&quot;http://www.flickr.com/photos/26373139@N08/5547069087/&quot;&gt;kenteegardin&lt;/a&gt; via &lt;a href=&quot;http://compfight.com&quot;&gt;Compfight&lt;/a&gt; &lt;a href=&quot;http://creativecommons.org/licenses/by-sa/2.0/&quot;&gt;cc&lt;/a&gt;
  3. Photo Credit: &lt;a href=&quot;http://www.flickr.com/photos/38551575@N00/2467222214/&quot;&gt;papalars&lt;/a&gt; via &lt;a href=&quot;http://compfight.com&quot;&gt;Compfight&lt;/a&gt; &lt;a href=&quot;http://creativecommons.org/licenses/by-nd/2.0/&quot;&gt;cc&lt;/a&gt;
  4. Photo Credit: &lt;a href=&quot;http://www.flickr.com/photos/43102195@N08/5240738243/&quot;&gt;|| UggBoy♥UggGirl || PHOTO || WORLD || TRAVEL ||&lt;/a&gt; via &lt;a href=&quot;http://compfight.com&quot;&gt;Compfight&lt;/a&gt; &lt;a href=&quot;http://creativecommons.org/licenses/by/2.0/&quot;&gt;cc&lt;/a&gt;
  5. Photo Credit: &lt;a href=&quot;http://www.flickr.com/photos/58754750@N08/6137200121/&quot;&gt;Cast a Line&lt;/a&gt; via &lt;a href=&quot;http://compfight.com&quot;&gt;Compfight&lt;/a&gt; &lt;a href=&quot;http://creativecommons.org/licenses/by-nd/2.0/&quot;&gt;cc&lt;/a&gt;Share contract and schema, not class – One of the four Tenets of SOA (Microsoft)
  6. Photo Credit: &lt;a href=&quot;http://www.flickr.com/photos/16405999@N00/73014722/&quot;&gt;Bruno Girin&lt;/a&gt; via &lt;a href=&quot;http://compfight.com&quot;&gt;Compfight&lt;/a&gt; &lt;a href=&quot;http://creativecommons.org/licenses/by-sa/2.0/&quot;&gt;cc&lt;/a&gt;
  7. Photo by JD Hancockat Flickr.com
  8. Photo byNite_Owl@ Flickr.com
  9. Photo Credit: &lt;a href=&quot;http://www.flickr.com/photos/48889107219@N01/1434193709/&quot;&gt;debaird™&lt;/a&gt; via &lt;a href=&quot;http://compfight.com&quot;&gt;Compfight&lt;/a&gt; &lt;a href=&quot;http://creativecommons.org/licenses/by-sa/2.0/&quot;&gt;cc&lt;/a&gt;
  10. Photo by JD Hancockat Flickr.com
  11. Photo Credit: &lt;a href=&quot;http://www.flickr.com/photos/73645804@N00/8490482069/&quot;&gt;woodleywonderworks&lt;/a&gt; via &lt;a href=&quot;http://compfight.com&quot;&gt;Compfight&lt;/a&gt; &lt;a href=&quot;http://creativecommons.org/licenses/by/2.0/&quot;&gt;cc&lt;/a&gt;
  12. Photo by JD Hancockat Flickr.com
  13. Photo by JD Hancockat Flickr.com
  14. Photo by JD Hancockat Flickr.com
  15. Photo Credit: &lt;a href=&quot;http://www.flickr.com/photos/48080134@N08/4401923926/&quot;&gt;Dave Hosford&lt;/a&gt; via &lt;a href=&quot;http://compfight.com&quot;&gt;Compfight&lt;/a&gt; &lt;a href=&quot;http://creativecommons.org/licenses/by/2.0/&quot;&gt;cc&lt;/a&gt;