【问题标题】:How to share custom classes between a console application and a website如何在控制台应用程序和网站之间共享自定义类
【发布时间】:2014-09-17 17:47:55
【问题描述】:

我目前有一个每晚在服务器上运行的 Visual Basic 控制台应用程序,它有几个类。每个类都有很多属性以及很多执行各种任务的过程和函数。

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

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

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

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

对于我的 Web 服务和控制台应用程序访问这些类的最佳方式是什么。那么是否可以将支付类型的自定义对象作为参数传递给网络服务?

【问题讨论】:

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


【解决方案1】:

使用类库

我也遇到过类似的情况,我不得不在项目之间共享一些类和函数。我所做的是创建一个类库并将这些类放在那里。此外,当我创建库时,我遇到了命名空间的一些问题,所以我需要在这部分进行一些重写。

所以,基本上我的解决方案分为两个项目

  1. 核心库(类库)
  2. 网站(ASP.NET Web 应用程序)

在核心库中,我有关于数据访问层的所有代码、我的应用程序的所有实体类以及一堆帮助类、工具等,而在网站中,我没有留下太多代码,除了页面和用户控件。

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

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

使用链接文件

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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-10-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-08-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多