制作 Silverlight 和常规 .NET REST 客户端的最便携方法是什么

2024-03-08

我正在尝试让服务器应用程序使用 WCF 公开一些状态信息。 特别是我在使用带有 RESTful“API”的 WCF 服务之后。 当谈到从 silverlight 中使用 REST api 时,我遇到了一些困难 我想要作为附加类型的客户端的应用程序/页面...

到目前为止,我已经成功定义了状态接口:

public static class StatusUriTemplates
{
  public const string Status = "/current-status";
  public const string StatusJson = "/current-status/json";
  public const string StatusXml = "/current-status/xml";
}
[ServiceContract]
public interface IStatusService
{
  [OperationContract]
  [WebGet(ResponseFormat = WebMessageFormat.Json, UriTemplate = StatusUriTemplates.StatusJson)]
  StatusResultSet GetProgressAsJson();

  [OperationContract]
  [WebGet(ResponseFormat = WebMessageFormat.Xml, UriTemplate = StatusUriTemplates.StatusXml)]
  StatusResultSet GetProgressAsXml();

  [OperationContract]
  [WebGet(UriTemplate = StatusUriTemplates.Status)]
  StatusResultSet GetProgress();
}

在服务器中实现:

  [ServiceBehavior(InstanceContextMode = InstanceContextMode.Single)]
  public class ServerStatusService : IStatusService
  {
    public StatusResultSet GetProgressAsJson()
    { return GetProgress(); }

    public StatusResultSet GetProgressAsXml()
    { return GetProgress(); }

    public StatusResultSet GetProgress()
    {
       return StatusResultSet.Empty;
    }
  }

在运行时从我的代码中公开它:

  var service = new ServerStatusService();
  var binding = new WebHttpBinding();
  var behavior = new WebHttpBehavior();

  var host = new WebServiceHost(service, new Uri("http://localhost:8000/server"));
  host.AddServiceEndpoint(typeof(IStatusService), binding, "status");
  host.Open();

我什至成功地使用了 .NET 控制台/winfoems/WPF 应用程序中的服务,使用的方法如下:

  var cf = new WebChannelFactory<IStatusService>(new Uri("http://localhost:8000/server/status"));
  var ss = cf.CreateChannel();
  Console.WriteLine(ss.GetProgress().TimeStamp);

我遇到的“障碍”是 SilverLight 没有 Web ChannelFactory。

Period.

这意味着当涉及到 silverlight 代码时,我的选择是:

  • 使用 WebClient 编写丑陋的代码, 这最终意味着我将拥有 每当更新两组代码 我的 API 发生了变化
  • 将 SOAP/WS 用于 WebService 并保持 更新服务参考 视觉工作室

有没有办法在 SilverLight 中保持 WebChannelFactory 的“干净”实现? 也许是 SilverLight 的公共领域/开源 WebChannelFactory?

任何对此的帮助将不胜感激!


我几乎不想建议,但你觉得舒服吗重新实现 WebChannelFactory 类 http://msdn.microsoft.com/en-us/library/ms405827(VS.95).aspx?

粗略地浏览一下 Silverlight API,您似乎不会从 Microsoft 获得太多开箱即用的帮助。您需要为其重新实现一个通道类和一个工厂。

也许创建通道并将自己与特定于平台的代码隔离的另一种方法是创建它的自定义实现?具体来说,我的意思是,您创建另一个工厂类,该工厂类要么在 WebChannelFactory 可用时调用它,要么为您进行设置。

抱歉我没有更深入的建议。 :)

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

