.net Web 服务最佳实践...SRP?

2024-04-15

关于多少个文件、代码行、职责等,什么被认为是 .asmx 或 wcf 服务类的适当开发?大多数人是否为每个类的不同 CRUD 方法发布单独的 .asmx 服务文件?


一般来说,一个服务应该封装一组通用的操作。无论您使用 ASMX 还是 WCF,您都不应该为每一项操作创建一个“服务”。面向服务的架构 (SOA) 背后的总体思想是对现实世界的业务行为进行建模。给你一个愚蠢但希望有效的例子……想想一家餐馆的女服务员。服务员为顾客提供的服务包括接单、上菜、续杯、提供调味品、最后处理付款。女服务员提供的服务不是单一操作,而是相关操作的聚合。

然而,它并不止于此。 SOA 的真正本质是任何给定的服务都可能依赖于其他服务。女服务员的工作离不开厨师的服务、提供膳食、服务柜台的人员(她可以在柜台上获取调味品和饮料)以及餐厅大楼本身提供的服务。女服务员提供的服务和厨师提供的服务之间也存在一些根本区别。简而言之,Waitress 是一项任务服务,而 Cook 是一项实体(或 CRUD)服务。女服务员处理为客户提供有用功能的较高级别操作,而厨师则处理仅向餐厅其他员工提供细粒度和复杂功能的较低级别操作。

对于您的问题,我确实无法给出具体答案,只能说按照逻辑上合适的方式组织您的服务。每个服务只有一个操作可能不是一个好习惯...但是,服务只有一个操作并非闻所未闻。任务服务通常只有一项操作。实体服务通常有许多操作,通常是基于 CRUD 的,但有时还有附加服务。还有一些公用事业服务提供最低级别的基础设施操作(回到餐厅,公用事业服务就像炉灶、烤架、收银机等)。如果您根据实际业务概念对服务进行建模,那么它们公开的操作及其彼此之间的依赖最终应该变得清晰。

有关 SOA 的一些重要信息,请查看 Thomas Erl(Prentice Hall)编写的 SOA 系列,因为它们是实现面向服务的企业的权威资源。

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

