Architecture 在特定应用程序中开发(某种程度上)域

Architecture 在特定应用程序中开发(某种程度上)域,architecture,dns,Architecture,Dns,我正在开发一个在各个领域都有应用的应用程序 在大多数域中,用户对系统的操作是相同的,但有些方面略有不同,例如,某些域需要额外的屏幕或功能或不同的业务规则,但总体而言,它们之间有很大的相似性 目前,每个域都有自己的应用程序,这些应用程序是从以前的域复制/粘贴的,并根据需要进行修改。可以想象,这并不理想,会导致大量重复/返工/头痛 我想知道,在开发这样一个应用程序或一套应用程序时,是否有任何指导,在没有这些相同问题的情况下,这些应用程序或应用程序具有相当多的相似性(在某种程度上) 我考虑过创建一个适

我正在开发一个在各个领域都有应用的应用程序

在大多数域中,用户对系统的操作是相同的,但有些方面略有不同,例如,某些域需要额外的屏幕或功能或不同的业务规则,但总体而言,它们之间有很大的相似性

目前,每个域都有自己的应用程序,这些应用程序是从以前的域复制/粘贴的,并根据需要进行修改。可以想象,这并不理想,会导致大量重复/返工/头痛

我想知道,在开发这样一个应用程序或一套应用程序时,是否有任何指导,在没有这些相同问题的情况下,这些应用程序或应用程序具有相当多的相似性(在某种程度上)

我考虑过创建一个适合所有这些域的通用域。我以前在使用这种方法的应用程序上工作过,发现事情变得如此复杂,需要很多开关来启用/禁用某些功能。从本质上说,这个领域是如此的通用,以至于它对任何人都没有任何意义,而且很难为特定领域定制


如果有什么不同的话,它将是一个用c#和.net 4编写的asp.net mvc应用程序。我的建议是为每个域/用户组创建一个前端应用程序,并在适当的地方保留共享的后端层,以便共享资源。您需要坐下来认真思考前端域共享的意义,并在共享层(即:web服务、数据库、消息队列等)中实现共享

此外,如果前端设计中存在大量重复,则需要尝试编写可重用组件(共享库),然而,当以追溯形式转换时,此建议几乎没有用处;如您所述,如果前端应用程序已经存在,那么不进行大规模重构是很困难的

如果你发现自己放置的开关覆盖了很多情况,这意味着你正试图神化你的域对象,试图让它们赚得更多。它还建议您需要添加一个额外的层,更具体的前端,隐藏切换逻辑(或完全避免)