{"action":"created","issue":{"url":"https://api.github.com/repos/Particular/NServiceBus/issues/2852","labels_url":"https://api.github.com/repos/Particular/NServiceBus/issues/2852/labels{/name}","comments_url":"https://api.github.com/repos/Particular/NServiceBus/issues/2852/comments","events_url":"https://api.github.com/repos/Particular/NServiceBus/issues/2852/events","html_url":"https://github.com/Particular/NServiceBus/issues/2852","id":104685714,"number":2852,"title":"Multi-Deserializer for NServiceBus","user":{"login":"particularbot","id":6763890,"avatar_url":"https://avatars.githubusercontent.com/u/6763890?v=3","gravatar_id":"","url":"https://api.github.com/users/particularbot","html_url":"https://github.com/particularbot","followers_url":"https://api.github.com/users/particularbot/followers","following_url":"https://api.github.com/users/particularbot/following{/other_user}","gists_url":"https://api.github.com/users/particularbot/gists{/gist_id}","starred_url":"https://api.github.com/users/particularbot/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/particularbot/subscriptions","organizations_url":"https://api.github.com/users/particularbot/orgs","repos_url":"https://api.github.com/users/particularbot/repos","events_url":"https://api.github.com/users/particularbot/events{/privacy}","received_events_url":"https://api.github.com/users/particularbot/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":{"login":"hmemcpy","id":601206,"avatar_url":"https://avatars.githubusercontent.com/u/601206?v=3","gravatar_id":"","url":"https://api.github.com/users/hmemcpy","html_url":"https://github.com/hmemcpy","followers_url":"https://api.github.com/users/hmemcpy/followers","following_url":"https://api.github.com/users/hmemcpy/following{/other_user}","gists_url":"https://api.github.com/users/hmemcpy/gists{/gist_id}","starred_url":"https://api.github.com/users/hmemcpy/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/hmemcpy/subscriptions","organizations_url":"https://api.github.com/users/hmemcpy/orgs","repos_url":"https://api.github.com/users/hmemcpy/repos","events_url":"https://api.github.com/users/hmemcpy/events{/privacy}","received_events_url":"https://api.github.com/users/hmemcpy/received_events","type":"User","site_admin":false},"milestone":null,"comments":58,"created_at":"2015-09-03T12:55:55Z","updated_at":"2015-09-03T12:56:13Z","closed_at":null,"body":"**Issue by [johnsimons](https://github.com/johnsimons)** _6/13/2014 7:50:23 AM +00:00_ _Originally opened as https://github.com/Particular/PlatformDevelopment/issues/91_\r\n\r\n----\r\n\r\nTaskforce: @hmemcpy @SzymonPobiega @timbussmann  @danielmarbach\n\nAs part of my talk at NSBCon, I'll be live coding a multi-deserializer using the new pipeline capabilities.\n\nYesterday I had a go at it, and I've done it, you can see it in my repo at https://github.com/johnsimons/NServiceBus.MultiDeserializer\n\nI believe this is a very good feature to ship as part of NSB.\n\nThis allows endpoints using different serializers to interact with each other without any modifications.\nBut my favourite use case is to migrate from one serializer to a different serializer, something like moving from xml to json because of the xml serilalizer limitations.\n\n## Customer communication\n\nWe now support multiple serialization. Allows you to...\n\n * Transition between different serializers.\n * More safely transition between versions of the same serializaiton type.\n * Better support integration scenarios with 3rd parties. \n\n## Plan of Attack\n- [x] Provide an API to register *additional* deserializers in bus configuration, in addition to the existing configured serializer\n- [x] Compose together the configured serializer and the additional deserializers into a class that can retrieve the correct one from a content type header\n- [x] Add doco about the new API to register additional deserializers\n- [x] Add announcement about this new feature\n\n## Impact assessment\n\nPossible Medium impact. Since XML is the default many customers stick with it when JSON is a better option for both extensibility and interoperability purposes. At them moment users need to write non trivial code to support multiple deserialization.\n\n\n## Related issues \n\n - https://github.com/Particular/NServiceBus/issues/736"},"comment":{"url":"https://api.github.com/repos/Particular/NServiceBus/issues/comments/137430985","html_url":"https://github.com/Particular/NServiceBus/issues/2852#issuecomment-137430985","issue_url":"https://api.github.com/repos/Particular/NServiceBus/issues/2852","id":137430985,"user":{"login":"particularbot","id":6763890,"avatar_url":"https://avatars.githubusercontent.com/u/6763890?v=3","gravatar_id":"","url":"https://api.github.com/users/particularbot","html_url":"https://github.com/particularbot","followers_url":"https://api.github.com/users/particularbot/followers","following_url":"https://api.github.com/users/particularbot/following{/other_user}","gists_url":"https://api.github.com/users/particularbot/gists{/gist_id}","starred_url":"https://api.github.com/users/particularbot/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/particularbot/subscriptions","organizations_url":"https://api.github.com/users/particularbot/orgs","repos_url":"https://api.github.com/users/particularbot/repos","events_url":"https://api.github.com/users/particularbot/events{/privacy}","received_events_url":"https://api.github.com/users/particularbot/received_events","type":"User","site_admin":false},"created_at":"2015-09-03T12:56:13Z","updated_at":"2015-09-03T12:56:13Z","body":" **Comment by [SzymonPobiega](https://github.com/SzymonPobiega)** _https://github.com/Particular/PlatformDevelopment/issues/91#issuecomment-127257109_\r\n\r\n----\r\n\r\nThen we need to design the API differently because we were already bitten by APIs where order of calls does matter. It should be explicit in the API which serializer is considered first and which second and so on.\r\n\r\nI prefer being explicit to having a pretty natural-language-like API."}}