.net Web 服务最佳实践...SRP? 的相关文章

  • 在 C/C++ 中获得正模数的最快方法

    通常在我的内部循环中 我需要以 环绕 方式索引数组 因此 例如 如果数组大小为 100 并且我的代码要求元素 2 则应该给它元素 98 高级语言 例如 Python 可以简单地使用my array index array size 但由于某
  • 何时使用 =default 使析构函数默认?

    尽管对构造函数使用 default 对我来说很清楚 即强制编译器在其他构造函数存在时创建默认构造函数 但我仍然无法理解这两种类型的析构函数之间的区别 那些使用 default 的 那些没有显式定义并由编译器自动生成的 我唯一想到的是 gro
  • 平滑滚动.net 表单

    您好 我正在 net 中使用表单 并且在运行时动态添加大量链接标签 我将这些链接标签添加到面板并将该面板添加到 winform 当链接标签的数量增加时 表单会显示一个自动滚动条 垂直 现在 当我使用自动滚动向下滚动时 表单在滚动时不会更新其
  • 在 Xamarin 中隐藏软键盘

    如何隐藏软键盘以便在聚焦时显示Entry在 Xamarin forms 便携式表单项目中 我假设我们必须为此编写特定于平台的渲染器 但以下内容不起作用 我创建自己的条目子类 public class MyExtendedEntry Entr
  • 类特定的新删除运算符是否必须声明为静态

    标准中是否要求类特定的 new new delete 和 delete 是静态的 我可以让它们成为非静态成员运算符吗 为什么需要它们是静态的 它们被隐式声明为静态 即使您没有键入 static
  • 时间:2019-03-17 标签:c#ThreadSafeDeepCopy

    我一直在阅读很多其他问题以及大量谷歌搜索 但我一直无法找到明确的解决方案 根据我读过的一些最佳实践 类的静态方法应该创建线程安全的 并且实例成员应该将线程安全留给消费者 我想为该类实现深度复制方法 该类本身还有其他引用类型成员 有没有什么方
  • fprintf() 线程安全吗?

    我正在为野人就餐问题的某些变量编写一个 C 解决方案 现在 我创建线程 每个线程都将 FILE 获取到同一个调试文件 在线程内我正在使用 fprintf 进行一些打印 打印的语句不受任何类型的互斥锁等保护 我没有在调试文件中观察到任何交错行
  • 如何在 QTabWidget Qt 中展开选项卡

    我有一个QTabWidget像这个 但我想展开选项卡以 填充 整个小部件宽度 如下所示 我怎样才能做到这一点 我在用Qt 5 3 2 and Qt 创建者 3 2 1 Update 我尝试使用setExpanding功能 ui gt myT
  • 从 WebBrowser 控件 C# 获取滚动值

    我试图在 WebBrowser 控件中获取网页的 Y 滚动索引 但无法访问内置滚动条的值 有任何想法吗 对于标准模式下的 IE 使用文档类型 正如你所说 scrollTop是的财产元素 而不是 HtmlDocument htmlDoc th
  • Visual Studio Code:如何配置 includePath 以获得更好的 IntelliSense 结果

    我是使用 Visual Studio Code 的完全初学者 我不知道我在做什么 我已经四处搜索 也许还不够 但我找不到像我这样的人如何配置的简单解释c cpp properties json每当我单击带有绿色波浪线下划线的行旁边的黄色灯泡
  • std::forward_as_tuple 将参数传递给 2 个构造函数

    我想传递多个参数以便在函数内构造两个对象 以同样的方式std pair
  • WCF - AsyncPattern=true 或 IsOneWay=true

    我的 WCF 服务中很少有方法需要花费大量时间 生成报告和发送电子邮件 根据目前的要求 要求客户端应用程序只需提交请求 然后不等待整个过程完成 它将允许用户继续在客户端应用程序中执行其他操作 而不是等待整个过程完成 我很困惑该走哪条路 As
  • AES 输出是否小于输入?

    我想加密一个字符串并将其嵌入到 URL 中 因此我想确保加密的输出不大于输入 AES 是可行的方法吗 不可能创建任何始终会创建比输入更小的输出的算法 但可以将任何输出反转回输入 如果您允许 不大于输入 那么基本上您只是在谈论同构算法alwa
  • ASP.NET MailMessage.BodyEncoding 和 MailMessage.SubjectEncoding 默认值

    很简单的问题 但我在 MSDN 上找不到答案 查找 ASP NET 将用于的默认值 MailMessage BodyEncoding and MailMessage SubjectEncoding 如果你不在代码中设置它们 Thanks F
  • .NET Core 中的跨平台文件名处理

    如何处理文件名System IO以跨平台方式运行类以使其在 Windows 和 Linux 上运行 例如 我编写的代码在 Windows 上完美运行 但它不会在 Ubuntu Linux 上创建文件 var tempFilename Dat
  • cout 和字符串连接

    我刚刚复习了我的 C 我尝试这样做 include
  • 跨多个域的 ASP.NET 会话

    是否有合适的 NET 解决方案来在多个域上提供持久服务器会话 即 如果该网站的用户在 www site1 com 下登录 他们也将在 www site2 com 下登录 安全是我们正在开发的程序的一个问题 Thanks 它是否需要在会话中
  • 每个数据库多个/单个 *.edmx 文件

    我有一个通过 ADO net 数据服务与数据库交互的项目 数据库很大 近 150 个具有依赖关系的表 该项目几年前开始 当时使用的是数据集 现在我们正在转向实体模型关系 由于我们添加了更多需要使用的表 该模型正在不断增长 这是管理这一切的正
  • 矩阵到数组 C#

    这将是转换方阵的最有效方法 例如 1 2 3 4 5 6 7 8 9 into 1 2 3 4 5 6 7 8 9 in c 我在做 int array2D new int 1 2 3 4 5 6 7 8 9 int array1D new
  • 从 JavaScript 中的 OnClientClick 事件中阻止 C# 中的 asp:Button OnClick 事件?

    我有一个asp Button在我的网页上 它调用 JavaScript 函数和代码隐藏方法 后者进行调用以导航到另一个页面 在 JavaScript 函数中 我正在检查条件 如果不满足这个条件 我想中止导航 以便OnClick方法未被调用

