Y
yap
Unregistered / Unconfirmed
GUEST, unregistred user!
关注WebService已经有段日子了,总想让它在实际项目中应用。
在网上查找了很多的资料,却发现深入讲解应用的并不多见。
前些日子,有心做个DB App的Demo,却遇到这样一些尴尬的问题。
如果从前到后全使用Delphi开发,那是没问题,都比较方便,
可我在服务器端采用Java, 客户端采用Delphi(实现的方式主要参照
Delphi自带的例子IssuesSample),将客户端修改和更新的数据转换成
数组对象,通过SOAP传输到服务器端,再由服务器端程序根据每条记录
的更新标记(自定义的)实现数据的更新。以下罗列所遇到的问题:
1. DataSet Records <=> Array of Object 没有方便自动的机制
这或许应该是我们自己来做的事情,可我发现SOAP似乎不支持
多态(当然也可能是我不知道实现的方法),导致无法编写一个
有效的框架,自动完成类似的任务。结果是每个这样的转换
都必须至少写两个相互转换值的函数,工作量大而又无意义。
其实,在.Net中DataSet是可以绑定数组、集合等的自定义
DataSource,不知道在Delphi中如何实现。请大家给点意见。我
觉的这个机制很重要,极大的简化开发工作。
2. 在ClientDataSet中似乎不能很好的跟踪数据的更新状态。
cdsDelta.data:=cdsOrders.Delta;
cdsDalta.First;
while not cdsDelta.Eofdo
begin
if cdsDelta.UpdataStatus = usDelete then
begin
... //do something here
//实际执行中发现这段代码执行不到,搞不懂
end;
... //判断其他更新状态
cdsDelta.Next;
end;
而且,我发现由于ClientDataSet保留一次ApplyUpdates前的所有
操作历史记录,会导致最终转换出来的更新数组比实际需要
的大,增加网络传输负担。
3. 我想请教一下批提交时的错误处理方式,由于在这样的环境下,
已经没办法很好的利用Delphi自身批提交的错误处理机制,当然
我可以保证把出错的纪录数组回传到客户端。我想听听大家的意见
我的主要想法是能够让客户端的开发和以前用Delphi的方式基本上没有
太大的改变。各位只要是有过跨语言WebService开发经验的,至少第一
和三的问题应该遇到过。所以想请教一下各位的解决方案。非常感谢!
最后我想说说自己的想法,我觉得大多数时候对WebService的讨论似乎都停留在表面
不知大家为什么不愿更深入的讨论实际开发中需要解决的问题。新技术再好,不能
有效的运用到实际开发中,对自己的技术提高又有什么好处?还是各位专家们有意保留?
(以上的话不针对任何人,请勿对号入座)
在网上查找了很多的资料,却发现深入讲解应用的并不多见。
前些日子,有心做个DB App的Demo,却遇到这样一些尴尬的问题。
如果从前到后全使用Delphi开发,那是没问题,都比较方便,
可我在服务器端采用Java, 客户端采用Delphi(实现的方式主要参照
Delphi自带的例子IssuesSample),将客户端修改和更新的数据转换成
数组对象,通过SOAP传输到服务器端,再由服务器端程序根据每条记录
的更新标记(自定义的)实现数据的更新。以下罗列所遇到的问题:
1. DataSet Records <=> Array of Object 没有方便自动的机制
这或许应该是我们自己来做的事情,可我发现SOAP似乎不支持
多态(当然也可能是我不知道实现的方法),导致无法编写一个
有效的框架,自动完成类似的任务。结果是每个这样的转换
都必须至少写两个相互转换值的函数,工作量大而又无意义。
其实,在.Net中DataSet是可以绑定数组、集合等的自定义
DataSource,不知道在Delphi中如何实现。请大家给点意见。我
觉的这个机制很重要,极大的简化开发工作。
2. 在ClientDataSet中似乎不能很好的跟踪数据的更新状态。
cdsDelta.data:=cdsOrders.Delta;
cdsDalta.First;
while not cdsDelta.Eofdo
begin
if cdsDelta.UpdataStatus = usDelete then
begin
... //do something here
//实际执行中发现这段代码执行不到,搞不懂
end;
... //判断其他更新状态
cdsDelta.Next;
end;
而且,我发现由于ClientDataSet保留一次ApplyUpdates前的所有
操作历史记录,会导致最终转换出来的更新数组比实际需要
的大,增加网络传输负担。
3. 我想请教一下批提交时的错误处理方式,由于在这样的环境下,
已经没办法很好的利用Delphi自身批提交的错误处理机制,当然
我可以保证把出错的纪录数组回传到客户端。我想听听大家的意见
我的主要想法是能够让客户端的开发和以前用Delphi的方式基本上没有
太大的改变。各位只要是有过跨语言WebService开发经验的,至少第一
和三的问题应该遇到过。所以想请教一下各位的解决方案。非常感谢!
最后我想说说自己的想法,我觉得大多数时候对WebService的讨论似乎都停留在表面
不知大家为什么不愿更深入的讨论实际开发中需要解决的问题。新技术再好,不能
有效的运用到实际开发中,对自己的技术提高又有什么好处?还是各位专家们有意保留?
(以上的话不针对任何人,请勿对号入座)