【发布时间】:2009-11-17 13:39:40
【问题描述】:
也许是一个奇怪的问题,但是您会将 HttpHandler 类放在 n 层架构中的什么位置?我有一个服务层、一个域模型层和一个数据层。我应该为 HttpHandlers 创建一个单独的类库吗?
【问题讨论】:
标签: .net architecture httphandler
也许是一个奇怪的问题,但是您会将 HttpHandler 类放在 n 层架构中的什么位置?我有一个服务层、一个域模型层和一个数据层。我应该为 HttpHandlers 创建一个单独的类库吗?
【问题讨论】:
标签: .net architecture httphandler
我的意见:我会将它们放在服务层中,也许放在该项目的子文件夹中。
【讨论】:
这些是我的偏好:
正如您所提到的,您正在跨站点重用IHttpHandler,因此它自己的单独库将是我的首选项目。
当然,如果它是库中唯一的类,那完全是矫枉过正。您还说过它需要访问您的域和数据。您可以将这些保留在内部并使用:
[assembly: InternalsVisibleTo("MyHandlerLibrary")]
位于您的域库的 Assemblyinfo.cs 文件(或您存储程序集信息的任何位置)中。
不过,我不想为了它而成为一名建筑宇航员。如果您知道您的 Handler 不会在全球范围内占据主导地位,请乐意将其粘贴在服务类库中。
【讨论】:
HTTP 处理程序是一种技术——它们可用于在您想要的任何地方公开(各种)接口。重要的问题是服务的目的是什么?它们是“技术”服务还是“商业”服务?
如果你能回答这些问题,你就更接近于找出他们需要去哪里了。
记住它们是作为基于 Web 的应用程序(或组件)的一部分公开的,这一点也很重要;如果您想通过网络公开某些内容,那么它们可能是一个不错的选择。 因此,如果您想通过 Web 公开您的数据访问权限,那么可以使用 HTTP 处理程序。
您应该重新创建一个单独的库吗?如果 HTTP 处理程序公开的接口是通用的(例如日志记录),那么您可以,尽管您更有可能在库中有一些“帮助”方法,并且您的“服务”特定 HTTP 处理程序将在您需要的地方。
【讨论】: