在多个应用中共享相同的代码库

时间:2011-11-22 13:35:29

标签: architecture scalability

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

我的直接,高层次的想法是使用Web服务来公开业务逻辑的专用dll。还有哪些其他选择?

由于

1 个答案:

答案 0 :(得分:3)

通常,您应该为业务逻辑设置单独的层,为数据访问设置另一个层。这是从非常高的层面来看。根据应用程序的复杂程度,您的业务层可能分为几个组件,其中可能存在暴露给Facade接口的Web服务,而其他可能具有唯一决策逻辑的组件可能驻留在另一个组件中。这些只是模糊的想法。

从您的POV,您的意图之一应该是减少重复代码,其中有几个应用程序具有相同的功能。即使您有一个单独的业务层,这是否可以解决问题?您可能会从不同的应用程序中调用相同的业务功能,但UI层中仍会有许多代码需要单独管理。

构建您的软件是为了提供一个框架,以最大限度地减少为不同平台构建的工作。

考虑到您的两个应用都有相同的用户界面,我认为您的用户界面有一件事就是有一个共同的ControllerViewModel,可以通过网络访问应用程序,其中Controller将通过代理业务层外观界面进行通信,此代理将公开到您的UI层,该层将紧密耦合到您的控制器 ViewModel

这可以帮助您使用此图表进行可视化:

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

希望这有帮助。