我开发了一个应用程序(例如,让我们说它是会员卡应用程序),
用户刷其会员卡并且应用程序检索其详细信息,查找他们的购物历史记录,计算他们应得的折扣率等。
该应用程序还进行“规则匹配”:根据资历,银行余额等根据不同规则确定折现率。
现在我被要求创建一个新的模块/应用程序,用户刷卡,然后系统根据规则匹配显示一些促销信息(如果您的银行余额> 5,000美元,则为jewlery商业广告,或商业广告如果你所列的职业是'md'等,可以定制lisence牌。
现在,这两个应用只是在某种意义上相关:
*他们使用一些相同的域模型(Member
实体)
*他们共享一些相同的功能(从卡详细信息,规则匹配和规则管理中检索会员信息)
*商业应用程序需要从主应用程序检索信息(会员详细信息)
*此外,我希望我为我的应用程序开发的“基础设施”操作可用于商业应用程序(如ControllerBase
的日志记录功能,或管理会话创建和销毁的httpModule
- 会话每个请求)。
我现有的应用程序是一个(相当)简单的MVC / n层应用程序。
至于如何处理这个问题,我最好的想法是将广告应用程序作为一个完全不同的应用程序,它与主应用程序(使用wcf / web服务)进行通信,以便检索成员的详细信息。
我还希望在两个应用程序中共享一些共同的类(如Member
或ControllerBase
)。
要实现这一点,最简单的方法是创建一个Common
dll,其中包含我想要分享的任何内容。
但是我在这种情况下的关注是Common
dll会变成一个混合的混合物,没有任何连贯的关系(EntityBase
和ControllerBase
和ViewBase
同样的dll ??)
任何有关上述解决方案的想法,或者对这个问题的一般欢迎。
P.S。它应该不重要,但我正在使用的技术是c#3.5(很快将是4.0),nHibernate用于持久性,winforms用于客户扫描其卡片的终端以及用于管理的基于jQuery的网站。
答案 0 :(得分:1)
你对使用一个常见的dll感到担忧,因为它很快就会陷入混乱。我建议使用多个共享dll(尽可能少或尽可能多),逻辑分割。你最终会得到更多的项目和参考资料,但我不认为这是一个问题。