将服务引用添加到项目中是否可以接受编程实践,其中被引用的服务是在同一VS项目中定义的?(服务和服务参考在同一个项目中)
例:
MyWebAppProj
-Services
--MyService
-Service References
--MyServiceServiceReference.MyServiceClient
-Default.aspx.cs使用MyServiceServiceReference.MyServiceClient
这背后的理性是可以在项目中添加Silverlight应用程序.如果是,我们将不得不通过服务层公开所有业务逻辑方法,所以为什么不首先这样做,并在任何地方使用它们在网页和Silverlight页面之间保持标准化.
我有一个配置了以下属性的服务
[ServiceBehavior(ConcurrencyMode = ConcurrencyMode.Multiple, InstanceContextMode = InstanceContextMode.Single)]
public class UserService : IUserServiceContract
{}
Run Code Online (Sandbox Code Playgroud)
我应该在此方案中使用服务中实现的方法的锁定机制吗?
如果是,这是正确的实施吗?
[ServiceBehavior(ConcurrencyMode = ConcurrencyMode.Multiple, InstanceContextMode = InstanceContextMode.Single)]
public class UserService : IUserServiceContract
{
private readonly object LockObject = new object();
public Object1 GetObject1()
{
lock (LockObject)
{
using (var ob = new Object1)
{
return ob.Get();
}
}
}
public Object2 GetObject2()
{
lock (LockObject)
{
using (var ob = new Object2)
{
return ob.Get();
}
}
}
}
Run Code Online (Sandbox Code Playgroud) 我知道当您将Web服务与直接代码进行比较时,性能可能会成为问题.但随着SOA的兴起,我不得不怀疑我是否应该计划将我的应用程序中的每个业务对象都放到Web服务中,无论是WCF还是.asmx.
.NET 4中对WCF的改进绝对让我给出了第二眼.
我有一个WCF服务,我将一堆对象从服务器传递到客户端,我想要做的是知道究竟是什么传递给客户端.
如何查看通过线路发送的未加密的序列化有效负载?
我有一个ASP.net应用程序,目前使用SOAP Web服务.这个平台的目标是.net 2.0,我使用Visual Studio Professional 2005进行维护.我现在需要在同一个应用程序中使用大量的restful Web服务.
与使用HttpClient相比,使用WCF的Restful Web服务的消耗是如此微不足道,因此值得花费升级到Visual Studio 2008和.Net 3.5框架的成本和时间
我有一个提供Login方法的WCF服务.客户端需要调用此方法(因为它是唯一的IsInitiating = true).在任何情况下,此方法都应返回一个描述调用成功的字符串.如果登录失败,则应关闭连接.
问题在于收盘时间.我想发送返回值,然后立即关闭连接.
string Login (string name, string pass)
{
if (name != pass) {
OperationContext.Current.Channel.Close ();
return "fail";
}
else {
return "yay";
}
}
Run Code Online (Sandbox Code Playgroud)
在MSDN指出,呼吁Close在通道上
导致ICommunicationObject从Opened状态正常转换为Closed状态.Close方法允许在返回之前完成任何未完成的工作.例如,完成发送任何缓冲的消息).
这对我来说不起作用(或者我的理解是错误的),因为close立即执行--WCF不等待Login方法完成执行并返回字符串但是先关闭连接.
因此,我假设调用Close不会等待运行方法完成.现在,我怎么还能返回一个值,然后关闭?
在我的绝望中,我尝试了以下,但这不是一个严肃的解决方案.
new Thread (() => {
Thread.Sleep (100);
OperationContext.Current.Channel.Close ();
}).Start ();
Run Code Online (Sandbox Code Playgroud) 今天是个好日子...
我收到一个意外的WCF错误,抱怨"已知类型",它们的名称相似,但在不同的名称空间中(请参阅下面的错误).
...请记住我还在试验这一切.
也…
我已经理解了常规Web服务的性质FORCES你要展平你的对象层次结构,但我读过的所有内容都表明你不必用WCF做到这一点......这就是为什么我要尝试这个.
所以我的问题是......
基本错误是......
类型'wcfFISH.StateManagement.Contractor.New'无法添加到已知类型列表中,因为已存在具有相同数据协定名称'wcfFISH.StateManagement.Contractor:New'的另一种类型'wcfFISH.StateManagement.CostDivision.New'.
错误看起来像......
An ExceptionDetail, likely created by IncludeExceptionDetailInFaults=true, whose value is:
System.InvalidOperationException: An exception was thrown in a call to a WSDL export extension: System.ServiceModel.Description.DataContractSerializerOperationBehavior
contract: http://tempuri.org/:IFishData ----> System.InvalidOperationException: Type 'wcfFISH.StateManagement.Contractor.New' cannot be added to list of known types since another type 'wcfFISH.StateManagement.CostDivision.New' with the same data contract name 'wcfFISH.StateManagement.Contractor:New' is already present.
at System.Runtime.Serialization.DataContract.CheckAndAdd(Type type, Dictionary`2 typesChecked, Dictionary`2& nameToDataContractTable)
at System.Runtime.Serialization.DataContract.ImportKnownTypeAttributes(Type type, Dictionary`2 typesChecked, Dictionary`2& knownDataContracts)
at System.Runtime.Serialization.DataContract.ImportKnownTypeAttributes(Type type) …Run Code Online (Sandbox Code Playgroud) 如何从代码中获取WCF启用Silverlight的服务的所有方法的列表.
我已经添加了Silverlight应用程序的服务引用.
我可以使用Reflection获得所有方法吗?
如果可以请提供我的例子.
是否可以检查wcf服务的现有可用连接数?编程?
我想看看是否在ASP.NET代码中正确关闭了与Web服务的连接.谢谢
您能告诉我WCF客户端和非WCF客户端之间有什么区别吗?
当我使用生成SvcUtil工具WCF服务的代理,并把在客户端,是什么创造 - WCF客户端或者非WCF客户端?
我应该何时使用WCF客户端和非WCF客户端?
wcf ×10
.net ×4
c# ×2
asmx ×1
asp.net-mvc ×1
known-types ×1
rest ×1
silverlight ×1
wcf-client ×1
web-services ×1