制作 Silverlight 和常规 .NET REST 客户端的最便携方法是什么 的相关文章

  • 为 NFL api 生成访问令牌

    NFL 有一个 API 服务 link https api nfl com docs getting started index html https api nfl com docs getting started index html
  • 异步WCF调用来保存线程?

    In 另一个问题 https stackoverflow com q 19731600 279516 建议我发送异步网络请求 而不是在后台线程上发送同步请求 原因是为了不浪费一根线 我试图理解这是怎么回事 这是最初的做法 我可以理解这里怎么
  • WUApiLib IUpdateInstaller2 产生错误;某些操作系统更新安装其他操作系统会抛出 HResult -2145124318

    更新是从本地服务器下载的 而不是从 WUS 或 Microsoft 存储库下载的 本地服务器基于 Linux 该主机包含每次更新的内容 我没有使用UpdateDownloader要从Microsoft服务器下载 我手动下载更新内容 然后使用
  • 使用实体框架从 2 个表返回数据

    我正在使用 MVC3 和实体框架 但我需要来自不同表的更多数据 通常我会做这样的事情来从表中获取数据 Table Users id username 在代码中我会做这样的事情来获取所有用户 public static IEnumerable
  • 如何在 MessageContract 类型中使用 XML 属性?

    前面的注释 我无法更改传入的 SOAP 请求的格式 因为它们是由国际标准固定的 weeeeeeeee 我有一个 SOAP 请求进入我的 WCF 服务 如下所示
  • 在 Android 中使用 DataOutputStream 在 POST 正文中发送特殊字符 (ë ä ï)

    我目前正在开发一个具有大量服务器端通信的 Android 应用程序 昨天 我收到一份错误报告 称用户无法发送 简单 特殊字符 例如 我搜索过但没有找到任何有用的东西 可能重复 没有答案 https stackoverflow com que
  • 如何判断计算机是否已重新启动?

    我曾经使用过一个命令行 SMTP 邮件程序 作为试用版的限制 它允许您在每个 Windows 会话中最多接收 10 封电子邮件 如果您重新启动计算机 您可能还会收到 10 个以上 我认为这种共享软件破坏非常巧妙 我想在我的应用程序中复制它
  • 在视口中查找 WPF 控件

    Updated 这可能是一个简单或复杂的问题 但在 wpf 中 我有一个列表框 我用一个填充数据模板从列表中 有没有办法找出特定的数据模板项位于视口中 即我已滚动到其位置并且可以查看 目前我连接到了 listbox ScrollChange
  • 在mysql连接字符串中添加应用程序名称/程序名称[关闭]

    Closed 这个问题需要细节或清晰度 help closed questions 目前不接受答案 我正在寻找一种解决方案 在连接字符串中添加应用程序名称或程序名称 以便它在 MySQL Workbench 中的 客户端连接 下可见 SQL
  • 等待 IAsyncResult 函数直至完成

    我需要创建等待 IAsyncResult 方法完成的机制 我怎样才能做到这一点 IAsyncResult result contactGroupServices BeginDeleteContact contactToRemove Uri
  • DataTable.GetChanges() 不断返回 NULL

    我正在尝试获取存在于的所有行allData但不在removeData public static DataTable RemoveDuplicateRows DataTable allData DataTable removeData re
  • Foursquare - OAuth 身份验证 - .Net 示例

    是否有关于如何使用 Oauth 向 Foursquare 进行身份验证的示例 这里有一个关于如何将 OAuth 与 Foursquare 结合使用的非常好的工作流程摘要 http developer foursquare com docs
  • 使用 Amazon SQS 的 .net 应用程序示例

    我正在寻找一个示例 Net 应用程序 该应用程序会持续检查 Amazon SQS 是否有新消息 并在发现新消息时执行一项操作并将其从队列中删除 我的目标是让一个在 EC2 上运行的应用程序监视我的 SQS 队列中的新消息 当找到一条消息时
  • laravel - 使用请求类或输入类

    在宁静的控制器中 我应该使用哪个类来获取传递的变量 member gt email Input get email or member gt email Request get email 两种选择都适合我 但有什么区别 Input get
  • 在 C# 中将 ANSI (Windows 1252) 转换为 UTF8

    I ve 之前问过这个 https stackoverflow com q 4351985 398713之前在 Stack Overflow 上以一种迂回的方式 这次想把它做好 如何将 ANSI 代码页 1252 转换为 UTF 8 同时保
  • 如何使用 .NET 以编程方式沙箱进程

    我计划设计一个系统 本质上允许用户在我的机器上运行 PHP Ruby 等脚本代码 我想将它们放入沙箱中 以防止它们访问机器的关键方面 哪些 NET API 可用于此目的 我计划从主流程创建一个子流程 并希望以编程方式从主流程中沙箱该子流程
  • 什么是扩展方法?

    NET 中的扩展方法是什么 编辑 我已在以下位置发布了后续问题扩展方法的使用 https stackoverflow com questions 403619 usage of extension methods 扩展方法允许开发者向公众添
  • MS Teams 应用程序:访问此应用程序时出现问题

    The users on MS Teams desktop reported multiple issues with our MS Teams app They see the following error on MS Teams De
  • 对齐 GridView 中的行值

    我需要在 asp net 3 5 中右对齐 gridview 列中的值 我怎样才能做到这一点
  • 我可以在 PHP 会话变量中安全地存储用户名和密码吗?

    我想在 REST api 之上制作一个轻量级的 web 应用程序 用户只需进行一次身份验证 从那时起 所有针对 web api 的请求都希望通过以某种方式保持用户名和密码有效来完成 我已经做了一个工作原型我在哪里将用户名和密码存储在会话变量

