WebMatrix 中查询 WCF 服务的最佳方式是什么?
我有一个使用 Razor 视图引擎的 ASP.Net 项目,该项目当前直接使用 WebMatrix.Data.Database.Open 查询各种数据库。
我正在尝试使用 WCF 将所有直接数据库访问迁移到 Web 服务,以便获得一致的业务逻辑。在此过程中,我还启用了 WCF 服务“httpGetEnabled”。这允许我使用 Excel 宏来查询相同的 Web 服务。
我的问题是,从 Razor/WebMatrix 页面查询这些 Web 服务的最佳方式是什么?
我应该使用 JSON 启用 WCF 服务并使用 WebMatrix JSON 帮助程序吗?或者我应该使用 JQuery 来获取 xml?
我认为前者是最好的方法,但是如何使用 JSON 启用我的 WCF 服务?我记得看过一个视频,允许我为 WCF 请求指定一个额外的查询参数来获取 JSON,但我再也找不到它了。
任何正确方向的想法或指示将不胜感激。
亲切的问候。
编辑:
我最近在 Stack Overflow 上看到了这个: 通过将 WCF 服务转换为JSON
接下来,我查阅了有关 WebHttpBehavior 的 MSDN 文章。我已将“automaticFormatSelectionEnabled=true”添加到 Web.config 中的 webHttp 元素中。此外,我添加了以下代码,然后允许我指定“format=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 Web 帮助程序似乎只有在您已经有一些 JSON 数据的情况下才有帮助。我只是不确定如何获取 JSON 数据,然后我可以使用 JSON Helper 将其转换(解码)为类。
所以我想我现在的问题是,如何获取 JSON 数据,然后将其桥接到 WebMatrix/Razor 以在 WebGrid 中使用?
I have an ASP.Net project using the Razor view engine which currently queries various databases directly with WebMatrix.Data.Database.Open.
I'm trying to migrate all direct database access to Web Services using WCF so that I get consistent business logic. In doing this, I have also enabled the WCF service to be "httpGetEnabled". This allows me to use Excel Macros to query the same web service.
My question is, what is the best way to query these web services from a Razor/WebMatrix page?
Should I JSON enable my WCF service and use the WebMatrix JSON helper? Or should I be using JQuery to get the xml?
I would assume the former would be the best way, but how do I JSON enable my WCF service? I remember seeing a video that allowed me to specify an additional query parameter to the WCF request to get JSON, but I can't find it again.
Any thoughts or pointers in the right direction would be greatly appreciated.
Kind regards.
Edit:
I've recently seen this on Stack Overflow :
Client Side Binding using by Converting the WCF Services to JSON
On following this, I went to the MSDN article referred to around WebHttpBehavior. I have since added "automaticFormatSelectionEnabled=true" to the webHttp element in Web.config. In addition, I added the following code which then allowed me to specify "format=json" as a query parameter:
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;
}
}
I now just need to work out how to use the WebMatrix JSON helper to get the results... Will update when I get some more information.
Edit 2
Hmm, I don't think that helped... Now I can get JSON from the webservice, but the JSON web helper only seems to help if you have some JSON data already. I'm just not sure how to get that JSON data which I can then use the JSON Helper to convert it (decode) into a class.
So I guess my question now is, how do I get JSON data and then bridge that to WebMatrix/Razor for use in a WebGrid?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
从我读到的所有内容来看,如果我是正确的,您会想知道这种情况下的最佳实践是什么。
据我所知,最佳实践是根本不要通过 wcf 进行网站查询。
为什么 ?
-因为它们都位于您的服务器上...没有必要再次创建连接来获取数据。
它们都应该与数据直接连接,对你来说就是 webmatrix....
您可以将 WCF 用于其他应用程序,例如您创建的用于存储农场动物的 .exe。
额外注意:您可以将 WCF 添加到 ASP.NEt 项目中,并且两者都访问相同的数据库,如果您仍然需要它,这将是最好的情况。
From all I read you would want to know what is the best practice in this case if I am correct.
The best practice from what I know is to not make your website query through the wcf at all.
why ?
-Because their both located on your server... no point creating a connection again to just get data.
They should both have direct connection to the data which for you is webmatrix....
You would use WCF for other applications like a .exe you created which stores farm animals.
Extra note: you can add the WCF to your ASP.NEt project and both access same database which would be best case if you still require it.