如何在控制台应用程序和网站之间共享自定义类

时间:2014-09-17 17:47:55

标签: asp.net web-services console-application

我目前有一个可视化的基本控制台应用程序,它每晚在服务器上运行,并且有几个类。每个类都有很多属性以及执行各种任务的相当多的过程和函数。

我有一个付款人类,处理与付款人打交道的信息和功能,一个收件人类处理与收件人打交道的信息和功能,我有一个付款类,其中包含有关付款的信息。其中两个支付类属性是付款人类型和收件人类型。我的部分应用程序会从所有这些信息中创建一个PDF并将其传真给收件人。

现在我还有一个asp.net网站,显示所有这些付款人,收件人和付款的信息。目前它不访问控制台应用程序具有的任何内容。它只是从数据库中获取信息并将其显示在各种列表视图和事物中。

客户端现在要求在网站上有一个按钮,允许他们重新创建控制台应用程序当前生成的pdf。这涉及很多代码,我需要一种不复制它的方法。

我的想法是创建一个处理创建pdf的web服务,应用程序和网站都可以调用它。但是,Web服务需要访问当前存在于我的控制台应用程序中的这些自定义类。

对于我的webservice和控制台应用程序来说,访问这些类的最佳方法是什么。那么可以将付款类型的自定义对象作为参数传递给Web服务吗?

1 个答案:

答案 0 :(得分:1)

使用类库

我有类似的情况,我必须在项目之间共享一些类和函数。我所做的是创建一个类库并将这些类放在那里。此外,当我创建库时,我遇到了一些名称空间问题,所以我在那部分做了一些重写。

所以,基本上我的解决方案在两个项目中分开了

  1. 核心库(类库)
  2. 网站(ASP.NET网络应用程序)
  3. 在核心库中,我有关于数据访问层的所有代码,我的应用程序的所有实体类以及一堆辅助类,工具等,而在网站中我没有留下太多代码,除了涉及的代码页面和用户控件。

    使用这种方法,您将获得一个额外的.dll文件,其中包含控制台应用程序,Web服务和Web应用程序将共享的共享类。

    请记住,您需要记住一些事项,例如每个应用程序可能将其存储在不同位置的连接字符串。此外,您无法在库中使用RequestResponseServer等命名空间,因为在桌面应用程序中它将为null。

    使用关联文件

    在项目之间共享代码的另一种方法是将代码文件放在一个项目中,并将这些文件链接到另一个项目。

    右键点击您的项目,然后选择Add - > Existing item,然后点击添加按钮旁边的向下箭头,然后选择Add as link

    最后这个thread是关于这个主题的,所以它可能有用。