【2个大难题】server端 和 client端!

myhuenzhao 2009-04-02 02:56:07
问题1:server端------------------------------------------------------------------------------------------------------------------

用ATL写了一个名称为WS的COM组件,服务器端想实现:
--当用户请求的WS COM的时候,如果有就返回WS COM对象ws,没有的话就创建一个ws对象,总之服务器端只保持一个ws对象;

注:因为COM组件本身是一个整体,所以没法实现单例模式,但是我通过新建一个getCOM类,把WS com组件对象ws当成这个类的一个变量,只要保持类getCOM只有一个对象getcom,

就能保持只有一个ws变量。但是实际应用好像不行,不知道怎么解决???

具体代码如下:
<?php	
class getCom //采用单例模式来说创建WS分词COM组件对象
{
private static $getcom; //定义一个静态的getCom的对象变量
public static $ws; //定义一个静态的WS分词COM的对象变量

private function __construct() //构造函数,通过getCom的构造函数,新建一个WS COM对象ws
{
self::$ws = new COM("WS.com") or die("不能链接到WS组件!");
}

public static function getComInstance() //静态方法,保证只有一个getCom的对象getcom
{
if(self::$getcom == null)
{
self::$getcom = new getCom();
}
return self::$getcom;
}

public function getWS() //返回WS COM对象变量ws
{
return self::$ws;
}
}
?>


问题2:client端-------------------------------------------------------------------------------------------------------------------

假设WS COM组件有一个add()方法,用户可以调用这个方法进行一些操作,用户端怎么能够实现:
--用户请求获得ws对象后,使用add()方法一次后,继续使用add()方法时,不必:再一次向服务器请求ws对象,而是使用本地第一次请求获得的ws对象。
是把WS COM对象ws保存到Cookie里面么?好像com组件对象没法保存啊

高手给个解决办法吧



...全文
193 16 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
myhuenzhao 2009-04-06
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 hzcenter 的回复:]
不大清楚你想要做的是什么,你可以简单的描述一下你想要做什么实现什么!

按照我的理解,你现在得问题就是服务端的com连接不上或者是不能使用com的方法?

客户端是aX?
既然是php调用com组件,我觉得这个com服务段应该是客户端。由他处理事情,然后返回到php中

比如说,php调用office的com组件处理xls或者doc文件。又或者想通过ie的aX连接到服务器上实时处理数据?
[/Quote]

---------
1、我的COM组件运行在服务器上,我的目的就是希望能在server端始终只保持1个COM组件的对象,而不是每一个用户请求COM组件时,就为每一个用户新创建一个COM组件对象,就是这样的

2、客户端
我还不清楚PHP调用COM组件的机制:如果用户的请求就在服务器端的COM组件对象完成任务的话,那么client端的问题就不存在了,
如果用户的请求时返回一个COM组件对象,由返回的COM组件对象在用户端进行处理的话,那么问题就存在了

3、我的客户端的PHP代码为:帖子里面的getCom代码文件为getCom.php

              <?php

include("getCom.php"); //包含getCom类文件
$com = getCom::getComInstance(); //获得类getCom的一个对象
$ws = $com->getWS(); //获得getcom对象的ws分词com组件对象变量
$type = $_POST['radioButton']; //获得radio的对象值
$inputStr = $_POST['inputString']; //获得文本域的输入值
$pathCur = getcwd(); //获取文件路径
$pathDir= "\\WS\\";
$path = $pathCur.$pathDir;
$ws->SetPath($path); //设置路径
$ws->InitWS(); //WS进行初始化
$outputStr = $ws->Segment($type,$inputStr); //调用分词函数
echo $outputStr; //显示分词结果

?>
myhuenzhao 2009-04-06
  • 打赏
  • 举报
回复
[Quote=引用 12 楼 fxs_2008 的回复:]
没做过
估计是这样的

首先com只存在服务器端,
一、如果你要调用时,可以用PHP去直接调用com,客户端是没有com的
如果用PHP调用com,存在一传递参数和返回值的问题

二、如果com和PHP不存在同一服务器,可以用web service处理

三、客户端就是IE,如果给写客户端程序,可以写,客户端一般是单独的程序,可以通过IE和服务器通信,也可以单独和服务器通信
[/Quote]

1、我调用和使用COM组件的时候没问题,就是想在服务器端保留一个COM组件对象,不是每个用户请求时都新建一个COM组件对象,

2、我不熟悉PHP的运行机制,我每次在PHP中请求COM对象执行一些任务的时候,
COM对象是在服务器端处理完后返回给浏览器端的用户,还是用户的请求返回一个COM对象给浏览器端进行执行???

3、如果对于用户的请求都是在服务器端进行的,只是把执行结果返回给用户的话,那我所说的client客户端的问题就不存在了,只是服务器端的问题了

renqiang_888 2009-04-06
  • 打赏
  • 举报
