代码之家  ›  专栏  ›  技术社区  ›  RiddlerDev

在.NET中,在程序之间进行通信的最佳方式是什么?为什么?[关闭]

  •  3
  • RiddlerDev  · 技术社区  · 15 年前

    我们的公司一直在争论我们应该使用定制的API DLL还是创建一个Web服务场来让我们的程序在它们之间进行数据通信。对我来说,Web服务在升级的兼容性和灵活性方面是最有意义的,但我也听说了一些使用DLL的好理由。

    是否有对.NET应用程序的新偏好,或者您发现最有效的选择?如果是,为什么?

    谢谢!

    9 回复  |  直到 15 年前
        1
  •  4
  •   Chris W    15 年前

    每种方法都有优点和缺点——如果您总是运行.NET应用程序,那么您可以通过DLL方法获得更好的性能。远程处理也能很好地工作。

    要获得更大的长期灵活性,使您能够在需要时轻松地与其他平台和内部/外部客户机集成,您可以查看为应用程序构建RESTful Web服务API。

    在某些情况下,我曾在一些地方工作过,这些地方通过一些精心设计的存储过程在数据层中进行应用程序内部通信,这些存储过程在该场景中非常有效。

    我一直在考虑最适合手头任务的工具,而不是试图适应任何特定的趋势,但是,如果你做任何可能涉及外部客户交互的事情,我肯定会看看是否有已经发布的通信标准,你可以接受-有很多标准,这是有很多标准的。您可以使用它来帮助您的行业内的互操作性。

        2
  •  9
  •   user154473    15 年前

    我想我会说wcf。原因是多方面的:

    1. 已测试/受信任的代码库。为什么要重新制作轮子?
    2. 功能。你能做的任何事情都可以做得更好。WCF可以做任何比你更好的事情。不过,说真的,你可以用证书、窗口或任何你想要的东西来做安全的消息传递。您可以使绑定基于XML或二进制。您可以使用寻址使应用程序层冗余。你对WCF真的无能为力。
    3. 少编码!!!!少花钱!!
    4. 支持。网上有很多关于WCF的书籍和知识。

    在过去,远程处理是一个大爆炸,因为Web服务不能真正做像安全等事情,而不必知道WS-*,这是令人望而生畏的。现在不适用于WCF。是的,它有一个学习曲线,但你会学到一些可以转移到其他微软商店的东西。

    只要确保你读了正确的方式做WCF。例如,将所有的消息传递内容分离到它自己的独立dll中。

        3
  •  5
  •   Joseph    15 年前

    DLL或程序集本身不能解决程序之间的通信问题。但是,在过去构建程序集时,我所做的就是使用一个共享内存空间,自定义dll使用它来访问跨应用程序的共享对象。我已经为具有附带的Outlook外接程序的应用程序完成了这项工作,并且非常成功。

    这种方法的优点在于它比使用Web服务路由更快。

    但是,我认为这可以归结为您的情况,因为我可以看到在不同的情况下使用多个场地。

    共享内存/web服务/remoting/wcf,仅举几个例子。

        4
  •  4
  •   Tangurena    15 年前

    我们使用混合的东西,主要取决于它们被部署到哪里,谁是“客户”,谁是“威胁”。我们主要使用WebServices来处理桌面应用程序接触到的东西,但是对于需要相互对话的基于服务器的应用程序的部分,我们使用远程处理(因为它不会经过负载均衡器,而WebService对每个人都是可见的)。

        5
  •  3
  •   Jay    15 年前

    所有.NET/MS商店通常都会处理与Web服务的通信,因为Microsoft使这相对容易。

    我在实践中发现的唯一问题是,由于传递消息的大小限制,我们曾经发生过生产故障。它默认为兆字节,并且一个非常大的序列化对象无法容纳在该空间中。它对文本使用序列化而不是二进制。

    在我们的设置中,它都是SOA架构的内部组件,我们不必担心威胁。

        6
  •  3
  •   Adrian Anttila    15 年前

    正如大多数其他海报所指出的,如果没有更多的细节,很难提供建议。

    如果您的需求允许异步消息传递,那么您可能需要考虑使用 System.Messaging Message Queue 作为第三种选择。

        7
  •  2
  •   Mitch    15 年前

    对于我们的应用,我们选择了一个组合。我们使用Web服务通过Internet来实现负载平衡和第三方开发,但使用tcpchannel远程处理来实现服务器之间的快速通信。这取决于问题。

        8
  •  2
  •   Two Bit Gangster    15 年前

    如果进程是一台单独的机器,那么您的选择主要是Web服务/wcf、.net远程处理或直接TCP/IP连接。如果进程在同一台机器上,那么您有这些选择以及更多选择,包括共享内存和文件系统。如果您不需要与任何其他技术进行互操作,.NET远程处理值得仔细研究——它不需要codegen来完成它的工作,因此更简单,性能也不错。

        9
  •  2
  •   Wyatt Barnett    15 年前

    WCF确实是实现这一点的方法——编写服务,让配置决定传输介质。

    在选择传输媒介方面,很多都与您的网络架构和需求有关。HTTP对于远程的东西和通过防火墙是很好的,但是它的效率非常低,而TCP可以很快但不可靠。