随机推荐

  • 我可以确定是否从终端运行 Perl 脚本吗?

    我可以确定是否从终端运行 Perl 脚本吗 如果我不确定的话 我宁愿默认假设它是从浏览器运行的 但如果有一种方法可以确保它 100 是从终端运行的 我会很高兴 出于调试目的 这是直接取自 ExtUtils MakeMaker 的源代码pro
  • 如何在 Dart 中对字符串列表进行排序?

    我在 API 文档中看到有一个sort 方法上List 但我不清楚它需要什么参数 当前的需求是进行非常简单的直接 alpha 比较 1 快速解决方案 谢谢你的提问 您可以对列表进行排序String像这样 main final List
  • Vue.js 2 - 从 body 标签中删除初始边距

    如果这是一个愚蠢的问题 我很抱歉 我对 Vue 还很陌生 我创建了一个 Vue 使用命令vue init webpack
  • 重新分配值时维护每个键的对象值类型

    const obj a 1 b foo for const k of Object keys obj as keyof typeof obj obj k obj k TS游乐场 https www typescriptlang org pl
  • 从 VB6 和 C# 调用 DLL 给出的双精度结果略有不同

    我在 DLL 中有一个专有库 我没有代码 该库已在 VB6 中使用多年 我正在尝试将VB6代码升级到C 并希望使C 代码完全复制VB6的行为 当从每个环境调用时 我无法使 DLL 中完成的某些计算的双精度结果完全匹配 在 VB6 中 我有类
  • React使用dangerouslySetInnerHTML来渲染带有html标签的json

    我正在尝试渲染一个 json 列表 其中列表中的字符串中包含 html 标签 如下所示jsbin https jsbin com deqiqeb edit js console output 它可以在 Jsbin 中运行 但在我的控制台中我
  • 是否可以使用 Mono 运行 clickonce 应用程序?

    我正在开发 clickonce 应用程序 我可能想在 Mac 平台上分发该应用程序 我知道我可以使用 Mono 编译 Net 应用程序 并且它可以在 Mac 上运行 但是我可以使用 clickonce 作为安装程序吗 thanks 我认为
  • LinqKit:AsExpandable 不起作用

    Code public static GetRows var to ret db TableRows Select x gt new TableRowModel TableRowId x TableRowId Type x Type Nam
  • 从 iPhone 直接链接到撰写评论页面

    我一直在尝试将用户重定向到评论页面 我尝试了 3 种不同的 URL 格式 转到 Safari 上的产品页面 http itunes apple com us app british accent id350212768 mt 8 http
  • 如何将异常转换为 NSError 对象

    我想将异常消息转换为 NSError 对象 以便我可以在 try catch 块中使用它 我实际上正在研究一个React Native 的原生 iOS 模块 https facebook github io react native doc
  • 为什么不能继承构造函数为私有的类?

    为什么 Java 不允许继承构造函数为私有的类 Java 不阻止使用私有构造函数对类进行子类化 public class Main static class A private A System out println Subclassed
  • 如何从随机字节数组值中获取随机双精度值?

    我想使用 RNGCryptoServiceProvider 作为我的随机数源 由于它只能将它们输出为字节值数组 因此如何将它们转换为 0 到 1 双精度值 同时保持结果的一致性 byte result new byte 8 rng GetB
  • openslide python import show:windows 错误

    我正在使用 python 2 7 win 32 我需要在 python 中安装 openslide 在下面的页面显示 安装openslide http openslide org download http openslide org do
  • 为什么我无法修改拆箱转换的结果?

    struct Point public int x public int y void Main Point p p x 1 p y 1 Object o p Point o x 4 error Point o x 5 error Poin
  • 如何计算Gabor滤波器的空间频率?

    This https stackoverflow com questions 9003147 how to apply gabor wavelets to an image问题很好地描述了 gabor 滤波器系列及其应用 但是 没有任何关于
  • 没有原始文本弹出窗口的 Bing 翻译小部件

    我在我的网站中实现了 Bing Translator Widget 效果很好 但是 我找不到任何方法来禁用显示原始文本的翻译文本上附加到悬停事件的烦人弹出窗口 有什么办法可以禁用它 提前致谢 以下是有关如何使用该小部件的官方页面的链接 ht
  • ivy或ivyDE可以在Eclipse中自动将相关jar添加到JAVA构建路径库中吗?

    例如 当我在 Eclipse 中打开一个开发良好的开源项目 如 lucene 同时使用 ant build xml 和 ivy ivysetting xml 时 我可以使用 build xml 运行 ant 来成功构建整个项目 然而 该项目
  • 安装后离子问题

    我需要一些帮助来解决我的 mac 上的 ionic 问题 对于我使用 ionic 从终端启动的每个命令 我都会收到相同的错误 如下所示 例如 即使我发出命令ionic v 我收到这个 ionic v usr local lib node m
  • 无法解析符号 ViewHolder

    我试图实现一个recycler view 但我无法使用viewHolder 请找到解决方案 提前致谢 你可以尝试一下这个方法希望对你有帮助 public class YourAdapter extends RecyclerView Adap
  • .net Web 服务最佳实践...SRP?

    关于多少个文件 代码行 职责等 什么被认为是 asmx 或 wcf 服务类的适当开发 大多数人是否为每个类的不同 CRUD 方法发布单独的 asmx 服务文件 一般来说 一个服务应该封装一组通用的操作 无论您使用 ASMX 还是 WCF 您