首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >维护业务类库的两个版本

维护业务类库的两个版本
EN

Stack Overflow用户
提问于 2009-02-12 16:01:14
回答 2查看 145关注 0票数 1

我们的核心业务应用程序使用一个业务对象库(C#项目)。数据访问是使用威尔逊O/R映射器完成的(我们将在今年夏天迁移到NHibernate )。该应用程序有3个前端UI: Windows窗体、ASP.NET和一个安装在tablet PC上的Windows Forms应用程序。这三个前端执行不同的功能,但它们都访问业务类的一个核心子集。

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

理想情况下,我们应该有两个版本的核心业务对象库,Full和Compact。这看起来就像是维护的噩梦。有没有管理这种情况的策略?或者其他选择?微软是如何管理完整而紧凑的.NET框架的?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2009-02-12 18:27:26

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

首先要知道的是CF程序集是可重定向的。这意味着CF程序集可以被全框架应用程序直接使用,而无需任何重新编译(假设它不使用任何设备特定的东西,如P/调用coredll,而无需检查运行时环境,使用WindowsMobile命名空间等)。

如果使用重定目标不能完全解决这个问题,那么可以使用编译器指令和分部类来处理维护问题。Daniel Moth在his MSDN article中很好地介绍了这些技巧。

票数 2
EN

Stack Overflow用户

发布于 2009-02-12 16:37:25

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

现在,在理想的情况下,您实际上应该将Domain对象(映射到OR的对象)与非常非常少的业务逻辑共享。然后创建一个使用这些域对象的BO层。如果您设法以这种方式拆分您的代码库,那么理论上您可以根据您的需要只部署需要部署的单独的层。

然而,在我看来,您更像是需要执行智能拆分。

您可能需要做的是对代码进行分段,以便Tablet PC BO位于核心根BO中。然后创建一个BO扩展程序集,该程序集包含Winform / Web应用程序版本所需的其他对象、规则等。

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

如果您遵循这种方法,可能会使事情更容易管理。只要从到处都需要的通用东西和专门的方法来看就知道了。:)

如果你愿意,我可以给你更多的细节,只是想给你一个基本的打击。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/541983

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档