.NET 应用程序架构

3

我目前在尝试设计一个应用程序,并且我正在为它选择架构时遇到了一些问题。

这将是一个.NET应用程序,基本上这个应用程序将有一个服务器运行一些特定的软件,该应用程序将与之交互。在这个服务器上需要运行一个提供服务的服务,该服务实际上将与该应用程序交互,排队请求等。然后将有一个Web前端,它提供用户界面并与服务通信,然后服务再与软件通信,希望这样说能让你明白。这将意味着Web界面可以安装在与实际软件不同的机器上。

所以我想要确定的是:

  1. 在运行应用程序的服务器上使用什么最好,IIS中运行的Web服务还是Windows服务。
  2. 如果提供服务是一个Windows服务,ASP.NET Web应用程序与其通信的最佳方式是什么。
  3. 是否有任何处理这种设置的模式或架构。
4个回答

4

一些思考/答案:

  1. 如果您使用WCF,可以随意切换从IIS或Windows服务进行托管。(只需将主要代码放入dll中,然后编写一个非常小的包装器服务或Web项目。)
  2. 肯定是WCF。它为您提供各种选项,如TCP、HTTP/Web服务、IPC、点对点等。唯一的问题是选择您想要的选项,然后编辑配置文件。
  3. 看起来我正在推荐WCF,所以我想这也是这个问题的答案。

看起来WCF确实是我需要的,最好先了解一下! - Sam Cogan

1
对于您的配置服务,我建议使用一个通过WCF公开服务接口(API)的Windows服务。然后,您可以轻松扩展该服务以提供Web服务(SOAP)API甚至REST API。至于Web应用程序如何通信,这取决于您如何公开通信层(WCF、SOAP、REST)以及您最熟悉使用什么。如果您控制通信的双方,我会说WCF是最容易使用的。
我不确定您正在寻找哪种模式。这是一种相当标准的n层设计模式。没有太多工具(至少我所知道的)可以帮助您创建实际的实现。

1

首先,看起来你想要了解的是Windows Communication Foundation,因为你将会有网站与服务和/或应用程序进行交互。

Windows Communication Foundation是.NET Framework的一部分,它提供了一个统一的编程模型,快速构建跨网络和企业通信的面向服务的应用程序。


1

一个在Windows上运行的服务可以被安装在不同的机器上,也可以和IIS一起安装在同一台机器上。

你可以使用消息队列(如MSMQ)从Web应用程序向服务发送消息。服务将订阅MQ并监听消息。这种方式有很多好处(保证交付),但需要进行设置。

或者你可以让服务定期轮询Web服务,当它看到Web应用程序上有可用的工作时,获取它并随时更新Web应用程序的工作状态。

然而,如果Web应用程序需要进行推送式通信,你可以使用System.Net.Sockets或WCF(将服务器放在服务中,客户端放在Web应用程序中),但这需要正确的防火墙配置来允许你想要通信的端口。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接