维护业务类库的两个版本

时间:2009-02-12 16:01:14

标签: oop compact-framework frameworks

我们的核心业务应用程序使用业务对象的库(C#项目)。使用Wilson O / R Mapper完成数据访问(我们今年夏天将迁移到NHibernate)。该应用程序有3个前端UI:Windows Forms,ASP.NET和安装在平板电脑上的Windows Forms应用程序。这三个前端执行不同的功能,但它们都访问业务类的核心子集。

平板电脑应用程序是个问题。我们尝试限制推送到平板电脑的数据量,以减少使用SQL Server合并复制进行同步所需的时间。我们遇到的问题是当我们向主应用程序添加新功能时,我们不需要将这些功能分发到平板电脑,或者如果它是敏感数据,则需要不分发它。其中一些可以通过复制来控制,但我们偶尔会在必须存在的核心业务对象中引入依赖关系,以便O / R映射器工作。

理想情况下,我们会有两个版本的核心业务对象库,Full和Compact。这似乎是一场维护噩梦。有没有管理这个的策略?还是替代品? Microsoft如何管理完整而紧凑的.NET框架?

2 个答案:

答案 0 :(得分:2)

您可以做的一件事是,如果您可以单独编译每个平台,您可以使用编译器指令来限制Tablet PC平台所需的内容。但是,如果使用OR映射器可能会很困难。

现在,在一个理想的世界中,您实际上拥有的Domain对象(映射到OR的对象)与非常少的业务逻辑共享。然后有一个使用这些Domain对象的BO层。如果你设法以这种方式打破你的代码库,理论上你可以根据你的需要只需要部署你需要的分层。

然而,听起来更像是你需要进行智能拆分。

您可能需要做的是对代码进行细分,使得Tablet PC BO位于核心根BO组件中。然后有一个BO扩展程序集,其中包含Winform / Web应用程序版本所需的其他对象,规则等。

因此,虽然此时您将拥有两个域级业务对象组件,但实际上您不会有任何重复。由于您的Tablet PC BO对象也将是Winform / Asp.net应用程序的基础。然后扩展dll将只包含更大版本的hte应用程序所需的额外内容。

如果您遵循这种方法,可能会使事情变得更容易管理。只需从各处所需的Common内容和专业方法中查看它。 :)

如果你愿意,我可以更详细地介绍一下,只是想给你一个基本的打击。

答案 1 :(得分:2)

你的问题谈到Tablet PC,这实际上只是XP,因此CF真的不相关,但为了问题主题本身,我们仍然可以讨论维护CF使用的代码和FFx(假设您实际上是指Windows Mobile或Windows CE)。

首先要知道的是CF组件是可重定向的。这意味着CF程序集可以直接由完整框架应用程序使用而无需任何重新编译(假设它不使用任何特定于设备的东西,如P / Invoking coredll,无需检查运行时环境,使用WindowsMo​​bile命名空间等)。 / p>

如果使用重定向不能让你一直到那里,那么你可以使用编译器指令和部分类来处理maintennace。 Daniel Moth在his MSDN article中很好地介绍了这些提示。

相关问题