Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/294.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在Visual Studio中将应用程序拆分为多个解决方案之前,我应该考虑哪些因素?_C#_Visual Studio_Design Patterns_Architecture_Domain Driven Design - Fatal编程技术网

C# 在Visual Studio中将应用程序拆分为多个解决方案之前,我应该考虑哪些因素?

C# 在Visual Studio中将应用程序拆分为多个解决方案之前,我应该考虑哪些因素?,c#,visual-studio,design-patterns,architecture,domain-driven-design,C#,Visual Studio,Design Patterns,Architecture,Domain Driven Design,在过去,我的项目变得很难管理,特别是当我在几年后不得不重做或对某个部分进行重大更新而不必重做所有内容时。这一次,我将重点放在使“可插拔”应用程序设计变得简单和可行,从而允许我在不涉及任何内容的情况下重新访问和重做一个部分 我在想这个结构: 所以我想要的是能够在有界上下文2上工作,并在接下来的一个月/几年内用大量新功能扩展它,而有界上下文1保持原样。我还将研究UI,特别是关于有界上下文2的部分。我还想让用户能够使用来自其他设备的绑定上下文2 最好是,即使是bounded context 2的UI

在过去,我的项目变得很难管理,特别是当我在几年后不得不重做或对某个部分进行重大更新而不必重做所有内容时。这一次,我将重点放在使“可插拔”应用程序设计变得简单和可行,从而允许我在不涉及任何内容的情况下重新访问和重做一个部分

我在想这个结构:

所以我想要的是能够在有界上下文2上工作,并在接下来的一个月/几年内用大量新功能扩展它,而有界上下文1保持原样。我还将研究UI,特别是关于有界上下文2的部分。我还想让用户能够使用来自其他设备的绑定上下文2

最好是,即使是bounded context 2的UI中使用的web技术也会得到更新,因为这是我们的主要关注领域,也是使用最多的,因此,将其放在自己的web UI项目中,并拥有一个“登录”站点,提供管理用户和让用户登录等常见功能,可能是明智的

现在,我正在考虑在VisualStudio中将所有这些分离到单独的解决方案中,以简化管理。但我可以在一个解决方案中为每个解决方案创建一个文件夹,并将所有内容都放在那里

我的问题是什么是推荐的方法,在分离不同的<强>解决方案

之前,我该考虑什么? 关于如何管理这一点,是否有任何最佳实践?有人知道什么是有效的,什么是无效的吗

顺便说一句:由于这是由有限的上下文划分的,因此需要在系统的各个部分之间进行通信,尽管没有直接的依赖关系(即,上下文1管理和维护注册员工的业务逻辑,这在上下文2中也是需要的)

更新 我意识到需要更多的信息


有界上下文比这两个上下文更多。他们中没有一个真正像一个部门,即员工管理是经理在需要组织/归档与管理他人相关的信息时所处的环境,并且还需要获得重要事件的提醒。采购是员工为某个部门采购商品并进行盘点时所处的环境,可能有20-40个组织部门使用此环境。我正在考虑“报告”是否是一个独立的有界上下文(尽管没有非常有趣的逻辑和行为)。它们往往从提供基本功能开始,然后随着时间的推移,随着更多功能的添加和人们“发现”新需求而增长。它们是单独更新的,我希望它们中的一些能够及时发展成更大的系统,即使它们开始解决一些基本的需求

我认为,在决定是否应该有多个解决方案时,答案是您是否真的设想了一个(或多个)组成您的绑定上下文的程序集被用于其他不同的应用程序,这将公开您的绑定上下文管理的所有完全相同的用例中的一些。如果是这样,那么单独的解决方案是有意义的。但是,如果您的所有UI层在概念上都是同时发布的同一个应用程序,那么我会将其保留在一个解决方案中,除非您有太多的项目,以至于Visual Studio无法使用

不过,如果您真的打算让另一个应用程序使用相同的有界上下文,我会感到惊讶。如果您仔细考虑一下,您是否希望只将更新版本的逻辑部署到web服务,而不部署到windows窗体应用程序?可能不会,因为逻辑更改可能会导致奇怪的问题,其中数据不是应用程序期望的数据


你所拥有的听起来像是一个平台,该平台的所有部分(UI层)都应该运行完全相同的逻辑。

我想解决方案的观点并不是主要问题。我会选择在文件夹中组织我的项目。一个用于每个有界上下文,一个用于另一个有界上下文中的web UI(如果考虑到它,可以将其视为自己的有界上下文)

您可能有一些共享内核,由您的所有bc共享,您也可以将其放在不同的文件夹中

通常每个bc都应该是独立的(除了共享程序集),并且您的UI应该通过其接口(例如WCF契约)只知道bc

全局解决方案可能包含(MyApplicationName.sln)中的每个文件夹和项目,但您可以考虑只在解决方案的一部分上工作的专用解决方案,如MyApplication\u BCName仅包含bc文件夹、共享程序集和UI(如果它适合您的需要),并且您不希望有一个庞大的解决方案来处理

从小事做起,在你真正需要的时候尽快去做。尤其要注意交叉引用,vs中的设置方式实际上并不重要。如果程序集是松散耦合的,那么您可以在以后的任何时候以您想要的方式重新排列它们


我不是一个一流的程序员,我只是碰巧认为这样的事情对于我所参与的最新项目来说似乎很好,它可能在几个月内(几个小时…??;)就完全改变了。

所以,你有一堆代码,想在不加载与其他部分相关的项目的情况下处理代码的某些部分。然后是的,您可以将每个部分作为单独的VisualStudio解决方案

关键的一点是VS解决方案只是一个[.sln]文件,描述了该解决方案将哪些项目分组。不要为此目的单独复制项目。您必须只维护所有项目一次(每个项目一个副本),然后创建单独的解决方案,并包括您认为与此解决方案(代码的这一部分)相关的项目

e、 你可能会认为“员工管理”是一个只包含3个(全部40个)项目的解决方案。