通常在不同的应用程序(例如Web应用程序,winforms等)中重复使用相同的代码库有哪些选项。
我的直接,高层次的想法是使用Web服务来公开业务逻辑的专用dll。还有哪些其他选择?
由于
答案 0 :(得分:3)
通常,您应该为业务逻辑设置单独的层,为数据访问设置另一个层。这是从非常高的层面来看。根据应用程序的复杂程度,您的业务层可能分为几个组件,其中可能存在暴露给Facade接口的Web服务,而其他可能具有唯一决策逻辑的组件可能驻留在另一个组件中。这些只是模糊的想法。
从您的POV,您的意图之一应该是减少重复代码,其中有几个应用程序具有相同的功能。即使您有一个单独的业务层,这是否可以解决问题?您可能会从不同的应用程序中调用相同的业务功能,但UI层中仍会有许多代码需要单独管理。
构建您的软件是为了提供一个框架,以最大限度地减少为不同平台构建的工作。
考虑到您的两个应用都有相同的用户界面,我认为您的用户界面有一件事就是有一个共同的Controller
和ViewModel
,可以通过网络访问应用程序,其中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 |
+-----------------++-----------------+
希望这有帮助。