MVP - Presenter 和服务层 - 在哪里声明服务层

2024-01-28

我正在通读为企业构建 Microsoft .Net 解决方案我试图弄清楚有关演示者和服务层的一些事情。

首先,我的 Presenter 需要调用驻留在服务层中的方法,例如initialize()、save() 等。但是我在哪里放置对服务层的引用呢?它应该在 Presenter 中的类级别,还是应该在 Presenter 方法本身中定义一个新服务?

其次 - 这在书中也没有很清楚 - 从演示者到服务层的处理是如何工作的?:

public void ProcessPrediction()
    {
        //Get the data from the View
        string selectedForPolePosition = predictionPageView.DriverPolePosition;
        string selectedForSecondPosition = predictionPageView.DriverSecondPosition;
        string selectedForThirdPosition = predictionPageView.DriverThirdPosition;
        string selectedForFourthPosition = predictionPageView.DriverFourthPosition;
        string selectedForFifthPosition = predictionPageView.DriverFifthPosition;
        string raceTitle = predictionPageView.RaceTitle;

        //Prepare for sending to the Service Layer
        PredictionDTO prediction = new PredictionDTO();
        prediction.RaceTitle = raceTitle;
        //More Filling of the DTO here....
        //...
        //...

        IPredictionService predictionService = new PredictionService();
        predictionService.ProcessPrediction(prediction);
    }

 IPredictionService predictionService = new PredictionService();

这实际上取决于很多因素:

  • 服务的生命周期和演示者的生命周期
  • 如果您使用任何 DI 工具
  • 如果服务需要处置
  • 如果服务有任何空闲超时(例如,如果它是WCF代理)

所以本质上,它不一定是一个架构设计——它更多的是一个设计决策。

如果您使用 DI 工具,您可以:

 IPredictionService predictionService = diContainer.Resolve<IPredictionService>();

或者甚至更好,以上都不是,只需将其声明为属性,DI 工具就可以在创建演示者时填充它。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

