问题标签 [middle-tier]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c# - 中间层验证
我想对我的业务代码进行验证。我正在考虑两种方法来做到这一点。
一,按以下方式对我的类属性设置器进行验证
现在,这种方法的问题在于,每次分配 Name 时都会运行验证代码,而我们可能不需要,例如用数据库中的数据填充它时。
两个,我更喜欢,将静态方法放在这些实体类上,比如
请注意,我使用的是静态方法而不是实例方法,例如
是因为我并不总是传入一个 Student obj,我确实经常将原始类型(如字符串名称)传递给一个方法,比如
如果我确实通过了学生 obj,那么我当然可以
现在,我想让事情变得非常简单,所以我不想采用以下任何一种方法
在属性上使用属性,例如 [StringLength(25)]。
一,因为这需要反射并影响性能,所以有一些技巧可以降低性能,但我还是想让它越简单越好。
第二,我希望我的网站能够在 Medium Trust 中运行。据我了解,反思需要完全信任。
使用那里的任何验证块,例如 MS。在 CodePlex 上找到企业库等。
现在,我想听听你对此的看法,
我要采用的方法有哪些潜在问题?
这种方法会比其他方法性能更好、更易读、更容易维护吗?
您如何在中间层进行验证?
谢谢一堆!
射线。
wcf - 如何在 WCF 服务中创建 XPS 文档进行存储和返回?
我有一个 WCF 服务作为中间层,在某些情况下,我需要创建一个可打印的文档,将其存储在数据库中以供将来参考,然后将其返回给客户端。
作为文件格式,我的第一选择是 XPS,所以我想在 WCF 服务中创建一个 XPS 文档,存储它,然后返回它。
有没有一种简单的方法来实现这一点,或者其他一些明显的方法来解决我错过的问题(在 WCF 中存储和返回可打印文档)?
postgresql - 使用 Postgresql 作为中间层。需要意见
我需要一些意见。
我打算为朋友开发一个 POS 和库存软件。这是一个单人小规模项目,所以我想让架构尽可能简单。
我正在使用 Winform 开发 GUI(Web 界面对 POS 软件没有意义)。对于数据库,我使用的是 Postgresql。
该程序将根据用户角色控制访问,因此我必须开发一个中间层,使用 Web 服务器来控制用户访问,或者我可以直接在 Postgresql 中设置用户权限。
开发中间层会很耗时,维护也会更复杂。所以我更喜欢直接在数据库中设置访问控制。
现在看来,使用数据库来控制用户访问是很麻烦的。我必须为每个角色设置权限。更不用说对于某些表,权限是列级别的。这使得对安全性的推理变得非常困难。
所以我现在正在做的是将所有表设置为除超级用户外不可访问。该程序将使用公共角色连接到数据库。由于公共无法访问这些表,因此我将使用 SECURITY DEFINER(具有超级用户角色)创建可公开访问的存储函数。访问表的唯一方法是使用这些函数。
我将把用户角色和密码放在一个表中。因为非超级用户无法访问用户表本身,所以我将创建一个登录函数,我们称之为fn_login(username, password)
。如果登录成功,fn_login 将返回一个会话密钥。
要调用其他函数,我们需要为用户提供会话密钥,例如:fn_purchase_list(session_key)
, fn_purchase_new(session_key, purchase_id, ...)
。
这样,我将存储的函数视为 API。添加新用户会更容易,因为我只需要在用户表中添加新行而不是添加新的 Postgresql 角色。我不需要在列级别设置权限。所有控件都将以编程方式完成。
所以你怎么看?这种方法是否可行且可扩展?有更好的方法吗?
谢谢!
web-services - 从每个用户的直接数据库连接转移到使用具有池连接的 Web 服务
我正在努力将 V.Rich Client 从每个用户一次登录直接与 DB 对话转移到与 WCF 服务层直接对话。
在新模型中,我就像用户通过中间层进行身份验证,而中间层对我们来说只有一个帐户来连接到数据库。
我的问题在于数据库的触发器和存储例程使用数据库上的 USER() 函数来执行审计。仅使用一个数据库帐户时,如何替换此功能?
希望我已经解释了这个问题,但任何问题都会消失。如果您想知道平台是 .Net、WCF 和 Mysql
谢谢,
汤姆。
curl - 如何通过防火墙向数据层发送安全请求
我被要求用数据库中的一些数据填充闪存文件。我说:“太好了,我将编写一些与数据库对话并输出 xml 的 PHP。swf 可以调用该文件。”
然后我的老板告诉我,该解决方案无法与 IS 相提并论,我必须找到一种更安全的方法来做到这一点。啊!
我提出的解决方案是创建一些位于我们公司防火墙之外的业务逻辑。actionscript 将向该文件发出请求,该文件将向位于防火墙后面的中间层发送安全请求。中间层将通过连接到数据库并通过相同的安全连接通过防火墙返回适当的数据来处理请求。然后业务逻辑输出 xml,每个人都很高兴。
我已经绘制了我正在尝试做的事情以使其非常清楚: http ://twitpic.com/2kj0tk
以下是我的问题:
- 此解决方案是否符合行业最佳实践?
- 它会起作用吗?
- 我需要在每一层中编写什么代码来建立安全连接并通过该防火墙传输数据?我想也许我可以使用 cURL,但我不知道这是否可以通过防火墙。如果可能的话,有人会介意他们将如何解决这个问题吗?
- 我可能最终不得不在 .NET 中编写解决方案。这将如何改变我的方法? 4。
- 如果有的话,您还需要我提供什么其他信息来帮助解决这个问题?
多谢你们!
asp.net - 经典 ASP 应用程序具有用于轻型业务逻辑的 COM“中间层”。这在 ASP.NET 中是否需要?
我试图估计将经典 ASP 应用程序迁移到 .NET 需要多长时间,并且遇到了数百个用 VB 6 编写的 COM 函数。
这些函数中的大多数只进行参数验证并实际调用 SQL 服务器。这是应该用 ORM 代替的东西吗?(Linq、nHibernate、实体框架)......或者这张图片应该有更多内容吗?
orm - 是否建议制作一个 Web 程序来连接与数据库无关的层?
我以前是 Winforms 程序员;我总是将我编写的程序分为两部分,前端(Winforms)和中间层(由 Remoting/WCF 促进)
在这种方法中,前端代码无法访问 Linq 或 System.Data.SqlClient。但这还有一个额外的优势,即中间层是即时 SOA 公民(面向服务的架构),可用于 B2B 场景,与数据库无关,并且支持互联网,即使它只是一个 Winforms 应用程序。
现在我正在学习网络技能。使用 Pro ASP.NET MVC 一书中的 SportsStore 项目,我不可避免地会比较我的旧(?)方法(中间层)和那本书上的存储库方法。存储库方法直接在前端(SportsStore.WubUI)上公开数据访问机制(Linq to SQL)。使用存储库方法,SportsStore.WebUI 仍然可以直接连接到数据库。
问题是,在 Web 程序上,我是否应该希望前端只与中间层接口(因此前端可以与数据库无关,而中间层是即时 SOA 公民),还是我应该在前端直接使用数据库(通过存储库方法、ORM 或类似方法)?
c# - 三层架构
我对三层架构有一些疑问。
- 如何正确实现三层架构的应用程序?
- 这些层之间如何通信?
- 数据层是否完全等同于 DBMS?(如果我们使用存储过程又如何呢?如果我们使用对象关系映射框架呢?)
期待听到您的回答。谢谢。
PS:请不要理解我在问一个笼统的问题。好的 ?我在问如何正确设计大型应用程序。什么是最好的方法?。不期待很长的答案。
architecture - 多租户中间层架构
我们正在开发一个“中间层”来替换现有的业务逻辑/数据访问层。我们面临的一个设计问题是,我们需要以允许多个客户的数据库和/或中间层部分作为我们托管产品的一部分存在于同一服务器上的方式来设计它。托管环境的数据库模式和设置此时已完全确定,因为它已经投入生产。本质上,在托管环境中的给定数据库服务器上,每个客户都有一个使用其唯一客户 ID 命名的 SQL Server 实例。
我们试图决定的是,是从客户端应用程序一直到 Web 服务、业务逻辑和对每个客户的数据库的数据访问都有一条单独的路径,还是每个部分都有一个单独的共享实例,其中数据访问层负责从正确的 SQL Server 实例或两者之间的某个地方获取数据。对于所有东西都有一个共享路径,如果任何一个部分发生故障,所有访问它的客户端都将死在水中。另一方面,对于每个客户都有单独的路径,除了可能过于复杂之外,还有(似乎)需要维护的更多内容?这是我们正在考虑的两个选项的可怕 ASCII 艺术图片:
或这个:
其中哪一个(或中间选项)会更好,为什么?
c# - 中间层的 WCF 托管
我们正在为我们的应用程序套件开发一个新的中间层。我们希望用 C# 重写我们的业务逻辑和数据访问层,因为它们目前在 VB6 中并通过 COM+ 发布。
我们试图决定的是如何准确地使这个中间层可供不同的客户使用。我们将使用 WCF 来执行此操作,并且我们决定使用各种绑定来满足每个不同客户端的需求,包括用于桌面应用程序的 netTcpBinding、net.Tcp 和/或命名管道绑定在本地或网络内的机器上运行的互联网应用程序,以及用于外部 Web API 的某种 HTTP 绑定。
我们试图决定的是如何托管我们的服务。似乎我要去的大多数地方都说 IIS 是要走的路,但如果它在 Windows 服务下,似乎你会从它的 BLL/DAL 部分中获得更好的性能,而这里的@marc_s 似乎经常推荐自托管。那么,我们是在 IIS 下、在服务下还是在某种混合环境下托管它,其中可能在 IIS 中为 HTTP 端点托管瘦服务,并通过 net.tcp 或命名管道绑定使用主服务?如果需要,将其分离出来允许进行物理分离,并允许 IIS 出现故障的可能性,这仍然会为那些访问它发布的端点的客户端运行服务。
此外,可扩展性和可靠性如何?这样两种托管环境之间有很大区别吗?
我意识到有很多与此类似的问题,但我无法找到我一直在寻找的信息,因此指向更具体帮助的链接和答案一样有效。