2012-10-04 86 views
1

我目前正在开发Windows服务项目。我添加了对我的项目外部的类库的引用,因为我需要使用该dll的函数。Windows服务与Windows窗体应用程序VB.NET

但是,我需要的类库函数是会话值,但我不能使用这些Web方法,因为我的只是Windows。我只能想到解决这个问题的两种方法。

1)从外部类库中重载我需要的函数,并用输入参数替换会话值。 这肯定是一个耗时的过程,因为我有很多这个函数所指的会话值。

2)我可以改为创建一个Windows窗体应用程序。将Web浏览器控件添加到表单。配置URL以获得外部项目中所需的所有输入参数。添加一个调度程序作为后台进程运行。 在ASP.NET中我需要参考的外部项目中,我可以添加一个新的页面,它从我的Windows窗体应用程序获取URL ..解析查询字符串以获取输入值并传递给所需的函数。

你能否提出建议,如果有更好的方法。谢谢 !

+0

Windows ** Web服务**和Windows **服务**之间存在差异。更正了标题和标签,因为你的问题是关于第一个而不是后者。 –

+0

我对你为什么不能使用会话值有点困惑 - 你说你正在开发Windows Web服务项目。会不会有访问会话? – Tim

+0

我认为Ken将它改为web,但我的意思是说我正在开发Windows Service应用程序而不是web。 – user1681514

回答

0

我推荐选项1.选项2看起来像是一个等待发生的巨大噩梦,而选项1看起来像是一个简单的(尽管很费力)的代码更改。

您可以通过在Visual Studio或您最喜爱的文本编辑器中进行正则表达式搜索/替换来减少选项1的痛苦。我使用这种技术来随时进行繁琐的大规模代码更改,一旦您习惯了它,它的效率非常高。

但是,长期解决方案必须是更改库代码。编写依赖于全局状态的可重用库代码始终是灾难的秘诀。

0

选项一似乎是最好的。这是最干净的,并允许你保持对你的项目的控制。我认为,当你开始这样做时,你会注意到可以利用的模式,以便现在看起来总的工作量没有那么多。

快捷方式很少短。

+0

感谢迈克的投入,但我已经尝试过了。我提到的函数大约是400 LOC,它有很多对类库中其他函数的引用,并且所有这些函数都有会话值。如果我没有时间限制的话,我会很乐意把它们清理干净。遗憾的是,我现在还不能。 – user1681514

相关问题