5

基本上,我的团队和我正在开发一个新的桌面应用程序,它将在我们制造车间的 Windows 7 桌面上运行。该程序在引入时将被大量使用,并且需要与我们的制造数据库进行交互。我估计(最终)将有大约 100 到 200 台机器同时运行这个应用程序。

我们在这里很幸运,我们可以从头开始做所有事情,所以我们定义了数据库、任何 Web 服务、程序设计以及上述内容之间的任何交互。

就像现在一样,我们的遗留应用程序只能直接访问数据库,这很糟糕。我们不想对新应用程序这样做。

所以我的问题是,我该怎么做?模糊,我知道,但基本上我在这里有很多东西可以使用,而且我不完全确定正确的方向是什么。

我最初的想法是,基于我对其他人所做的看法,基本上是通过使用 Web 服务来隔离数据库。即来自楼层的所有数据库交互必须通过网络服务进行,通过在闭门中执行大部分数据库逻辑来提供一层安全性。然后通过 Active Directory 将 Web 服务调用保护给各个用户。

不过,正如我发现的那样,这有其自身的一些含义……我们必须在数据到达应用程序之前对其进行抽象。通过反复使用 Web 服务调用来破坏或发送垃圾数​​据,仍然存在恶意滥用的可能性。我们已经看过 Entity Framework 并且非常喜欢它提供的东西,但据我所知,在这个实例中,当我们处于应用程序级别时,它将不可用。

似乎我无法就什么是“正确的”得出结论。那么,什么是对的?

4

3 回答 3

3

WebServices 听起来像是一种正确的方法。在 Web 服务层上实现面向 SOA 的层可以让您对数据库服务器上的数据发生的事情有很大的控制权。

我不太同意您对重复呼叫造成任何损害的怀疑 - 首先您可以拥有每个呼叫的审核日志,以便检测可能的误用是显而易见的。但是您也可以实现基于角色的安全性,以便将 Web 服务方法公开给角色中的用户,这意味着不是每个人都能够调用任何方法。

您甚至可以使用表单身份验证来保护您的 Web 服务,以便针对任何数据源进行身份验证,而不仅仅是活动目录。

最后一件事,应用程序本身可以作为 ClickOnce 应用程序发布,以便从网页下载和执行它,它会在您发布新版本时自动更新。

如果您需要一些技术指导,我多年前曾在博客上写过:

http://netpl.blogspot.com/2008/02/clickonce-webservice-and-shared-forms.html

于 2013-06-13T19:14:16.387 回答
1

由于您是新手,我的建议是对 Servicestack 使用 API 包装器方法。

查看:http ://www.servicestack.net/ServiceStack.Northwind/

这样做,您可以使用 servicestack 身份验证,抽象出您的数据库层(因为您可以移动到不同的数据库提供程序,更改其位置,为工作项提供队列等......)并且可能及时将您的整个基础架构移动到内部 Intranet应用程序。

此外,Servicestack 速度非常快,几乎可以与您通过的任何协议互操作,并且可以通过 MONO 运行它,因此您不会被可能非常昂贵的 MS 后端所困。

我的两分钱。:)

于 2013-06-13T19:14:19.273 回答
0

首先,这个问题不适合 StackOverflow,你可能很快就会得到近距离投票。

其次,您可能希望为此查看WCF RIA Services

这些将允许您为所有实体创建基本的 CRUD 操作,以及类似的东西。我自己从未使用过这个,不,我不确定潜在的问题可能是什么。

否则,只需执行我们所做的:

创建通用 ( <T>) 接口、服务、合同和一切。这将允许您调整您的服务、DAO、ViewModel 等中的 CRUD 功能以适应任何实体类型。

于 2013-06-13T19:14:28.230 回答