- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
让我首先为整个主题的长度道歉。这将是相当长的,但我希望确保消息清晰无误。
在公司,我们有一个现有的 ASP.NET WebApplication。在 .NET Framework 3.5 SP1 上用 C# ASP.NET 编写。前段时间,使用 WCF 和 SOAP 为这个 Web 应用程序开发了一个初始 API,以允许外部各方在不依赖浏览器的情况下与应用程序通信。
这个 API 存在了一段时间,但最终请求来创建一个新的 API,它是 RESTfull 并依赖于新技术。我被分配了这个任务,我使用 Microsoft MVC 2 框架创建了初始 API,在我们的 ASP.NET WebApplication 中运行。这最初需要一些时间才能使其正常运行,但目前我们能够对应用程序进行 REST 调用以接收详细说明我们资源的 XML。
我参加了 Microsoft WebCamp,并立即被 OData 概念所吸引。这与我们所做的非常相似,但这是一个被更多玩家支持的协议(protocol),而不是我们自己的实现。目前,我正在研究 PoC(概念证明)来重新创建我使用 OData 协议(protocol)和 WCF DataService 技术开发的 API。
在互联网上搜索让 NHibernate 2 与数据服务一起工作后,我成功地创建了 API 的只读版本,它允许我们通过将传入的查询请求映射到我们的业务层来从内部业务层读取实体。
但是,我们希望有一个功能性 API,它还允许使用 OData 协议(protocol)创建实体。所以现在我有点坚持如何继续。我一直在阅读以下文章:http://weblogs.asp.net/cibrax/default.aspx?PageIndex=3
上面巧妙地解释了如何将自定义 DataService 映射到 NHibernate 层。我以此为基础继续,但我有一个“问题”,我不想使用 NHibernate 将我的请求直接映射到数据库,但我希望将它们映射到我们的业务层(一个单独的 DLL ),它根据访问权限、特权和触发器执行大量检查、约束和更新。
所以我想问的是,我例如像上面一样创建自己的 NhibernateContext 类,而是依赖我们的业务层而不是 NHibernate session ,它可以工作吗?我可能不得不大量依赖反射来确定我在运行时使用的对象的类型,并调用正确的业务类来执行更新和删除。
用 smal ascii 图片演示:
*-----------------*
* Database *
*-----------------*
*------------------------*
* DAL(Data Access Layer) *
*------------------------*
*------------------------*
* BUL (Bussiness Layer) *
*------------------------*
*---------------* *-------------------*
* My OData stuff* * Internal API *
*---------------* *-------------------*
*------------------*
* Web Application *
*------------------*
最佳答案
魔鬼在细节中,但听起来您提出的设计应该可行。
您可以在 DataService 类中定义适用于每个人的访问权限、配置设置和自定义操作。在这种情况下,我认为您将更多地关注数据上下文(DataService 中的“T”)。
对于上下文,实际上有两条有趣的路径:读取和写入。通过 IQueryable 入口点进行读取。编写 LINQ 提供程序是一项很好的工作,但 NHibernate 已经支持这一点,尽管它会返回我想象中我们称之为 DAL 实体的内容。如果您可以用数据库可以理解的术语表达这些,您可以在此处使用查询拦截器进行访问检查。
更新路径来自我了解您尝试运行更多业务逻辑的位置(您提到了验证、额外更新等)。为此,您需要专注于 IUpdatable 实现(如果您使用的是最新版本,则为 IDataServiceUpdateProvider)。在这里,您可以使用您想要的任何对象——它们可以是 DAL 对象或业务对象。您可以在 DAL 中执行所有操作,然后在 SaveChanges() 上运行验证,或者在业务对象进行验证时对它们执行所有操作。
有两个地方你可能会从一种物体“跳”到另一种物体。一个是在 GetResource() API 中,您可以在其中获得一个 IQueryable,大概是在 DAL 实体方面。另一个在 ResolveResource() 中,运行时要求序列化对象,就像它从 IQueryable 中获取一样,因此它可能也是一个 DAL 实体。
希望这会有所帮助 - 对非统一 API 进行统一访问可能很困难,但通常非常值得!
关于wcf - 具有 NHibernate 和企业业务逻辑的 OData WCF 数据服务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4970161/
关闭。这个问题是opinion-based 。目前不接受答案。 想要改进这个问题吗?更新问题,以便 editing this post 可以用事实和引文来回答它。 . 已关闭 9 年前。 Improv
我在这里感觉有些不对劲,所以我希望社区提供意见 - 也许我以错误的方式处理这个问题...... 问:是否适合使用传统的基础架构日志框架(如 log4net)来记录业务事件? 当我说业务事件时,我的意思
技术也好,业务也罢; 01 【什么是业务?】 对于那些久经职场的人,也很难一句话说明白; 业务,作为工作中绝对的核心点,即便在一个公司待的足够久,
三天研发,两天设计; 01 【优先做设计方案】 职场中的那些魔幻操作,研发最烦的是哪个? 作为一个数年且资深的互联网普通开发,可以来说明一下为什么
业务、系统、接口(interface)、持久化类是什么意思?用一些例子解释一下? 最佳答案 业务可能是应用程序中所有功能部分发生的部分(即计算或规则) 系统是您的操作系统 接口(interface),
我无法创建带有指向移动应用的外部链接的简单广告。我已正确设置访问权限,可以创建广告系列、广告集、加载图像,但在创建广告期间出现错误: Ads and ad creatives must be asso
我是软件工程专业的学生,现在我正在为我的期末项目工作,安排在交易日进行商务配对。 这个想法是将卖家(开发人员)和买家(有经济能力的人)在一起。 算法应该像“快速约会”。 假设我有 15 张 table
我们只需按照以下说明在 AWS Cloudformation 上部署企业 WhatsApp API: AWS WhatsApp API 所以一切正常,部署正确完成,问题出在“SSL 配置”选项上,我们
我的应用因为以下原因被拒绝了 Guideline 3.2 - Business We found that your app is not appropriate for the App Store
您好,我想在我的网络应用程序中使用 WhatsApp 业务 API。我已经在 postman 中测试过了。 每当在 WhatsApp 选项卡下的 Facebook 业务页面中运行示例 curl 代码时
我是 Skype for Business 技术的新手,我正在尝试部署一个我愿意与 Skype WebSDK 和 AppSDK 一起使用的服务器。 起初我尝试使用Skype进行在线商务,但websdk
Apple 开发人员以此为由拒绝了我的应用。 “业务 - 3.1.1您的应用程序包含一个帐户注册功能,该功能被视为对外部机制的访问,以便在应用程序中使用购买或订阅。此功能不符合 App Store 审
我正在玩 Realm for Android。 我喜欢自动更新对象的想法,但我对它的软件架构有顾虑。 我已经看到许多提议的架构都指定了一个层来处理数据/数据库访问,理想情况下,更高层不会知道有关数据库
关闭。这个问题不符合Stack Overflow guidelines .它目前不接受答案。 这个问题似乎与 help center 中定义的范围内的编程无关。 . 关闭 10 个月前。 Impro
我正在尝试设置 Whatsapp 业务 API。 引用Link用于设置。 我正在使用 Windows 10 操作系统。 -- 仅供引用。 在初始设置部分,使用命令 docker-compose up
我正在尝试使用 Facebook Business SDK 创建一个 facebook Adaccount .但是当我使用方法 createAdAccount 时,它会给我一个错误。请参阅下面的图片。
我想写一个概念证明 MonoMac使用 c# 和 Razor 呈现 html“ View ”的应用程序。 这可能吗? 如果没有,是否有人推荐与 Razor 的简单性相比的任何其他模板引擎。如果必须的话
无法解析 ':business:diary@debug/compileClasspath': Could not resolve project :fun:push. 的依赖关系 无法解析项目:fun
当我尝试在 Visual Studio Professional 2015 14.0.23107.0 中打开某些 XML 文件时,XML 编辑器出现白屏并显示以下文本: 为什么我不能编辑这个文件?此项
我是一名优秀的程序员,十分优秀!