一个超难问题,望大侠们进来看一看.

时间:2021-07-11 04:46:34
自做了一个事务管理的组件,目的是接收winform 程序 和webform程序的调用.
组件里面的对象是用全局变量保存的.

但现在webform中调用了一次组件.但在winform中却不能发现该组件的对象.
同样在winform中调用了该组件,webform中也不能发现该组件的对象.

还有一个超难的问题,如何实现webservice接收一个System.Data.DataTable 对象.
或接受一个xml文件.请大家给一个思路.

25 个解决方案

#1


System.Data.DataTable 对象
http://www.csdn.net/Develop/Read_Article.asp?Id=22416

#2


接受一个xml文件,可以用这样的方法
public XmlDocument ReXmlDoc(XmlElement sXmlE)
{
 
}

#3


to CMIC:
  我说的是如何接收一个System.Data.DataTable

#4


System.Data.DataTable 本来就是可序列化传输的,做为参数传入不就行了吗.

#5


同意楼上

#6


Samen168(Samen) 请问,如何将System.Data.DataTable 序列化传输,请问什么叫做序列化?

#7


System.Data.DataTable做为参数时会自动处理序列化的
看看帮助就知道了。

#8


序列化是将对象状态转换为可保持或传输的格式的过程

#9


谢谢楼上的解答.但在webservice 中 用DataTable 作为参数就会报错.

#10


自做了一个事务管理的组件,目的是接收winform 程序 和webform程序的调用.
组件里面的对象是用全局变量保存的.

但现在webform中调用了一次组件.但在winform中却不能发现该组件的对象.
同样在winform中调用了该组件,webform中也不能发现该组件的对象.

请问大侠们这个问题怎么解决呀?

#11


http://www.csdn.net/Develop/Read_Article.asp?Id=22416

#12


关于"如何实现webservice接收一个System.Data.DataTable 对象"的问题我已搞清楚,System.Data.DataTable 不能进行序列化.如果要想接收一个DataTable可以先将DataTable
加入一个dataset中,然后用dataset 的对象作为参数传给webservice.
现在就是第一个问未解,希望大家继续发言.

#13


up

#14


up

#15


自已再up

#16


sign.

#17


产生问题的原因:
进程内组件无法共享全局变量。
组件dll是“进程内”的,就是说每个dll的生命周期是和调用进程在一起的,如web项目或windows项目。也就是说即使不同项目调用同一个dll也不在同一个进程内,更无法保存全局变量。

可能导致的其他问题:


解决方案:
编写一个Windows服务来代替你的组件dll。因为Windows服务有独立的进程,可以保存所有调用者传递的数据。

自己解决可尝试的步骤:
1、新建一个Windows Service项目
2、在项目中编写记录事务的代码
3、让你的Windows项目或Web项目访问它

需要进一步学习和了解的内容:
Windows Service的编写方法,请参见MSDN,关键字“服务”

#18


谢谢,告诫.

#19


请继续发言

#20


to  Ninputer(装配脑袋) ;
 请问我不用windows service 而用 web service做行不行呢?

#21


也可以,但是web Service通常是无状态的。响应速度也比较慢

#22


该回复于2014-01-11 00:27:49被版主删除

#23


to  Ninputer(装配脑袋) ;
   通常所指的web Service通常是无状态的是不是指在客户端调用时无状态,还是指在客户端各服务器端都无状态?

#24


你直接在WEB SERVICE里面写一个方法
public void GetDataTable(DataTable dt)
{
  . . ....
   然后处理``这样就可以得到外面传来得DATATABLE拉
}

#25


服务端。因为Web Service的对象在请求时创建,请求完了就销毁了。所以没法保存状态。

#1


System.Data.DataTable 对象
http://www.csdn.net/Develop/Read_Article.asp?Id=22416

#2


接受一个xml文件,可以用这样的方法
public XmlDocument ReXmlDoc(XmlElement sXmlE)
{
 
}

#3


to CMIC:
  我说的是如何接收一个System.Data.DataTable

#4


System.Data.DataTable 本来就是可序列化传输的,做为参数传入不就行了吗.

#5


同意楼上

#6


Samen168(Samen) 请问,如何将System.Data.DataTable 序列化传输,请问什么叫做序列化?

#7


System.Data.DataTable做为参数时会自动处理序列化的
看看帮助就知道了。

#8


序列化是将对象状态转换为可保持或传输的格式的过程

#9


谢谢楼上的解答.但在webservice 中 用DataTable 作为参数就会报错.

#10


自做了一个事务管理的组件,目的是接收winform 程序 和webform程序的调用.
组件里面的对象是用全局变量保存的.

但现在webform中调用了一次组件.但在winform中却不能发现该组件的对象.
同样在winform中调用了该组件,webform中也不能发现该组件的对象.

请问大侠们这个问题怎么解决呀?

#11


http://www.csdn.net/Develop/Read_Article.asp?Id=22416

#12


关于"如何实现webservice接收一个System.Data.DataTable 对象"的问题我已搞清楚,System.Data.DataTable 不能进行序列化.如果要想接收一个DataTable可以先将DataTable
加入一个dataset中,然后用dataset 的对象作为参数传给webservice.
现在就是第一个问未解,希望大家继续发言.

#13


up

#14


up

#15


自已再up

#16


sign.

#17


产生问题的原因:
进程内组件无法共享全局变量。
组件dll是“进程内”的,就是说每个dll的生命周期是和调用进程在一起的,如web项目或windows项目。也就是说即使不同项目调用同一个dll也不在同一个进程内,更无法保存全局变量。

可能导致的其他问题:


解决方案:
编写一个Windows服务来代替你的组件dll。因为Windows服务有独立的进程,可以保存所有调用者传递的数据。

自己解决可尝试的步骤:
1、新建一个Windows Service项目
2、在项目中编写记录事务的代码
3、让你的Windows项目或Web项目访问它

需要进一步学习和了解的内容:
Windows Service的编写方法,请参见MSDN,关键字“服务”

#18


谢谢,告诫.

#19


请继续发言

#20


to  Ninputer(装配脑袋) ;
 请问我不用windows service 而用 web service做行不行呢?

#21


也可以,但是web Service通常是无状态的。响应速度也比较慢

#22


该回复于2014-01-11 00:27:49被版主删除

#23


to  Ninputer(装配脑袋) ;
   通常所指的web Service通常是无状态的是不是指在客户端调用时无状态,还是指在客户端各服务器端都无状态?

#24


你直接在WEB SERVICE里面写一个方法
public void GetDataTable(DataTable dt)
{
  . . ....
   然后处理``这样就可以得到外面传来得DATATABLE拉
}

#25


服务端。因为Web Service的对象在请求时创建,请求完了就销毁了。所以没法保存状态。