.net应用程序架构

时间:2009-08-13 18:23:50

标签: .net design-patterns architecture

我目前正在尝试设计一个应用程序,但我无法确定要使用的架构。

这将是一个.net应用程序,本质上该应用程序将拥有一个运行某个特定软件的服务器,该应用程序将与之交互。在此服务器上,需要运行一个实际与该应用程序交互的供应服务,队列请求等。然后将有一个Web前端,它提供用户界面并与服务进行通信,然后与软件进行通信,希望那讲得通。这意味着Web界面可以安装在与实际软件不同的机器上。

所以我想要建立的是:

  1. 在运行应用程序的服务器,在IIS中运行的Web服务或Windows服务中使用的最佳方法是什么。
  2. 如果配置服务是Windows服务,那么asp.net Web应用程序与之通信的最佳方式是什么。
  3. 是否有任何模式或架构可以处理此类设置。

4 个答案:

答案 0 :(得分:4)

一些想法/答案:

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

答案 1 :(得分:1)

对于您的配置服务,我将使用通过WCF公开服务接口(API)的Windows服务。然后,您可以轻松扩展它以提供Web服务(SOAP)API甚至REST API。至于Web应用程序如何进行通信,这实际上取决于您如何公开通信层(WCF,SOAP,REST)以及您最喜欢使用的方式。我会说,如果你控制通信的两面,WCF是最容易使用的,听起来就像你一样。

我不确定您正在寻找什么样的模式。这是一个相当标准的n层设计模式。没有很多工具(我至少知道)可以帮助您创建实际的实现。

答案 2 :(得分:1)

对于初学者来说,您似乎想要查看 Windows Communication Foundation ,因为您将拥有与服务和/或应用程序交互的网站。

  

Windows Communication Foundation是.NET Framework的一部分,它提供了一个统一的编程模型,用于快速构建面向服务的应用程序,这些应用程序可以在Web和企业之间进行通信。

答案 3 :(得分:1)

执行某些工作的Windows服务可以安装在不同的计算机上,也可以安装在同一台计算机上。

您可以使用mq(如MSMQ)将消息从Web应用程序发送到服务。该服务将订阅MQ并正在侦听消息。这种方式有很多好处(保证交付),但你必须设置它。

或者您可以让服务定期在webservices上调查Web应用程序,当它看到Web应用程序上可用的工作时,获取它,然后更新Web应用程序以了解工作进展情况。

但是,对于Web应用程序进行推送式通信,您可以使用System.Net.Sockets或WCF(将服务器放入Web应用程序中的服务和客户端),但这需要正确的防火墙配置以允许您想要的端口说是允许的。