2011-10-06 208 views
3

我正在使用此小型网络应用程序(1页),由其他人在网页上按下按钮后执行特定任务而构建。Web应用程序到控制台应用程序?

现在需求发生了轻微的变化,我们需要自动执行此操作,无需用户交互即可每周运行一次。

这样做的最好方法是什么?最小化对代码所做的更改?

我正在考虑添加一个控制台应用程序,然后引用内部的web应用程序,但似乎并没有工作。

或者,也许将Web应用程序转换为控制台应用程序,如果这实际上是可能的?

有没有这样做的直接方式?

感谢

回答

0

这实际上取决于现有代码的结构。一种常见的方法是将业务逻辑与表示层分开。在VS中,通常通过创建一个类库项目并保持所有的业务逻辑来完成。然后,Web应用程序项目就会实例化业务逻辑类并运行其方法。

如果这样做,你只需要引用类库项目。另一方面,如果您拥有Web应用程序项目中的所有逻辑,可能没有办法做到这一点,因为您不应该手动实例化Page类(也可以这样做,但是,是笨拙的,不推荐)。 因此,在这种情况下,您应该创建一个类库项目,并在那里移动您需要在控制台应用程序中使用的所有逻辑。我会想象这将需要相当多的重构。

+0

是的,这就是我在想什么,并试图避免,但它看起来没有其他方式。 myabe将其转换为Web服务并从控制台应用程序调用它? – user441365

+0

Web服务听起来像是一种矫枉过正。而且我认为你至少需要做相同数量的更改才能完成工作。最好试着用正确的方式与班级图书馆一起做。 –

1

首先,确保“特殊任务”从Web应用程序,以便它驻留在自己的.NET项目进行细分。即使这个项目只包含一个类,你仍然在基于Web的UI和任务本身之间“分离关注”。

然后,您可以创建另一个“包装项目”,根据需要调用此新项目。控制台应用程序可以完成这项工作 - 您可以使用计划任务运行该工具 - 或者您可能更喜欢使用Windows服务。

相关问题