随机推荐

  • @XmlRegistry - 它是如何工作的?

    我找到了一些 JAXB2 的例子 XmlRegistry通过互联网 但没有很好的深入教程来谈论使用的概念 XmlRegistry with XmlElementDecl 想知道这是否是一个总体上没有被太多探索的概念 无论如何 这是我的问题
  • Python“ascii”编解码器无法使用 request.get 对字符进行编码

    我有一个 Python 程序 它从网站抓取数据并返回 json 爬网站点的元标记字符集 ISO 8859 1 这是源代码 url https www example com source code requests get url plai
  • Laravel 属于通过类似关系

    现在我有这些方法 程序 php public function institute return this gt belongsTo Institute class institute id gt withTrashed User php
  • 访问selenium中的css类属性

    我有一个 HTML div 元素并希望使用 Selenium 检查它是否左对齐 但是 那float leftCSS 属性在 CSS 类中定义 有什么方法可以通过 Selenium 访问 CSS 类属性吗 或者还有其他方法可以获取这个值吗 d
  • jQuery mobile - Pagecontainer 从 DOM 中消失

    在 jQuery mobile 中 我想从外部文件加载页面容器 我可以将标记添加到我的 DOM 中 但之后我面临的问题是 一旦导航到 page2 整个 page1 div 就会从 DOM 中消失 因此我无法返回 请参见下面的屏幕截图 单击
  • 如何从iPhone sdk中的城市名称获取位置(坐标)?

    friends 因为我们在android中有google api的geocoder getfromlocation locationname maximumResults 函数 我在 iphone sdk 中没有看到这样的函数来从城市名称获
  • 在 Linux 中调试 C++ 程序

    我写了一个简单的 C 程序 如下所示 include
  • 截断文本并在鼠标悬停时显示它

    我需要截断文本 末尾带有 并且将鼠标悬停在整个文本上时应该展开 我尝试用下面的代码截断 此代码的问题是 它会在单击时展开内容 但我需要当用户将鼠标悬停在 p 标签上的任何位置时打开它 var len 100 var p document g
  • 阻止滚动以及展开/折叠可折叠工具栏

    我正在使用Collapsible Toolbar在我的应用程序中 活动启动时可折叠工具栏处于展开状态 启用滚动并且正常工作 但现在我需要显示全屏错误布局 以防我的 API 失败 在这种情况下 我必须折叠工具栏并阻止滚动效果 错误布局显示重试
  • Spark hivecontext 的查询会锁定 hive 表吗?

    我知道如果我从 Hive 提交查询 将获取共享锁 然后 Hive 表将被查询锁定 https cwiki apache org confluence display Hive Locking https cwiki apache org c
  • 实现下拉菜单项颤动的复选框

    如何在flutter应用程序中实现下拉菜单项的复选框 每个里面DropdownMenuItem 你可以有Row作为一个孩子 你可以通过CheckBox其次是Text 帮助您入门的示例工作代码 body Center child Dropdo
  • 获取 ntp 调整通知

    我的情况很奇怪 我需要一些有关 NTP 时间调整的指导 我有一台运行 NTP 守护进程的 PC Red Hat 这台 PC 通过 LAN 上的 Stratum 2 时间服务器调整其时间 我的 PC 还通过串行端口 RS 232 连接到 DV
  • 如何将 Vec<&mut T> 转换为 Vec<&T>?

    我有一个可变引用向量 struct T let mut mut vec Vec lt mut T gt vec 如何将它 的副本 传递到采用不可变引用向量的函数中 fn cool func mut immut vec Vec lt T gt
  • iPad IOS html 表单选择在触摸时无法打开

    我有一个选择框 通过以下方式创建
  • Vim 加载 vimrc 后是否加载插件?

    我正在尝试覆盖插件中设置的突出显示 该插件执行以下操作 highlight link WordUnderTheCursor Underlined 首先 我不知道 添加到highlight做任何事 但这无关紧要 在 vimrc 中做类似的事情
  • 使用异步函数订阅可观察对象是否安全

    我有一个以 50Hz 发送事件的事件发射器 我想使用异步方法订阅这个发射器 代码如下所示 this emitter fromEventPattern this addHandler this removeHandler err char g
  • org.hibernate.MappingException:属性映射在 ENUM 实体中的列数错误

    我创建了数据库 其中引用了 ENUM 表 并且该枚举的实体有例外 脚本示例 CREATE TABLE status code VARCHAR 40 status ENUM not started in progress finished i
  • 从 jquery 安全地调用我的 Web api

    我有一个简单的问题 可能会指出一个复杂的答案 我有一个运行良好的网络 API 但现在我想设置身份验证 授权 我需要它在所有平台上工作 但主要来自 jQuery 当然 我不想像这样以纯文本形式沿着管道发送我的用户名和密码 function G
  • 有没有办法加快 docker exec 的速度?

    有没有办法消除 docker exec 的开销 例如 当我打电话时docker exec ls在已经运行的容器上 需要0 15秒才能返回结果 root min time docker exec 6f ls bin boot dev etc
  • 制作 Silverlight 和常规 .NET REST 客户端的最便携方法是什么

    我正在尝试让服务器应用程序使用 WCF 公开一些状态信息 特别是我在使用带有 RESTful API 的 WCF 服务之后 当谈到从 silverlight 中使用 REST api 时 我遇到了一些困难 我想要作为附加类型的客户端的应用程