Architectural Overview of
Distributed ParcelTracking
and Management System
Mark Cheeseman
mcheeseman@visaglobal.com.au
http://hombredequeso.id.au/
Public Health Warning (Required by Law…)
The following presentation includes graphic scenes of UI torture and
SQL Server abuse that may disturb some viewers.
Usable User Interface design and relational use of relational databases
were both harmed in the making of this product.
Viewers who suspect they may find such scenes disturbing may wish
to confirm the presence of a sick bag in the back of the seat before
you.
Website/ API
Business Services
Process Bookings
Produce Labels
Customs
Billing
Parcel Scan In/ Out
...
Tracking
Website
Customs
Customers
Parcel
Recipients
AusPost
NZ Post
Whip
Operators
Conceptual Diagram
...
Website API *
Tracking
Website *
API Update Service
Tracking Update
Service
Parcel Audit
Service *
AusPost Service *
Billing Service *
Booking Service *
Cyberfreight
Service *
MAWB Service
NZ Post Service * NZ Post API Service
Reporting Service *
Scan Processing
Service*
Email Processing
Service *
File Transfer
Service
Customers/
Operators
(Web Browser)
Scan/Print
(Application)
Parcel Recipients
(Web Browser)
Cyberfreight
(Application)
NZ Post (API)
Cyberfreight
Customs (SMTP)
AusPost (SFTP)
Logical Diagram
Bus
* = has own database
Azure VM
Azure
Service Bus
NSB Message
Transport
Physical Diagram
Azure SQL
Server
· API
· Booking
· AusPost
· Cyberfreight
· ...
Azure SQL
Server
· Tracking Website
Azure Web App
Website/API
(ASP.NET MVC API)
Azure Web App
Tracking Website
(ASP.NET MVC API)
RavenDb
Server
· Booking NSB EP
· AusPost NSB EP
· NZPost NSB EP
· ...
Service: Booking NSB Endpoint
Service: AusPost NSB Endpoint
Service: NZPost NSB Endpoint
Service: Cyberfreight NSB Endpoint
...
Distributed Parcel Tracking/Management System Overview
Distributed Parcel Tracking/Management System Overview
Distributed Parcel Tracking/Management System Overview
Distributed Parcel Tracking/Management System Overview
Distributed Parcel Tracking/Management System Overview
REST API: Siren
Specification:
https://github.com/kevinswiber/siren
{
"class": ["booking"],
"properties": {
"bookingNumber": "BREDH10000910",
"merchant": "Red Hare",
"merchantCode": "REDH",
"parcelCount": 1000,
"created": "2015-05-24T11:47:37.4721121Z",
"processes": "Labelling, Customs",
"parcelsRecordedForCustomsCount": 1000,
"parcelsRecordedForCustomsTimestamp": "2015-05-24T11:47:41.2653291Z",
"ausPostLabelsGenerated": "2015-05-24T11:47:48.9757701Z",
"ausPostLabelsRecordedForCustomsCount": 1000,
"ausPostLabelsRecordedForCustomsTimestamp": "2015-05-24T11:48:00.2774165Z",
"labelledSpreadsheetCreated": "2015-05-24T11:48:02.6825541Z"
},
"entities": [
{
"class": ["bookingSubmission"],
"rel": ["/rel/booking-bookingsubmission"],
"links": [
{
"rel": ["self"],
"href": "http://localhost:54747/api/Merchant/BookingSubmissions/92be90a5-710d-40ef-bb6c-a4a201672282"
}
]
}
],
"links": [
{
"rel": ["self"],
"href": "http://localhost:54747/api/Merchant/Bookings/BREDH10000910"
},
{
"rel": ["file","xlsx","booking/labelledContent"],
"href": "http://localhost:54747/api/Merchant/Bookings/BREDH10000910/labelledContent"
}
],
"actions": [
{
"name": "post-bookingDespatchManifestRequest",
"title": "Generate Despatch Manifest For Booking",
"method": "POST",
"href": "http://localhost:54747/api/Merchant/Bookings/BREDH10000910/bookingDespatchManifestRequests",
"type": "application/x-www-form-urlencoded",
"fields": []
}
]
}
GET http://localhost:54747/api
/Merchant/Bookings/BREDH10000910
{
"class": ["booking"],
"properties": {
"bookingNumber": "BREDH10000910",
"merchant": "Red Hare",
"merchantCode": "REDH",
"parcelCount": 1000,
"created": "2015-05-24T11:47:37.4721121Z",
"processes": "Labelling, Customs",
"parcelsRecordedForCustomsCount": 1000,
"parcelsRecordedForCustomsTimestamp": "2015-05-24T11:47:41.2653291Z",
"ausPostLabelsGenerated": "2015-05-24T11:47:48.9757701Z",
"ausPostLabelsRecordedForCustomsCount": 1000,
"ausPostLabelsRecordedForCustomsTimestamp": "2015-05-24T11:48:00.2774165Z",
"labelledSpreadsheetCreated": "2015-05-24T11:48:02.6825541Z"
},
"entities": [
{
"class": ["bookingSubmission"],
"rel": ["/rel/booking-bookingsubmission"],
"links": [
{
"rel": ["self"],
"href": "http://localhost:54747/api/Merchant/BookingSubmissions/92...82"
LogicalView
]
}
],
"links": [
{
"rel": ["self"],
"href": "http://localhost:54747/api/Merchant/Bookings/BREDH10000910"
},
{
"rel": ["file","xlsx","booking/labelledContent"],
"href": "http://localhost:54747/api/Merchant/Bookings
/BREDH10000910/labelledContent"
}
],
"actions": [
{
"name": "post-bookingDespatchManifestRequest",
"title": "Generate Despatch Manifest For Booking",
"method": "POST",
"href": "http://localhost:54747/api/Merchant/Bookings
/BREDH10000910/bookingDespatchManifestRequests",
"type": "application/x-www-form-urlencoded",
"fields": []
}
]
API Event Store
Bus (NSB)
API Update
Service
WEB API
Event Stream to Siren
Entity Transform
Event
Store
Http Request (GET)
NSB Events from various endpoints
(Booking, AusPost, Customs)
“Event Store”
Events
NSB Events
Siren Entity
Business Processes Involving
Multiple Services
(Long Running Business Processes)
ProcessManager: Saga asProcessController
Booking
Endpoint*
Saga
AusPost
Endpoint*
Customs
Endpoint*
7. Booking “fully”
accepted
Saga
State
Fastway
Endpoint*
1. BookingReceivedEvent
2. CreateApLabelsCommand
3. CreateFwLabelsCommand
6. CreateConsolidations
Command
5. ApLabelsCreatedEvent
4. FwLabelsCreatedEvent
ProcessManager: Routing Slip
Booking
Endpoint*
AusPost
Endpoint*
Customs
Endpoint*
Fastway
Endpoint*
ProcessBooking
SubmissionCommand
Routing Slip (on Booking Message):
1. AusPostEndpoint
2. FastwayEndpoint
3. CustomsEndpoint
Booking Booking Booking
Booking
(“fully” accepted)
ProcessManager: Event Driven Booking Processeson Event
Booking
Endpoint*
AusPost
Endpoint*
Customs
Endpoint*
Fastway
Endpoint*
1. BookingCreatedEvent
2. AusPostLabelsCreatedEvent
3. FastwayLabelsCreatedEvent
Booking Representation on all Events:
{
Guid BookingId
BookingProcess[] Processes
}
public enum BookingProcess
{
Labelling = 1,
Customs = 2,
AusPostPreLabelled = 3
}
4. Booking “fully”
accepted
Solving Big(ish) Data on the Bus
AusPost Service *
Booking Service *
Cyberfreight
Service *
NZ Post Service * NZ Post API Service
Email Processing
Service *
File Transfer
Service
The IdealisticVision...
(Logical) Bus
AusPost Service *
Booking Service *
Cyberfreight
Service *
NZ Post Service * NZ Post API Service
Email Processing
Service *
File Transfer
Service
Bus: Message Bus+ Data Bus
OHS
ACL
ACL
ACL
OHS
OHS
ACL
ACL
(Message) Bus(Data) Bus
AusPost Service *
Booking Service *
Cyberfreight
Service *
NZ Post Service * NZ Post API Service
Email Processing
Service *
File Transfer
Service
Data BusImplementation
SQL
Database
NSB (Physical) Transport:
Azure Service Bus
Data Bus: Implemention via
SQL queries
Not AllTransports are Created Equal…
References
Siren Specification
https://github.com/kevinswiber/siren
Richardson Maturity Model (for API's)
http://martinfowler.com/articles/richardsonMaturityModel.html
Recommended books on REST
Richardson and Amundsen, RESTfulWeb APIs.
Webber et. al., REST in Practice: Hypermedia and Systems Architecture
Messaging in General
Hohpe andWoolf, Enterprise Integration Patterns
(for various forms of routing as process management see ch. 7)
Blog Series on NServiceBus and Process Management Patterns
https://lostechies.com/jimmybogard/2013/05/14/saga-patterns-wrap-up/
(Top of post has links to all post in series)
https://lostechies.com/jimmybogard/2014/10/02/nservicebus-5-0-behaviors-in-action-routing-
slips/
Event Based Systems
VaughnVernon, Implementing Domain-Driven Design, ch. 8.
Dynamic Event Replay Mechanism
http://blogs.msdn.com/b/davidebb/archive/2010/01/18/use-c-4-0-dynamic-to-drastically-
simplify-your-private-reflection-code.aspx

More Related Content

PDF
Payments On Rails
PPTX
Client side development with knockout.js
PDF
API REST et client Javascript - Nuxeo Tour 2014 - Workshop
PDF
Application submission, management and manetization in Firefox Marketplace
PPTX
Deploying your static web app to the Cloud
PDF
Volt Showcase - Planning Poker
KEY
Molly Holzschlag - How HTML 5 is Going to Completely Change your Web App
PDF
Multi screen HTML5
Payments On Rails
Client side development with knockout.js
API REST et client Javascript - Nuxeo Tour 2014 - Workshop
Application submission, management and manetization in Firefox Marketplace
Deploying your static web app to the Cloud
Volt Showcase - Planning Poker
Molly Holzschlag - How HTML 5 is Going to Completely Change your Web App
Multi screen HTML5

What's hot (11)

PPT
jQuery and AJAX with Rails
PPTX
Yammer Api SDK
PDF
jQuery and Rails: Best Friends Forever
PDF
jQuery Mobile Workshop
TXT
Empty
PPT
User Switcher for Cascade Server
PPTX
domain driven design talk
PDF
HTML5 - The 2012 of the Web - Adobe MAX
PPTX
Apex & jQuery Mobile
PPTX
Salesforce integration with Box.com, docuSign & QuickBooks made easy
PDF
HTML5 - The 2012 of the Web
jQuery and AJAX with Rails
Yammer Api SDK
jQuery and Rails: Best Friends Forever
jQuery Mobile Workshop
Empty
User Switcher for Cascade Server
domain driven design talk
HTML5 - The 2012 of the Web - Adobe MAX
Apex & jQuery Mobile
Salesforce integration with Box.com, docuSign & QuickBooks made easy
HTML5 - The 2012 of the Web
Ad

Viewers also liked (6)

PDF
Delivering a Parcel Tracking System for the Future
PDF
Courier Management System(Dhl software documentation)
PDF
Cisco uc broschure cc only
PDF
Parcel management system - Proposal
DOCX
Courier project abstract
PPT
Courier Management System By Mukesh
Delivering a Parcel Tracking System for the Future
Courier Management System(Dhl software documentation)
Cisco uc broschure cc only
Parcel management system - Proposal
Courier project abstract
Courier Management System By Mukesh
Ad

Similar to Distributed Parcel Tracking/Management System Overview (20)

PPTX
Cinema booking system | Movie Booking System
PDF
The Evolution of Integration
PPTX
Apache con 2011 provisioning distributed os-gi applications in a cloud
PPTX
Apache con 2011 provisioning distributed os-gi applications in a cloud
PDF
Plataforma distribuída de Microserviços ou, como a Olist funciona
PDF
ITKonekt 2023: The Busy Platform Engineers Guide to API Gateways
ZIP
REST: Theory vs Practice
PPTX
Mule soft meetup_noida_jan_2022
DOCX
Initial reportfinal
PDF
NZ Post - Mulesoft Summit presentation
PPTX
RESTful services Design Lab
PDF
Yahoo Web Analytics API Reference Guide
PDF
Introduction to the Archivematica API (September 2018)
PDF
REST - What's It All About? (SAP TechEd 2012, CD110)
PDF
Olist Architecture v2.0
PPTX
Group-16.pptx-hxl-css-mmmlmaocuoiia1tram
PPTX
NServiceBus workshop presentation
PDF
RDB Synchronization, Transcoding and LDAP Directory Services ...
PDF
API Management: La Puerta de enlace (por Francisco Nieto)
Cinema booking system | Movie Booking System
The Evolution of Integration
Apache con 2011 provisioning distributed os-gi applications in a cloud
Apache con 2011 provisioning distributed os-gi applications in a cloud
Plataforma distribuída de Microserviços ou, como a Olist funciona
ITKonekt 2023: The Busy Platform Engineers Guide to API Gateways
REST: Theory vs Practice
Mule soft meetup_noida_jan_2022
Initial reportfinal
NZ Post - Mulesoft Summit presentation
RESTful services Design Lab
Yahoo Web Analytics API Reference Guide
Introduction to the Archivematica API (September 2018)
REST - What's It All About? (SAP TechEd 2012, CD110)
Olist Architecture v2.0
Group-16.pptx-hxl-css-mmmlmaocuoiia1tram
NServiceBus workshop presentation
RDB Synchronization, Transcoding and LDAP Directory Services ...
API Management: La Puerta de enlace (por Francisco Nieto)

Recently uploaded (20)

PPTX
Viber For Windows 25.7.1 Crack + Serial Keygen
PDF
Guide to Food Delivery App Development.pdf
PPTX
Cybersecurity-and-Fraud-Protecting-Your-Digital-Life.pptx
PPTX
hospital managemt ,san.dckldnklcdnkdnkdnjadnjdjn
PDF
E-Commerce Website Development Companyin india
PDF
The Dynamic Duo Transforming Financial Accounting Systems Through Modern Expe...
PPTX
4Seller: The All-in-One Multi-Channel E-Commerce Management Platform for Glob...
PPTX
Full-Stack Developer Courses That Actually Land You Jobs
PDF
BoxLang Dynamic AWS Lambda - Japan Edition
PDF
Practical Indispensable Project Management Tips for Delivering Successful Exp...
PDF
CCleaner 6.39.11548 Crack 2025 License Key
DOCX
Modern SharePoint Intranet Templates That Boost Employee Engagement in 2025.docx
PPTX
HackYourBrain__UtrechtJUG__11092025.pptx
PDF
SOFTWARE ENGINEERING Software Engineering (3rd Edition) by K.K. Aggarwal & Yo...
PPTX
Lecture 5 Software Requirement Engineering
PDF
novaPDF Pro 11.9.482 Crack + License Key [Latest 2025]
PDF
AI-Powered Fuzz Testing: The Future of QA
PDF
Type Class Derivation in Scala 3 - Jose Luis Pintado Barbero
PPTX
CNN LeNet5 Architecture: Neural Networks
PDF
Multiverse AI Review 2025: Access All TOP AI Model-Versions!
Viber For Windows 25.7.1 Crack + Serial Keygen
Guide to Food Delivery App Development.pdf
Cybersecurity-and-Fraud-Protecting-Your-Digital-Life.pptx
hospital managemt ,san.dckldnklcdnkdnkdnjadnjdjn
E-Commerce Website Development Companyin india
The Dynamic Duo Transforming Financial Accounting Systems Through Modern Expe...
4Seller: The All-in-One Multi-Channel E-Commerce Management Platform for Glob...
Full-Stack Developer Courses That Actually Land You Jobs
BoxLang Dynamic AWS Lambda - Japan Edition
Practical Indispensable Project Management Tips for Delivering Successful Exp...
CCleaner 6.39.11548 Crack 2025 License Key
Modern SharePoint Intranet Templates That Boost Employee Engagement in 2025.docx
HackYourBrain__UtrechtJUG__11092025.pptx
SOFTWARE ENGINEERING Software Engineering (3rd Edition) by K.K. Aggarwal & Yo...
Lecture 5 Software Requirement Engineering
novaPDF Pro 11.9.482 Crack + License Key [Latest 2025]
AI-Powered Fuzz Testing: The Future of QA
Type Class Derivation in Scala 3 - Jose Luis Pintado Barbero
CNN LeNet5 Architecture: Neural Networks
Multiverse AI Review 2025: Access All TOP AI Model-Versions!

Distributed Parcel Tracking/Management System Overview

  • 1. Architectural Overview of Distributed ParcelTracking and Management System Mark Cheeseman [email protected] http://hombredequeso.id.au/
  • 2. Public Health Warning (Required by Law…) The following presentation includes graphic scenes of UI torture and SQL Server abuse that may disturb some viewers. Usable User Interface design and relational use of relational databases were both harmed in the making of this product. Viewers who suspect they may find such scenes disturbing may wish to confirm the presence of a sick bag in the back of the seat before you.
  • 3. Website/ API Business Services Process Bookings Produce Labels Customs Billing Parcel Scan In/ Out ... Tracking Website Customs Customers Parcel Recipients AusPost NZ Post Whip Operators Conceptual Diagram ...
  • 4. Website API * Tracking Website * API Update Service Tracking Update Service Parcel Audit Service * AusPost Service * Billing Service * Booking Service * Cyberfreight Service * MAWB Service NZ Post Service * NZ Post API Service Reporting Service * Scan Processing Service* Email Processing Service * File Transfer Service Customers/ Operators (Web Browser) Scan/Print (Application) Parcel Recipients (Web Browser) Cyberfreight (Application) NZ Post (API) Cyberfreight Customs (SMTP) AusPost (SFTP) Logical Diagram Bus * = has own database
  • 5. Azure VM Azure Service Bus NSB Message Transport Physical Diagram Azure SQL Server · API · Booking · AusPost · Cyberfreight · ... Azure SQL Server · Tracking Website Azure Web App Website/API (ASP.NET MVC API) Azure Web App Tracking Website (ASP.NET MVC API) RavenDb Server · Booking NSB EP · AusPost NSB EP · NZPost NSB EP · ... Service: Booking NSB Endpoint Service: AusPost NSB Endpoint Service: NZPost NSB Endpoint Service: Cyberfreight NSB Endpoint ...
  • 12. { "class": ["booking"], "properties": { "bookingNumber": "BREDH10000910", "merchant": "Red Hare", "merchantCode": "REDH", "parcelCount": 1000, "created": "2015-05-24T11:47:37.4721121Z", "processes": "Labelling, Customs", "parcelsRecordedForCustomsCount": 1000, "parcelsRecordedForCustomsTimestamp": "2015-05-24T11:47:41.2653291Z", "ausPostLabelsGenerated": "2015-05-24T11:47:48.9757701Z", "ausPostLabelsRecordedForCustomsCount": 1000, "ausPostLabelsRecordedForCustomsTimestamp": "2015-05-24T11:48:00.2774165Z", "labelledSpreadsheetCreated": "2015-05-24T11:48:02.6825541Z" }, "entities": [ { "class": ["bookingSubmission"], "rel": ["/rel/booking-bookingsubmission"], "links": [ { "rel": ["self"], "href": "http://localhost:54747/api/Merchant/BookingSubmissions/92be90a5-710d-40ef-bb6c-a4a201672282" } ] } ], "links": [ { "rel": ["self"], "href": "http://localhost:54747/api/Merchant/Bookings/BREDH10000910" }, { "rel": ["file","xlsx","booking/labelledContent"], "href": "http://localhost:54747/api/Merchant/Bookings/BREDH10000910/labelledContent" } ], "actions": [ { "name": "post-bookingDespatchManifestRequest", "title": "Generate Despatch Manifest For Booking", "method": "POST", "href": "http://localhost:54747/api/Merchant/Bookings/BREDH10000910/bookingDespatchManifestRequests", "type": "application/x-www-form-urlencoded", "fields": [] } ] } GET http://localhost:54747/api /Merchant/Bookings/BREDH10000910
  • 13. { "class": ["booking"], "properties": { "bookingNumber": "BREDH10000910", "merchant": "Red Hare", "merchantCode": "REDH", "parcelCount": 1000, "created": "2015-05-24T11:47:37.4721121Z", "processes": "Labelling, Customs", "parcelsRecordedForCustomsCount": 1000, "parcelsRecordedForCustomsTimestamp": "2015-05-24T11:47:41.2653291Z", "ausPostLabelsGenerated": "2015-05-24T11:47:48.9757701Z", "ausPostLabelsRecordedForCustomsCount": 1000, "ausPostLabelsRecordedForCustomsTimestamp": "2015-05-24T11:48:00.2774165Z", "labelledSpreadsheetCreated": "2015-05-24T11:48:02.6825541Z" }, "entities": [ { "class": ["bookingSubmission"], "rel": ["/rel/booking-bookingsubmission"], "links": [ { "rel": ["self"], "href": "http://localhost:54747/api/Merchant/BookingSubmissions/92...82" LogicalView
  • 14. ] } ], "links": [ { "rel": ["self"], "href": "http://localhost:54747/api/Merchant/Bookings/BREDH10000910" }, { "rel": ["file","xlsx","booking/labelledContent"], "href": "http://localhost:54747/api/Merchant/Bookings /BREDH10000910/labelledContent" } ], "actions": [ { "name": "post-bookingDespatchManifestRequest", "title": "Generate Despatch Manifest For Booking", "method": "POST", "href": "http://localhost:54747/api/Merchant/Bookings /BREDH10000910/bookingDespatchManifestRequests", "type": "application/x-www-form-urlencoded", "fields": [] } ]
  • 15. API Event Store Bus (NSB) API Update Service WEB API Event Stream to Siren Entity Transform Event Store Http Request (GET) NSB Events from various endpoints (Booking, AusPost, Customs) “Event Store” Events NSB Events Siren Entity
  • 16. Business Processes Involving Multiple Services (Long Running Business Processes)
  • 17. ProcessManager: Saga asProcessController Booking Endpoint* Saga AusPost Endpoint* Customs Endpoint* 7. Booking “fully” accepted Saga State Fastway Endpoint* 1. BookingReceivedEvent 2. CreateApLabelsCommand 3. CreateFwLabelsCommand 6. CreateConsolidations Command 5. ApLabelsCreatedEvent 4. FwLabelsCreatedEvent
  • 18. ProcessManager: Routing Slip Booking Endpoint* AusPost Endpoint* Customs Endpoint* Fastway Endpoint* ProcessBooking SubmissionCommand Routing Slip (on Booking Message): 1. AusPostEndpoint 2. FastwayEndpoint 3. CustomsEndpoint Booking Booking Booking Booking (“fully” accepted)
  • 19. ProcessManager: Event Driven Booking Processeson Event Booking Endpoint* AusPost Endpoint* Customs Endpoint* Fastway Endpoint* 1. BookingCreatedEvent 2. AusPostLabelsCreatedEvent 3. FastwayLabelsCreatedEvent Booking Representation on all Events: { Guid BookingId BookingProcess[] Processes } public enum BookingProcess { Labelling = 1, Customs = 2, AusPostPreLabelled = 3 } 4. Booking “fully” accepted
  • 20. Solving Big(ish) Data on the Bus AusPost Service * Booking Service * Cyberfreight Service * NZ Post Service * NZ Post API Service Email Processing Service * File Transfer Service The IdealisticVision... (Logical) Bus
  • 21. AusPost Service * Booking Service * Cyberfreight Service * NZ Post Service * NZ Post API Service Email Processing Service * File Transfer Service Bus: Message Bus+ Data Bus OHS ACL ACL ACL OHS OHS ACL ACL (Message) Bus(Data) Bus
  • 22. AusPost Service * Booking Service * Cyberfreight Service * NZ Post Service * NZ Post API Service Email Processing Service * File Transfer Service Data BusImplementation SQL Database NSB (Physical) Transport: Azure Service Bus Data Bus: Implemention via SQL queries
  • 23. Not AllTransports are Created Equal…
  • 24. References Siren Specification https://github.com/kevinswiber/siren Richardson Maturity Model (for API's) http://martinfowler.com/articles/richardsonMaturityModel.html Recommended books on REST Richardson and Amundsen, RESTfulWeb APIs. Webber et. al., REST in Practice: Hypermedia and Systems Architecture
  • 25. Messaging in General Hohpe andWoolf, Enterprise Integration Patterns (for various forms of routing as process management see ch. 7) Blog Series on NServiceBus and Process Management Patterns https://lostechies.com/jimmybogard/2013/05/14/saga-patterns-wrap-up/ (Top of post has links to all post in series) https://lostechies.com/jimmybogard/2014/10/02/nservicebus-5-0-behaviors-in-action-routing- slips/ Event Based Systems VaughnVernon, Implementing Domain-Driven Design, ch. 8. Dynamic Event Replay Mechanism http://blogs.msdn.com/b/davidebb/archive/2010/01/18/use-c-4-0-dynamic-to-drastically- simplify-your-private-reflection-code.aspx