2011-04-12 114 views
1

我有一个使用Razor视图引擎的ASP.Net项目,它目前使用WebMatrix.Data.Database.Open直接查询各种数据库。WebMatrix中查询WCF服务的最佳方式是什么?

我试图迁移所有使用WCF的Web服务的直接数据库访问,以便获得一致的业务逻辑。在这样做的同时,我还启用了WCF服务,使其成为“httpGetEnabled”。这使我可以使用Excel宏来查询同一个Web服务。

我的问题是,从Razor/WebMatrix页面查询这些Web服务的最佳方式是什么?

我应该JSON启用我的WCF服务并使用WebMatrix JSON帮助器吗?或者我应该使用JQuery来获取XML?

我会假设前者是最好的方法,但我如何使JSON启用我的WCF服务?我记得看到一段视频,它允许我为WCF请求指定一个附加查询参数来获取JSON,但我无法再找到它。

任何想法或指针在正确的方向将不胜感激。

亲切的问候。


编辑:

我最近看到了这对堆栈溢出: Client Side Binding using by Converting the WCF Services to JSON

在这之后,我去了周围WebHttpBehavior提到的MSDN文章。我已经添加了“automaticFormatSelectionEnabled = true”到Web.config中的webHttp元素。此外,添加以下代码,然后让我来指定“格式= JSON”作为查询参数:

string formatQueryStringValue = WebOperationContext.Current.IncomingRequest.UriTemplateMatch.QueryParameters["format"]; 
if (!string.IsNullOrEmpty(formatQueryStringValue)) 
{ 
    if (formatQueryStringValue.Equals("xml", System.StringComparison.OrdinalIgnoreCase)) 
    { 
     WebOperationContext.Current.OutgoingResponse.Format = WebMessageFormat.Xml; 
    } 
    else if (formatQueryStringValue.Equals("json", System.StringComparison.OrdinalIgnoreCase)) 
    { 
     WebOperationContext.Current.OutgoingResponse.Format = WebMessageFormat.Json; 
    } 
} 

我现在只需要找出如何使用WebMatrix的JSON助手得到的结果。 ..当我得到更多的信息时会更新。


编辑2

嗯,我不认为帮助......现在,我可以从Web服务得到JSON,但JSON网络助手似乎只帮助,如果你有一些JSON数据已经。我只是不确定如何获取JSON数据,然后我可以使用JSON Helper将它转换(解码)为一个类。

所以我想我现在的问题是,我如何获得JSON数据,然后将它连接到WebMatrix/Razor以便在WebGrid中使用?

+0

你想调用从客户端或服务器的服务? – SLaks 2011-04-12 14:02:01

+0

我真的没有偏好,我想我只是想要做什么被认为是最好的做法... – Darren 2011-04-12 14:03:17

+0

这完全取决于你想做什么。 – SLaks 2011-04-12 14:12:32

回答

0

从我看过的所有内容中,如果我没有错,你会想知道这种情况下的最佳做法。

从我所知道的最好的做法是不要让你的网站通过wcf进行查询。

为什么? -因为它们都位于您的服务器上......没有意义再创建一个连接来获取数据。 他们都应该有直接连接到你的数据为webmatrix .... 你会使用WCF的其他应用程序,如你创建的.exe存储农场动物。

特别提示:您可以将WCF添加到您的ASP中。如果你仍然需要它,那么不需要项目和访问相同的数据库。

+0

虽然我同意Wcf对于这个例子有点矫枉过正。我不确定你在服务器上的含义。网页提出的任何请求都不会从服务器发出,而是从客户端计算机发出。 – Jesse 2011-04-12 18:19:58

+0

对不起,如果我不清楚,有点多任务。将网页划分为两条不同路线的请求有什么意义?组织他所有的代码将会更加困难。他们都位于服务器上,不妨访问一直在网站上提供的所有内容。 – 2011-04-12 19:46:04

+0

抱歉,延迟响应。我的问题是,Web服务已经存在,并具有我不想复制的业务逻辑。另外,它还连接到别处的传统数据库。最后,如果我无法控制Web服务呢?我已经在VS中添加了一个Web引用(我不确定你可以在WebMatrix接口中做什么),但现在我得到一个错误,它无法在服务模型中找到端点...必须是一个更简单的方法... – Darren 2011-04-27 13:02:52

相关问题