如何在两个应用程序之间共享类和功能

时间:2011-07-04 09:01:31

标签: c# architecture software-design

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

现在我被要求创建一个新的模块/应用程序,用户刷卡,然后系统根据规则匹配显示一些促销信息(如果您的银行余额> 5,000美元,则为jewlery商业广告,或商业广告如果你所列的职业是'md'等,可以定制lisence牌。

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

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

至于如何处理这个问题,我最好的想法是将广告应用程序作为一个完全不同的应用程序,它与主应用程序(使用wcf / web服务)进行通信,以便检索成员的详细信息。

我还希望在两个应用程序中共享一些共同的类(如MemberControllerBase)。
要实现这一点,最简单的方法是创建一个Common dll,其中包含我想要分享的任何内容。
但是我在这种情况下的关注是Common dll会变成一个混合的混合物,没有任何连贯的关系(EntityBaseControllerBaseViewBase同样的dll ??)
任何有关上述解决方案的想法,或者对这个问题的一般欢迎。

P.S。它应该不重要,但我正在使用的技术是c#3.5(很快将是4.0),nHibernate用于持久性,winforms用于客户扫描其卡片的终端以及用于管理的基于jQuery的网站。

1 个答案:

答案 0 :(得分:1)

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