C# 更新API和自定义RDB
所以 我目前正在做一个项目,其中两个不同的数据源将被更新 业务对象具有相似的结构,但并不完全相同 我目前计划做的是使用提供者接口,所以我有一个处理程序类来推送到两个数据库 由于第二个对象来自一个外部API,我认为最好的办法是将我的自定义对象推到API的提供程序中,手动映射,这样其他实现表单等的开发人员就可以轻松地完成所有这些工作 我想我总是要在某个时候重新进行映射,但我想知道是否有人有更好的方法,只在实现的方法中进行映射-下面是我目前想法的框架。。有什么想法吗C# 更新API和自定义RDB,c#,design-patterns,oop,C#,Design Patterns,Oop,所以 我目前正在做一个项目,其中两个不同的数据源将被更新 业务对象具有相似的结构,但并不完全相同 我目前计划做的是使用提供者接口,所以我有一个处理程序类来推送到两个数据库 由于第二个对象来自一个外部API,我认为最好的办法是将我的自定义对象推到API的提供程序中,手动映射,这样其他实现表单等的开发人员就可以轻松地完成所有这些工作 我想我总是要在某个时候重新进行映射,但我想知道是否有人有更好的方法,只在实现的方法中进行映射-下面是我目前想法的框架。。有什么想法吗 IBusinessObject1P
IBusinessObject1PushProvider
{
Create();
}
DSOneBusinessObject1Pusher : IBusinessObject1PushProvider
{
Create()
{
// move custom object into our database
}
}
DSTwoBusinessObject1Pusher : IBusinessObject1PushProvider
{
Create()
{
APIObj1 ob1 = new APIObj1();
ob1.Name = obPassedThrough.FirstName + obPassedThrough.LastName;
// move ob1 to the webservice having had the datamassaged.
}
}
我在实现这一功能时的想法是:
ob1.Name=obPassedThrough.FirstName+obPassedThrough.LastName;
),必须指定所需的行为。您可以在使用某种通用转换模式的代码中执行此操作,也可以在XML或其他形式中指定此操作
通过这种方式,您应该能够创建非常简单的代码,将各种对象发布到您自己的数据库和第三方。两边都相同的普通对象可以立即工作,开发人员可以轻松实现奇怪的行为。最好的解决方案可能是使用 定义一个包含所需API的接口,该接口不是特定于某个实现的,然后定义两个适配器(每个数据源一个适配器,用于实现该接口),每个适配器将其转换为底层API 这种方法将允许您替换任何一个数据源,而无需更改上面的适配器
如果您需要一个简短的示例,请留下评论。因为您的数据存储很可能会失去同步。最好在本地数据库中设置某种状态标志,例如:-
set local_stat = IN_PROGRESS;
id = create(the_data,local_stat);
commit;
send to remote_service();
if (ok)
then
set local_stat = IN_SYNC;
else
set local_stat = OUT_OF_SYNC;
update(id,local_stat);
commit;
然后,您将能够从大多数错误情况中恢复。这与我所期望的答案有点接近。我认为使用这个或我建议的提供者模型可以有效地解决相同的问题。