Web Services的几个问题(200分)

  • 主题发起人 主题发起人 LeeChange
  • 开始时间 开始时间
L

LeeChange

Unregistered / Unconfirmed
GUEST, unregistred user!
1.关于会话的管理:
Delphi 6做的Web Services中对数据的访问是全局的还是每个请求有一个独立的Session.
刚开始用时试了一下,好象是全局的.装了Pack 2后,在Soap Server Interface向导中有了
Service Activation Model选项:可选Global和Per Request,但好象无论选什么的结果都一样,
有独立的Session.而且产生的代码和WSDL也一摸一样.
不知哪位高人可以指点一二,Soap中怎样控制Session.难道只有自己做Pooling?
2.未装Pack前编写的Web Services在装了Pack 2后用Import生成接口访问总出错
 
转:
>通过Delphi 6 (Update 2)的New SOAP Server Application向导可以建立一个Web Service
应用,接下来生成New Invokable Interface的向导中可以选择Service Activition Model,
有Per Request/Global两种。可是……我建立了ISAPI类型的Web Service Application,
没有发现两者在产生的源代码上有何不同,李老师能不能解释一下。
嗯, 應該是這個精靈的問題, C++Builder 6就會產生相對應的程式碼. 在C++Builder 6中
Global的啟動模式使用了static variable, Per Request啟動模式則是每次建立服務物件.
>另外其dpr代码中的CoInitFlags := COINIT_MULTITHREADED;在ISAPI类型中似乎是多余的
吧。
這可說來話長. Delphi 6的CoInitFlags := COINIT_MULTITHREADED並不一定是多餘的,
因為Delphi 6的ISAPI支援多執行緒pool, 你可在ISAPIThreadPool程式單元中看到.
由於Delphi 6的ISAPI程式是由不同的Thread執行, 因此Borland為了效率的原因,
先把Delphi 6預設使用的COM Threading Model設定為Multi-Threading, 讓ISAPI程式使
用MTA, 以搭配Delphi 6的ISAPI Thread Pool. 如果你沒有在ISAPI的Web Service程式
中使用任何COM物件, 那麼就是多餘的, 但是如果使用了COM物件, 那麼這些COM物件便會
進入MTA. 不過這有一點危險, 因為MTA的COM物件不好寫, 所以在我的書中有建議讀者自
己進入STA, 為每一個Thread進入獨立的STA, 就可避免需要寫同步處理機制的程式碼了.
李維
 
请问上文的出处.
 
caidaoli:您老到是记得换行呀!
不过挺精彩的,呵呵
 
还请大家踊跃发言
建议新开Web Services版,也好让诸如此类的问题有个合适的归属。
 
看看李维的解释吧。
 
就是,现在Web Services有点热的
 
接受答案了.
 
DELPHI 中 WEB SERVICE 的 CLIENT 怎么使用 SESSION ?
 
建议新开Web Services版,新手上路努力学习ing
 
后退
顶部