扩展现有网站功能的最佳方式,同时保持基本库的功能

本文关键字:功能 方式 网站 最佳 扩展 | 更新日期: 2023-09-27 18:15:21

我有一个使用asp.net mvc 1的c# 3.5构建的现有站点。

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

在用新功能扩展我的对象方面,我正在考虑使用decorator模式,创建一个具有附加属性等的extendedobject,我可以将其持久化到另一个数据库表。我将在一个扩展库中管理所有这些。

我的问题始于控制器/视图级别。所有的控制器动作都已经写好了,并且在我不想修改的基本库中。我可以对它们做一些小的修改——但是,不能引入破坏性的更改,并且当库在其他地方使用时,应该维护所有现有的功能。但是,我可以创建任意数量的新控制器/服务。

使事情变得更复杂的是,这个扩展的功能并不是站点中所有现有对象都需要的。在查看对象的详细信息页面时,客户端需要能够选择将这些对象的某些实例转换为扩展类型。

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

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

我不想破坏或改变管理这个站点基本功能的现有库。

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

扩展现有网站功能的最佳方式,同时保持基本库的功能

能否创建一个与现有功能匹配的接口?然后用新功能实现接口,并使用工厂来加载所需的功能。

我确实意识到这是一个代码更改,但是新的功能可以在一个单独的项目中,工厂和接口不会对代码产生巨大的变化。

只是一个想法