MVP - Presenter 和服务层 - 在哪里声明服务层 的相关文章

  • Application Insights 快照调试器:快照不是从 .NET 完整框架站点推送的

    我创建了一个全新的 Web 应用程序 NET Full Framework 4 7 2 添加了 Application Insights 快照收集器 但快照未推送到服务器 我什至没有得到Don t see the snapshot trou
  • Web请求编码问题

    您好 我遇到以下代码的编码问题 有什么想法吗 string url http www google com ig api weather istanbul TR hl tr HttpWebRequest request WebRequest
  • nHibernate 使用 Log4Net 进行日志记录,线程会话问题

    大家好 这里有一个小问题 我正在努力解决这个问题 我目前正在开始使用 nHibernate 由于工作需要 我不得不这样做 并且我在 nHibernate 的会话和多线程方面遇到了一些困难 我想在这里完成的任务是让 Log4Net 将所有内容
  • 多线程 Web 应用程序

    我知道有很多情况都是在应用程序中使用多线程的好例子 但是什么时候最好在 net Web 应用程序中使用多线程 Web 应用程序几乎肯定已经由托管环境 IIS 等 实现多线程化 如果您的页面受 CPU 限制 并且想要使用多个核心 那么可以说多
  • 异步代码无需等待完成

    我目前遇到 IIS 崩溃的问题 并在事件日志中留下以下消息 它们对于引导我找到错误的实际来源并没有太大帮助 但一些研究表明这只是生成任务但不等待结果的情况 当它们最终完成时 如果父进程已完成 则无法完成与导致空引用异常的父线程关联 那是对的
  • 作出选择之后、提交上传之前的 asp.net FileUpload 事件

    我想显示通过 FileUpload 控件的浏览按钮选择的文件的大小 理想情况下 该值在用户选择文件后但在单击 上传文件 按钮之前立即显示 我有一个网络表格 按钮看起来像这样
  • 如何隐藏数据列表中的项目

    我想隐藏一个项目datalist根据某种条件起诉ItemBound how Wrap a PlaceHolder控制整个内容ItemTemplate 然后在 ItemDataBound 事件中 您可以执行以下操作 Protected Sub
  • 从 viewModel 在 Asp.net MVC 3 上实现 Dropdownlist

    我是 net 和 mvc 平台的新手 我有很多 int 字段来存储一些下拉列表值 由于数据库大小 我创建了 int 类型的字段 所以我通过这种方法实现 dropdownlist 它有效 但我不这样做不知道在视图模型上存储值文本是否是正确的解
  • 这段代码有什么问题。如果用户选择或不选择复选框,为什么它仍然显示 MsgBox? [关闭]

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 help reopen questions 无论我是否选择复选框 它仍然会给出
  • 装配和产品版本不匹配

    我正在尝试在 asp net 网站中使用 Ajax 控件工具包 我从之前的一个示例项目中复制了 dll 它有以下详细信息 Assembly Version 3 5 40412 0 File Version 3 5 40412 2 Inter
  • ASP.net获取硬件信息

    如果我创建一个 ASP net 页面 我是否能够获取当前用户的 CPUID 和 BIOS 序列号 还是出于安全原因不允许这样做 我目前有一个获取这些值的 Visual Basic net 应用程序 我只是想知道是否可以在网页上执行相同的操作
  • 从 Dropbox C# 下载文件[重复]

    这个问题在这里已经有答案了 我正在尝试下载 Dropbox 中的 pdf 文件 我需要将其保存到本地计算机中 可以是任何文件夹C Users User Desktop例如 这是我一直在使用的代码 public void DownloadPd
  • Kendo 刷新 (DropDownList.refresh()) 不起作用错误未定义

    我试图在另一个 DropDownList 更改后刷新下拉列表 但 Refresh 方法未定义错误正在升级 我尝试再次读取数据源 它显示它正在加载 但数据仍然相同 帮助解决这个问题请 Code DropDownList1 change fun
  • Web.config appSettings:复杂值

    Web config 的 appSettings 部分只能存储这样的简单字符串吗
  • 当客户端连接到“localhost”上的服务时,为什么 System.Net.ServicePoint.ConnectionLimit 使用“7FFFFFFF”(Int32.MaxValue/2147483647)?

    为什么使用 System Net ServicePoint ConnectionLimit 7FFFFFFF Int32 MaxValue 2147483647 当客户端连接到服务时 本地主机 而如果服务在远程计算机上运行 它决定使用 2
  • DetailsView 事件“ItemUpdating”中的 OldValues 集合始终为空

    我正在使用DetailsView 但更新时 我无法获取OldValues 因为ItemUpdating 事件的DetailsViewUpdateEventArgs OldValues 始终为空 NewValues 的值正常 注意 我没有在应
  • OpenXML - 保护所有工作表

    我只能保护一张工作表 但是当我尝试保护 Excel 文档中的所有工作表时 我在尝试附加 SheetProtection 时收到错误 如果我理解正确 我必须在 SheetData 之后附加 SheetProtection 这是我的代码 She
  • 在本地计算机中使用 Azure 存储模拟器时找不到上传的图像

    asp net 4 5 Web 表单 vs2013 身份 2 0 实体框架 6 0 我计划使用 Azure 存储 blob 来存储用户上传的图像 因此 我下载了 Azure 存储模拟器来在本地计算机上进行测试 看来容器已正确创建并且图像已正
  • 回发 Asp.Net 上的动态用户控件

    我创建了一个项目 user control 它有一个文本框 按钮等 它将有意收集用户想要的项目总数 我在 page load 上动态创建了几个 user control 实例 如果您单击项目数量的添加按钮 它将添加到会话变量中 但是 当用户
  • ASP.NET 网站上的 XSS 攻击 [已关闭]

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 help reopen questions 我遇到了很大的麻烦 请帮忙 我的网站

随机推荐