c# – 构建通用应用程序 – 允许客户特定选项
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了c# – 构建通用应用程序 – 允许客户特定选项,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2057字,纯文字阅读大概需要3分钟。
内容图文
我已经构建了一个开源应用程序,我很想知道其他人如何处理客户特定的请求.保持应用程序简单对我来说很重要;我不是要为所有人创造一切.应用程序可能变得臃肿,复杂,并且几乎无法使用.但是,有一些客户特定的选项会很好(它不适用于所有客户).例如…
假设我们有一个名为Server的域实体.在UI中,我们让客户从服务器列表中进行选择.对于一家公司,按位置过滤服务器很有帮助(美国,德国,法国等).添加像这样的服务器属性是很容易的:
public class Server
{
public Location Location { get; set; }
// other properties here
}
我担心的是,随着时间的推移,服务器可能会变得臃肿.即使我只添加位置,并非所有客户都会关心该属性.
一种选择是允许用户定义的字段:
public class Server
{
public string UserField1 { get; set; }
public string UserField2 { get; set; }
public string UserField3 { get; set; }
// etc...
// other properties here
}
这是处理这个的最好方法吗?我不喜欢通过将所有东西都变成字符串来消除类型安全的事实.还有其他/更好的方法让人们处理这样的问题吗?是否有这样的设计模式?
解决方法:
在我看来,这样的一个好的设计模式是在数据库级别使用模式,然后在类级别使用基本继承.
CREATE TABLE dbo.A (
ColumnA INT NOT NULL PRIMARY KEY AUTO_INCREMENT,
ColumnB VARCHAR(50),
ColumnC INT,
etc.
)
现在我们有一个需要某些特定功能的客户端,所以让我们在不同的模式中创建这个表的扩展:
CREATE TABLE CustomerA.A (
ColumnA INT NOT NULL PRIMARY KEY,
Location VARCHAR(50)
)
但现在我们有另一个客户需要以不同方式扩展它:
CREATE TABLE CustomerB.B (
ColumnA INT NOT NULL PRIMARY KEY,
DataCenterID INT
)
虽然这些字段可能不相关,但您明白了,所以现在我们需要在此构建客户特定的域模型:
public abstract class A
{
public int ColumnA { get; set; }
public string ColumnB { get; set; }
public int ColumnC { get; set; }
}
public class CustomerA_A : A
{
public string Location { get; set; }
}
public class CustomerB_A : A
{
public int DataCenterID { get; set; }
}
所以现在当我们需要为客户A构建一些东西时,我们将构建他们的子类,并为他们的客户B构建,等等.
现在,仅供参考,这是一个非常动态的系统的开始.我之所以这么说是因为缺少的那部分,那还不是动态的,就是用户界面.有很多方法可以实现,但超出了这个问题的范围.这是你必须考虑的事情.我这样说是因为你管理界面的方式将决定你如何知道构建哪个子类.
我希望这有帮助.
内容总结
以上是互联网集市为您收集整理的c# – 构建通用应用程序 – 允许客户特定选项全部内容,希望文章能够帮你解决c# – 构建通用应用程序 – 允许客户特定选项所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。