【问题标题】:Windows Service Vs Windows Form Application VB.NETWindows 服务与 Windows 窗体应用程序 VB.NET
【发布时间】:2012-10-04 02:16:57
【问题描述】:

我目前正在从事一个 Windows 服务项目。我添加了对项目外部类库的引用,因为我需要使用该 dll 中的函数。

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

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

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

您能否建议是否有更好的方法。谢谢 !

【问题讨论】:

  • Windows 网络服务和Windows 服务之间是有区别的。更正了标题和标签,因为您的问题是关于第一个而不是后者。
  • 我有点困惑为什么你不能使用 Session 值 - 你说你正在处理一个 Windows Web 服务项目。那不就可以访问Session了吗?
  • 我认为 Ken 将其更改为 web 但我的意思是说我正在处理 Windows Service 应用程序而不是 web 。

标签: .net vb.net winforms web-services web-applications


【解决方案1】:

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

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

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

【讨论】:

    【解决方案2】:

    选项一似乎是最好的。这是最整洁的,让您可以控制您的项目。我想当你开始这样做时,你会注意到你可以利用的模式,这样总的工作就不像现在看起来那么多了。

    快捷方式很少很短。

    【讨论】:

    • 感谢 Mike 您的意见,但我已经尝试过了。我所指的函数大约是 400 LOC,它对类库中的其他函数有很多引用,并且所有这些函数都有会话值。如果我没有时间限制,我会很乐意清理所有这些。不幸的是,我现在不能。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-09-20
    • 1970-01-01
    相关资源
    最近更新 更多