在同一个项目中使用 webservice 还是用代码处理它?
use webservice in same project or handle it with code?
这是一道理论题。
想象一个 aspnet 网站。通过点击按钮网站发送 mail.now:
- 我可以用代码异步发送邮件
- 我可以使用 QueueBackgroundWorkItem 发送邮件
- 我可以调用位于同一网站的 ONEWAY 网络服务
- 我可以调用位于另一个网站(或另一个子域)的 ONEWAY 网络服务
none以上解决方案等待邮件操作completed.so就可以了。
我的问题是为什么我应该使用服务解决方案而不是其他解决方案。有优势吗?
第四个解决方案增加了额外的 tcpip 流量来使用服务,它不是很有效吗?
如果是这样,使用同一网站下的服务(第三种解决方案)也会产生额外的流量。对吗?
我需要了解为什么人们在同一个网站下使用服务?除了让某些东西可供 ajax 调用之外,还有其他原因吗?
任何信息都会很棒。我真的需要征求意见。
最佳
最合适的架构取决于几个因素:
需要发送的邮件数量
需要在描述的用例之外重用电子邮件发送功能
代码的实施、部署和维护简单
在同一个或另一个 Web 应用程序中将服务中的电子邮件发送分开将使其他应用程序和客户端代码可以使用它。它还为调用服务的代码增加了一些复杂性,因为它需要处理服务不可用的情况,并处理调用时可能发生的错误。
如果发送的电子邮件量非常大,则为该服务使用单独的 Web 应用程序很有用,因为它允许在需要时将工作卸载到一台或多台服务器上。鉴于给定的用例(用户单击按钮),这似乎不太可能,除非该网站的访问量非常大。创建一个单独的 Web 应用程序会在最初和以后增加大量的开发、部署和维护工作。
除非要发送的电子邮件量非常大(每天数百万)或者需要在其他系统中重用电子邮件功能,否则在同一个 Web 应用程序中创建电子邮件发送功能(列出的前两个选项在问题中)几乎肯定是最好的方法。它将导致最少的初始工作量,易于部署,并且(也许最重要的)将是最容易维护的。
在实现邮件发送功能时需要特别注意的一个重要问题是健壮性问题。任何可能的体系结构都可以实现稳健性,并且与问题所强调的体系结构不同。但是,如果 (1) 接收方 SMTP 拒绝接收邮件(例如,邮箱已满;不存在的帐户;作为垃圾邮件拒绝)和 (2) 在消息已发送(例如,作为垃圾邮件拒绝)。根据发送的电子邮件的类型,忽略这些错误可能是可以的,或者可能需要采取一些纠正措施(例如,重试发送,在电子邮件的来源处提醒用户,...)
这是一道理论题。
想象一个 aspnet 网站。通过点击按钮网站发送 mail.now:
- 我可以用代码异步发送邮件
- 我可以使用 QueueBackgroundWorkItem 发送邮件
- 我可以调用位于同一网站的 ONEWAY 网络服务
- 我可以调用位于另一个网站(或另一个子域)的 ONEWAY 网络服务
none以上解决方案等待邮件操作completed.so就可以了。
我的问题是为什么我应该使用服务解决方案而不是其他解决方案。有优势吗?
第四个解决方案增加了额外的 tcpip 流量来使用服务,它不是很有效吗?
如果是这样,使用同一网站下的服务(第三种解决方案)也会产生额外的流量。对吗?
我需要了解为什么人们在同一个网站下使用服务?除了让某些东西可供 ajax 调用之外,还有其他原因吗?
任何信息都会很棒。我真的需要征求意见。 最佳
最合适的架构取决于几个因素:
需要发送的邮件数量
需要在描述的用例之外重用电子邮件发送功能
代码的实施、部署和维护简单
在同一个或另一个 Web 应用程序中将服务中的电子邮件发送分开将使其他应用程序和客户端代码可以使用它。它还为调用服务的代码增加了一些复杂性,因为它需要处理服务不可用的情况,并处理调用时可能发生的错误。
如果发送的电子邮件量非常大,则为该服务使用单独的 Web 应用程序很有用,因为它允许在需要时将工作卸载到一台或多台服务器上。鉴于给定的用例(用户单击按钮),这似乎不太可能,除非该网站的访问量非常大。创建一个单独的 Web 应用程序会在最初和以后增加大量的开发、部署和维护工作。
除非要发送的电子邮件量非常大(每天数百万)或者需要在其他系统中重用电子邮件功能,否则在同一个 Web 应用程序中创建电子邮件发送功能(列出的前两个选项在问题中)几乎肯定是最好的方法。它将导致最少的初始工作量,易于部署,并且(也许最重要的)将是最容易维护的。
在实现邮件发送功能时需要特别注意的一个重要问题是健壮性问题。任何可能的体系结构都可以实现稳健性,并且与问题所强调的体系结构不同。但是,如果 (1) 接收方 SMTP 拒绝接收邮件(例如,邮箱已满;不存在的帐户;作为垃圾邮件拒绝)和 (2) 在消息已发送(例如,作为垃圾邮件拒绝)。根据发送的电子邮件的类型,忽略这些错误可能是可以的,或者可能需要采取一些纠正措施(例如,重试发送,在电子邮件的来源处提醒用户,...)