2011-11-21 54 views
0

我有一个现有的网站建立在C#3.5使用asp.net mvc 1.在保持基本库功能的同时扩展现有网站功能的最佳途径?

有一部分网站需要额外的行为。基本上需要配置基础库中的某个对象以具有扩展功能。如果在对象上指定了这些扩展功能,则应在该对象的详细信息页面中显示其他内容/功能。

在扩展我的对象与新功能方面,我正在考虑使用装饰模式,创建一个扩展对象与额外的属性等,我可以坚持到另一个数据库表。我会在扩展库中管理所有这些。

我的问题始于控制器/视图级别。所有的控制器操作都已经写好,并且位于我不想修改的基本库中。我可以对这些进行微小的修改 - 但是,不能引入重大更改,并且应该在库在其他地方使用时维护所有现有功能。然而,我可以创建尽可能多的新控制器/服务。

为了使事情更加复杂,该扩展功能对于站点内的所有现有对象都不是必需的。当查看对象的详细信息页面时,客户端需要能够选择将这些对象的某些实例转换为扩展类型。

这使我的详细信息页面非常混乱。我现在需要弄清楚对象是否已经被扩展,如果没有显示允许用户将其转换为扩展类型的控件。如果对象已被扩展,那么我将不得不将所有扩展的内容显示在页面上。如果功能被隔离到页面的特定部分(yay,一个renderaction!),这将是oki,但是扩展内容将在页面的各个部分输出。在各处执行不同的渲染加载似乎很麻烦,应该只根据它是否是扩展对象来输出不同的内容。

我一半考虑做单个ajax查询,然后在加载详细信息页面时动态呈现每个使用javascript的节。

我不想破坏或更改管理此网站基本功能的现有库。

解决这类问题的最佳方法是什么?

回答

1

您可以创建一个匹配现有功能的接口吗?然后使用新功能实现接口,并使用工厂来加载需要的接口。

我知道这是一个代码更改,但新功能可能在一个单独的项目中,工厂和界面不会对代码进行大规模更改。

只是一个想法

+0

嗯,不意见必须努力工作的混凝土尽管,而不是接口? – ctrlplusb