Architecture 跨多个应用共享相同的代码库

Architecture 跨多个应用共享相同的代码库,architecture,scalability,Architecture,Scalability,在不同的应用程序(例如web应用程序、winforms等)中重复使用相同的代码库通常有哪些选项 我当前的高级想法是使用web服务公开业务逻辑的专用dll。还有什么其他选择 谢谢通常,您应该有一个单独的层用于业务逻辑,另一个层用于数据访问。这是从非常高的层次来看的。根据应用程序的复杂性,您的业务层可以划分为多个组件,其中可能有向Facade接口公开的web服务,而可能具有唯一决策逻辑的其他组件可能位于另一个组件中。这些只是模糊的想法 从您的角度来看,您的目的之一应该是减少重复代码,因为有多个应用程

在不同的应用程序(例如web应用程序、winforms等)中重复使用相同的代码库通常有哪些选项

我当前的高级想法是使用web服务公开业务逻辑的专用dll。还有什么其他选择


谢谢

通常,您应该有一个单独的层用于业务逻辑,另一个层用于数据访问。这是从非常高的层次来看的。根据应用程序的复杂性,您的业务层可以划分为多个组件,其中可能有向Facade接口公开的web服务,而可能具有唯一决策逻辑的其他组件可能位于另一个组件中。这些只是模糊的想法

从您的角度来看,您的目的之一应该是减少重复代码,因为有多个应用程序具有相同的功能。即使您有一个单独的业务层,这能解决问题吗?可能您将从不同的应用程序调用相同的业务功能,但UI层中仍有许多代码需要单独管理

构建您的软件是为了提供一个框架,使构建不同平台的工作量最小化

考虑到您的两个应用程序都有相同的UI,我想到的一件事是您的UI端有一个通用的
控制器
视图模型
,可以从web和win应用程序访问,其中,
控制器
将通过一个代理业务层门面接口对话,该代理将暴露于您的UI层,该UI层将与您的控制器视图模型紧密耦合

这可能有助于您使用此图表进行可视化:

+------------------------------------+
|                                    |
|         DATA ACCESS LAYER          |
+------------------------------------+
+------------------------------------+
|          BUSINESS LAYER            |
| +--------------------------------+ |
| |          COMPONENT A           | |
| +--------------------------------+ |
| +--------------------------------+ |
| |          COMPONENT B           | |
| +--------------------------------+ |
|+----------------------------------+|
||        WEB SERVICE FACADE        ||
|+----------------------------------+|
+------------------------------------+
+-----------------++-----------------+
|    WIN AGENT    ||    WEB AGENT    |
+-----------------++-----------------+
+------------------------------------+
|        PRESENTATION STACK          |
+------------------------------------+
|+----------------------------------+|
||       GENERIC CONTROLLER         ||
|+----------------------------------+|
+------------------------------------+
+-----------------++-----------------+
|     WIN APP     ||    WEB APP      |
+-----------------++-----------------+

希望这能有所帮助。

你在用什么语言?我猜是C#/VB,但它显然极大地影响了给出的答案。。。