回复
软的东西我从来没接触过,
myhuenzhao 2009-04-06
  • 打赏
  • 举报
回复
就是让COM组件存在于服务器端,通过PHP进行调用,

用户在浏览器中使用COM的一些方法,这些调用之类的事情都没问题,

我的问题是:如何在服务器端保留1个COM组件对象,而不是每一个用户请求时都新建一个COM组件对象


[Quote=引用 10 楼 hzcenter 的回复:]
引用楼主 myhuenzhao 的帖子:
问题1:server端------------------------------------------------------------------------------------------------------------------

用ATL写了一个名称为WS的COM组件,服务器端想实现:
--当用户请求的WS COM的时候,如果有就返回WS COM对象ws,没有的话就创建一个ws对象,总之服务器端只保持一个ws对象;

注:因为COM组件本身是一个整体,所以没法实现单例模式,但是我通过新建一…
[/Quote]
lonelyriver 2009-04-06
  • 打赏
  • 举报
回复
……
fxs_2008 2009-04-06
  • 打赏
  • 举报
回复
没做过
估计是这样的

首先com只存在服务器端,
一、如果你要调用时,可以用PHP去直接调用com,客户端是没有com的

如果用PHP调用com,存在一传递参数和返回值的问题

二、如果com和PHP不存在同一服务器,可以用web service处理



三、客户端就是IE,如果给写客户端程序,可以写,客户端一般是单独的程序,可以通过IE和服务器通信,也可以单独和服务器通信

hzcenter 2009-04-04
  • 打赏
  • 举报
回复
[Quote=引用楼主 myhuenzhao 的帖子:]
问题1:server端------------------------------------------------------------------------------------------------------------------

用ATL写了一个名称为WS的COM组件,服务器端想实现:
--当用户请求的WS COM的时候,如果有就返回WS COM对象ws,没有的话就创建一个ws对象,总之服务器端只保持一个ws对象;

注:因为COM组件本身是一个整体,所以没法实现单例模式,但是我通过新建一个getCOM类,把WS com组件对象w…
[/Quote]

不大清楚你想要做的是什么,你可以简单的描述一下你想要做什么实现什么!

按照我的理解,你现在得问题就是服务端的com连接不上或者是不能使用com的方法?

客户端是aX?
既然是php调用com组件,我觉得这个com服务段应该是客户端。由他处理事情,然后返回到php中

比如说,php调用office的com组件处理xls或者doc文件。又或者想通过ie的aX连接到服务器上实时处理数据?
应该网 2009-04-03
  • 打赏
  • 举报
回复
问题2:client端

应该只能每次向服务器请求ws对象了
Zijian_Zhang 2009-04-03
  • 打赏
  • 举报
回复
呵呵,微软的东西我从来没接触过,就是老师逼着学,否则计算机初中毕业的成绩就差了,哈哈,但其实也很容易。

COM组件这些东西我根本没有用过,学习了。
ten789 2009-04-03
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 froole 的回复:]
引用 3 楼 jakey9826 的回复:

没有相关的经验估你参考.
不好意思!


大多数熟悉php得人都对微软的东西比较迟钝。

如果说到web service、HTTP协议之类很多人都动,
WS COM什么的恐怕连听说都没有过。
[/Quote]

这几句话到正题了 因为你不懂HTTP所以才会问出这样的问题

COM+ 好吧 企业开发经常用到东西 尤其是VBA 就当做是一些类看不见源码但可以用好了
syu 2009-04-02
  • 打赏
  • 举报
回复
用com_invoke()调用com对象的相应方法.
程序猿之殇 2009-04-02
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 froole 的回复:]
引用 3 楼 jakey9826 的回复:
没有相关的经验估你参考.
不好意思!


大多数熟悉php得人都对微软的东西比较迟钝。

如果说到web service、HTTP协议之类很多人都动,
WS COM什么的恐怕连听说都没有过。
[/Quote]
主要还是懒!
呵呵.
公司决定你的技术的侧重点,与公司无关的东西,很少去涉猎。
所以多跳跳槽还是挺好的.
海诗美妆 2009-04-02
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 jakey9826 的回复:]
没有相关的经验估你参考.
不好意思!
[/Quote]

大多数熟悉php得人都对微软的东西比较迟钝。

如果说到web service、HTTP协议之类很多人都动,
WS COM什么的恐怕连听说都没有过。
程序猿之殇 2009-04-02
  • 打赏
  • 举报
回复
没有相关的经验估你参考.
不好意思!
myhuenzhao 2009-04-02
  • 打赏
  • 举报
回复
大写WS是COM组件名称,里面有一个Add()方法,小写ws为WS COM组件的对象
海诗美妆 2009-04-02
  • 打赏
  • 举报
回复
ws是什么啊?老大

21,893

社区成员

发帖
与我相关
我的任务
社区描述
从PHP安装配置,PHP入门,PHP基础到PHP应用
社区管理员
  • 基础编程社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