【问题标题】:how to share classes and functionality between two applications如何在两个应用程序之间共享类和功能
【发布时间】:2011-09-27 23:57:18
【问题描述】:

我开发了一个应用程序(例如,假设它是一个会员卡应用程序),
用户刷他们的会员卡,应用程序检索他们的详细信息,查找他们的购物历史,计算他们应得的折扣率等。
该应用程序还进行“规则匹配”:根据资历、银行余额等,根据不同的规则确定贴现率。

现在我被要求创建一个新模块/应用程序,当用户刷卡时系统会根据规则匹配显示一些促销信息(即,如果您的银行余额大于 5,000 美元,则为珠宝广告,或为如果您列出的职业是'md'等,则定制牌照)。

现在,这两个应用程序仅在某种意义上相关:
* 他们使用一些相同的域模型(Member 实体)
* 它们共享一些相同的功能(从卡详细信息中检索会员信息、规则匹配和规则管理)
* 商业应用需要从主应用中获取信息(会员详情)
* 另外,我希望我为我的应用程序开发的“基础设施”操作可用于广告应用程序(例如ControllerBase 的日志记录功能,或管理会话创建和销毁的httpModule - session-per-要求)。

我现有的应用程序是一个(相当)简单的 MVC / n 层应用程序。

就如何解决这个问题而言,我最好的想法是将广告应用程序作为一个完全不同的应用程序,它与主应用程序通信(使用 wcf/Web 服务)以检索成员的详细信息。

我还希望在两个应用程序之间共享一些通用类(如 MemberControllerBase)。
为此,最简单的方法是创建一个Common dll,其中包含我想分享的任何内容。
但在这种情况下,我担心的是Common dll 只会变成一堆杂乱无章的东西,没有任何连贯的关系(EntityBaseControllerBaseViewBase 在同一个 dll 中??)
欢迎对上述解决方案或一般主题提出任何想法。

附言这并不重要,但我使用的技术是 c# 3.5(即将成为 4.0)、用于持久性的 nHibernate、用于客户扫描卡的终端的 winforms 应用程序以及用于管理的基于 jQuery 的网站。

【问题讨论】:

    标签: c# architecture software-design


    【解决方案1】:

    您对使用一个常见的 dll 感到担忧是对的,因为它很快就会变成一团糟。我建议使用多个共享 dll(尽可能少或尽可能多),按逻辑拆分。你最终会得到更多的项目和参考资料,但我不认为这是一个问题。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-11-28
      • 2018-04-19
      • 2013-10-31
      • 1970-01-01
      • 2010-11-17
      • 2011-12-15
      • 2016-07-16
      • 2021-04-12
      相关资源
      最近更新 更多