【问题标题】:dll custom business logicdll自定义业务逻辑
【发布时间】:2011-02-19 23:04:20
【问题描述】:

我有一个项目,其中一些业务逻辑被分离到一个 DLL 项目中,这个 DLL 包含该软件为特定客户提供的业务逻辑。

现在我在另一个具有不同规则的客户端想要实现该软件后遇到问题,我需要应用程序根据使用该软件的客户端加载适当的 dll,考虑到该 dll 包含相同的函数名称但不同的主体.

我正在使用 c# 3.5,有没有办法这样做?

【问题讨论】:

  • 您是否有多个不同的客户端使用同一个软件实例?还是每个客户端都使用不同的实例?

标签: c# .net configuration business-logic extensibility


【解决方案1】:

是的,你当然可以。您可以分支项目、更改类的实现、保持所有类和类成员的签名相同、重新编译,您的业务逻辑将按照您的意愿运行。

但是,这不好。您将有两个不同的分支,具有不同的实现,您必须保持签名同步永远。然后你会有另一个客户,另一个。这将是一场永无止境的噩梦。

是否可以分离出不同的功能?你可以:

  • 将配置放入数据库或配置文件(可能是 XML)。出于这个原因,您的许多应用都应该基于表或配置文件运行。
  • 代码需要不同的地方可以实现plug-insproviders
  • 有点老派,但您可以使用CodeDom 编译代码的部分实现即插即用功能(忽略关于绘制代码的部分)。然后,您可以将功能放入易于编辑的文本文件中。
  • 看看Managed Extensibility Framework,专为这类事情而设计。

【讨论】:

  • 那么您推荐的解决方案是什么?
  • @Robert:输入一些选项。设置软件以适用于不同的客户是很棘手的,尤其是第二个客户。问题是一些推销员或老板认为“稍微调整一下”很容易,现在 Mustafa 必须让它发挥作用。
  • MEF +1。您需要花点功夫才能理解它,但它可以很好地处理适合客户端的代码的动态加载。
【解决方案2】:

针对接口 - IBusinessLogic 编写业务逻辑。

您可以将两个业务逻辑保留在同一个程序集中,并使用基于配置的依赖注入来指定在部署到客户期间使用哪个业务逻辑。

【讨论】:

    【解决方案3】:

    如果我正确理解了您的问题,而不是您正在寻找业务逻辑定制。您可以通过多种方式实现它。我在这里描述的其中之一。

    在您的应用程序目录中为自定义 DLL 创建一个文件夹。通过包装器创建所有业务对象。这将首先通过使用反射在任何业务对象之前检查适当类的自定义 dll,否则它将从常规类创建业务逻辑。希望这会有所帮助。

    【讨论】:

    • 在这个场景中使用带有依赖注入的接口比使用反射要好得多。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-10-31
    • 1970-01-01
    • 1970-01-01
    • 2012-02-09
    • 2010-12-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多