【发布时间】:2011-09-27 23:57:18
【问题描述】:
我开发了一个应用程序(例如,假设它是一个会员卡应用程序),
用户刷他们的会员卡,应用程序检索他们的详细信息,查找他们的购物历史,计算他们应得的折扣率等。
该应用程序还进行“规则匹配”:根据资历、银行余额等,根据不同的规则确定贴现率。
现在我被要求创建一个新模块/应用程序,当用户刷卡时系统会根据规则匹配显示一些促销信息(即,如果您的银行余额大于 5,000 美元,则为珠宝广告,或为如果您列出的职业是'md'等,则定制牌照)。
现在,这两个应用程序仅在某种意义上相关:
* 他们使用一些相同的域模型(Member 实体)
* 它们共享一些相同的功能(从卡详细信息中检索会员信息、规则匹配和规则管理)
* 商业应用需要从主应用中获取信息(会员详情)
* 另外,我希望我为我的应用程序开发的“基础设施”操作可用于广告应用程序(例如ControllerBase 的日志记录功能,或管理会话创建和销毁的httpModule - session-per-要求)。
我现有的应用程序是一个(相当)简单的 MVC / n 层应用程序。
就如何解决这个问题而言,我最好的想法是将广告应用程序作为一个完全不同的应用程序,它与主应用程序通信(使用 wcf/Web 服务)以检索成员的详细信息。
我还希望在两个应用程序之间共享一些通用类(如 Member 或 ControllerBase)。
为此,最简单的方法是创建一个Common dll,其中包含我想分享的任何内容。
但在这种情况下,我担心的是Common dll 只会变成一堆杂乱无章的东西,没有任何连贯的关系(EntityBase 和 ControllerBase 和 ViewBase 在同一个 dll 中??)
欢迎对上述解决方案或一般主题提出任何想法。
附言这并不重要,但我使用的技术是 c# 3.5(即将成为 4.0)、用于持久性的 nHibernate、用于客户扫描卡的终端的 winforms 应用程序以及用于管理的基于 jQuery 的网站。
【问题讨论】:
标签: c# architecture software-design