我正在使用这个由其他人构建的小型Web应用程序(1页),该应用程序在按下网页上的按钮后执行特定任务。
现在需求略有变化,我们需要将其自动化,每周运行一次,而无需用户交互。
最好的方法是什么,最大限度地减少对代码所做的更改?
我正在考虑向项目中添加一个控制台应用程序,然后在内部引用Web应用程序,但这似乎不起作用。
或者可能将网络应用程序转换为控制台应用程序(如果可以的话)?
有没有直截了当的方法呢?
由于
答案 0 :(得分:1)
首先,确保从Web应用程序中分离出“特定任务”,使其驻留在自己的.NET项目中。即使这个项目只包含一个类,你就会在基于Web的UI和任务本身之间“分离关注点”。
然后,您可以创建另一个“包装器项目”来根据需要调用此新项目。控制台应用程序可能会完成这项工作 - 您可以使用计划任务运行它 - 或者您可能更喜欢使用Windows服务。
答案 1 :(得分:0)
这实际上取决于现有代码的结构。一种常见的方法是将业务逻辑与表示层分开。在VS中,通常通过创建类库项目并将所有业务逻辑保留在那里来完成。然后,Web应用程序项目将实例化业务逻辑类并运行其方法。
如果这样做,您只需要引用类库项目。另一方面,如果您拥有Web应用程序项目中的所有逻辑,可能没有快速的方法,因为您不应该手动实例化Page类(嗯,您也可以这样做,但是是笨拙的,不推荐)。 因此,在这种情况下,您应该创建一个类库项目,并在控制台应用程序中移动您需要使用的所有逻辑。我想这需要相当多的重构。