【问题标题】:Is it a bad idea to modify a database from a silverlight application从 silverlight 应用程序修改数据库是不是一个坏主意
【发布时间】:2013-12-14 21:11:29
【问题描述】:

我正在尝试使用 silverlight 创建一个简单的考勤系统。该应用程序将拍摄用户的照片并将其存储在服务器上。

我已经弄清楚如何激活网络摄像头并将图像转换为可写位图。但是,我还没有解决将用户 ID 和当前日期从 asp.net 框架传递到 silverlight 应用程序,然后执行一组 SQL 查询以将数据存储在 SQL 服务器中并将网络摄像头图像保存在服务器。

但是,从性能和安全的角度来看,从 silverlight 中执行 sql 查询是不是一个坏主意?

【问题讨论】:

  • 如何从 Silverlight 访问数据库?您可以从 Silverlight 访问什么样的数据库?

标签: c# asp.net sql silverlight


【解决方案1】:

是的,这是一个非常糟糕的主意。

SilverLight 在浏览器内部执行。您不想向世界上的每个浏览器打开您的数据库。

改为使用网络服务。所有浏览器都会调用您的服务,而您的服务在服务器上运行,将访问数据库(在不同的服务器上运行)。

【讨论】:

  • 在详细阅读了这件事之后,似乎人们建议使用服务来访问数据库。那么我可以使用该服务来执行诸如 SELECT 和 INSERT 之类的查询吗?此外,我认为将从网络摄像头拍摄的图像保存在服务器上应该是一个简单的实现。我还需要为此使用服务吗?您是否知道特别涵盖此方面的任何链接。到目前为止,我的搜索并没有什么成果。
  • 除了使用服务之外,您认为您会使用什么技术从 Silverlight 写入数据库?
  • 我想我可以将一些连接字符串传递给silverlight,然后在其中执行查询。但现在我知道得更多了。我现在遇到的问题是如何将图片从 silverlight 传输到服务器?根据我对 WCF 的阅读,我了解到我可以将某些方法和对象公开给 silverlight 应用程序。但似乎我需要一个服务,从 silverlight 获取字节数组并将其传递给服务器。似乎是一项常见的任务,但我找不到任何写得很好的文章,所以我来这里寻求帮助。你怎么看?
  • 字节数组没有什么特别之处。创建启用 SilverLight 的 WCF 服务时获得的服务有一个操作 void DoWork()。将其更改为void DoWork(byte[] image),您将拥有一个接受字节数组的服务。
  • 非常感谢您的回复(我将您的回复标记为答案。)因此,如果我从 byte[] 数组中创建一个文件并将其保存在本地 DoWork 函数中,则该文件将保存在托管 WCF 的服务器上吗?
【解决方案2】:

坏主意。浏览器中的 Silverlight 是客户端。我会编写一个像 WCF 这样的后端服务来处理这些问题。保持 Silverlight 清洁和轻便。

【讨论】:

    【解决方案3】:

    我不同意其他两个关于这是一个坏主意的答案。首先,Silverlight 不一定在浏览器中运行(请参阅浏览器外模式),然后,这实际上与它无关:

    运行在公司 Intranet 中的 WPF 浏览器应用程序访问该 Intranet 中托管的 sql 服务器是完全合法的。

    在该场景中使用 Silverlight 没有什么不同 - 并且 Intranet 业务线应用程序是 Silverlight 最流行的用例,因此该场景绝不是人为的。

    但是,由于不支持这种情况,因此很难做到。理论上,Silverlight 可以连接到本地 sql server,但您必须重新实现 sql server 协议(如果它完全开放,我不知道),然后大概将实体框架之类的东西移植到 Silverlight。

    由于这非常困难,因此您不会这样做,并且确实会按照其他答案的建议运行并访问某些 Web 服务。然后,您的应用程序至少具有三层:Silverlight 客户端、Web 服务和数据库。

    这称为 3 层架构,这是您通常使用 Silverlight 应用程序所做的。

    我意识到这个答案有些多余,但我想向提问者保证,他的想法并没有什么不好,只是不会有成果。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-11-24
      • 2012-03-17
      • 2015-09-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多