首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Monotouch和WCF: SVCUTIL.EXE和SLSVCUTIL.EXE的区别以及如何避免不受支持的泛型ChannelFactory?

Monotouch和WCF: SVCUTIL.EXE和SLSVCUTIL.EXE的区别以及如何避免不受支持的泛型ChannelFactory?
EN

Stack Overflow用户
提问于 2011-11-25 22:41:42
回答 1查看 1.9K关注 0票数 6

我(一次又一次)尝试在Monotouch中使用一些WCF服务。第一种方法:在中添加一个web引用。它无法创建引用文件。然后我尝试了SVCUTIL.EXE,得到了一个错误,即通用ChannelFactory在Monotouch中不可用--我想是因为没有可用的反射。

接下来,我尝试了Silverlight 3 SDK中的SLSVCUTIL.EXE。这会为不同的服务生成名称空间,这些服务不同于通过SVCUTIL.EXE创建的服务。由于我已经有了大量的包装代码,所以我必须进行大量的更改。

这些问题产生:

  • 我是否可以重写CreateChannel方法并返回每个服务的专用通道,而不是像抛出的异常所提议的那样依赖于不存在的泛型版本?这意味着修复SVCUTIL.EXE生成的代码。
  • 如何在重写的方法中创建通道?我只有我的服务接口。我搜索了一下,找不到任何例子。用该方法编写的代码是什么样子的?
  • 我完全不清楚:这两种服务的区别是什么?
  • 如果我解决了命名空间问题,通过Silverlight实用程序创建的存根将使我的项目工作,还是也会受到通用通道问题的影响?
  • 为什么Silverlight工具可以在不动态释放代码的情况下工作呢?输出代码有什么不同,动态版本有什么优势?
  • 哪个版本的Silverlight支持int。我可以使用v4工具还是必须是版本3?
  • MT中的WCF是否支持流,比如下载大文件?
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-11-26 01:55:29

WCF是一个巨大的猛兽,很难给出一般的答案,太多的依赖于细节。一般规则是,MonoTouch支持与Silverlight附带的WCF的相同子集(即使随着时间的推移添加了一些新功能)。

我想是因为没有反射。

反射是可用的,并且可以使用MonoTouch。Reflection.Emit不允许,而不是,因为苹果不允许在iOS设备上使用JIT‘’ing代码。这可以限制一些需要在运行时生成代码的API (但如果代码生成可以在编译时完成,则不是问题)。

..。这意味着修复SVCUTIL.EXE生成的代码。

战斗/编辑生成的代码通常是个坏主意(例如,未来的维护)。我建议您在花费太多时间定制生成的代码之前尝试使用slsvcutil.exe

..。用该方法编写的代码是什么样子的?

如果希望提供自己的通道(或自定义生成的代码),Mono的System.ServiceModelSystem.ServiceModel.Web的完整源代码是可用的。

我完全不清楚:这两种服务的区别是什么?

slsvcutil.exe,中的SL前缀用于Silverlight。Microsoft使用此工具生成只使用Silverlight中可用的WCF子集的代码。由于这是MonoTouch支持的同一个子集,所以这是最好的工具。

如果我解决了命名空间问题,通过Silverlight实用程序创建的存根将使我的项目工作,还是也会受到通用通道问题的影响?

应该管用的。这就是现在人们在MonoTouch中使用( WCF的可用子集)的方式。如果这个(子集/工具)有问题,您可以填写一个关于它的错误报告(用一个测试用例),我们将看看它。

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8274848

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档