[英]Service Oriented Architecture and evolving objects shared between applications
I'm about to begin writing a suite of WCF services for a variety of business applications. 我将开始为各种业务应用程序编写一套WCF服务。 This SOA will be very immature to begin with and eventually evolve into a strong middle-ware layer. 这种SOA一开始会非常不成熟,最终会演变为强大的中间件层。
Unfortunately I do not have the luxury of writing a full set of services and then re-factoring applications to use them, it will be a iterative process done over time. 不幸的是,我没有编写完整的服务然后重构应用程序以使用它们的奢侈,这将是一个随着时间推移而进行的迭代过程。 The question I have is around evolving (changing, adding, removing properties) business objects. 我的问题是围绕发展(更改,添加,删除属性)业务对象。
For example: If you have a SOA exposing a service that returns obj1. 例如:如果您有一个SOA公开返回obj1的服务。 That service is being consumed by app1, app2, app3. 该服务正在由app1,app2,app3使用。 Imagine that object is changed for app1, I don't want to have to update app2 and app3 for changes made for app1. 想象一下,对象已更改为app1,我不想为app1所做的更改而必须更新app2和app3。 If the change is an add property it will work fine, it will simply not be mapped but what happens when you remove a property? 如果更改是添加属性,它将正常工作,将不会被映射,但是删除属性会发生什么? Or change a property from a string to an int? 或将属性从字符串更改为int? How do you manage the change? 您如何管理变更?
Thanks in advance for you help? 在此先感谢您的帮助?
PS: I did do a little picture but apparently I need a reputation of 10 so you will have to use your imagination... PS:我确实做了一些描述,但显然我需要10点的声誉,因此您将不得不发挥自己的想象力...
The goal is to limit the changes you force your clients to have to make immediately. 目的是限制您迫使客户立即进行的更改。 They may eventually have to make some changes, but hopefully it is only under unavoidable circumstances like they are multiple versions behind and you are phasing it out altogether. 他们可能最终必须进行一些更改,但是希望它只能在不可避免的情况下进行,例如它们后面有多个版本,而您将完全淘汰它们。
Non-breaking changes can be: 不变的更改可以是:
Breaking changes include: 重大更改包括:
Options: 选项:
Here is also a good flowchart from “Apress - Pro WCF4: Practical Microsoft SOA Implementation” that may help. 这也是“ Apress-Pro WCF4:实用的Microsoft SOA实施”中的一个很好的流程图,可能会有所帮助。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.