我有一个旧的WindowsCE手机应用程序。我想为Windows Phone 8创建一个类似的应用程序。我最初的计划是重用旧的C#代码,特别是对于业务模型,并为新的UI / UX花费新的精力。
我的业务逻辑基于WSDL SOAP Web服务。我有一个发布WSDL的java Web服务器,我在旧的Visual Studio中添加了一个Web引用,我在两个对等体(客户端/服务器)之间的通信很好。
然而,在Visual Studio 2013中,有很多东西是不同的。特别是缺少一些基本标题。例如,使用最新的4.5 SDK框架时可以访问System.Web.Service。
有没有机会重用我的旧代码。我的解决方案中可以有两个单独的项目吗?例如,旧代码可以与主项目分离。可以以某种方式创建一个外部库,使用旧代码触发Web服务,并在Windows Phone 8应用程序中包含该库?
答案 0 :(得分:0)
有没有机会重用我的旧代码。我的解决方案中可以有两个单独的项目吗?例如,旧代码可以与主项目分离。可以以某种方式创建一个外部库,使用旧代码触发Web服务,并将该库包含在Windows Phone 8应用程序中?
有些如何,但你必须重写Client的大部分内容,使得与服务的连接
我的业务逻辑基于WSDL SOAP Web服务。我有一个发布WSDL的java Web服务器,我在旧的Visual Studio中添加了一个Web引用,并且我在两个对等体(客户端/服务器)之间的通信很顺利。
如果你已经在ServiceReference和View之间有一个图层,你可以将该图层作为接口移植,并在WP8(甚至是可移植的)类库中进行实现,以便在WP8项目中使用它
答案 1 :(得分:0)
特别缺少一些基本标题。
您可以使用
公共类SoapHeader:MessageHeader { protected override void OnWriteStartHeader(XmlDictionaryWriter writer,MessageVersion messageVersion) { base.OnWriteStartHeader(writer,messageVersion); }
protected override void OnWriteHeaderContents(XmlDictionaryWriter writer, MessageVersion messageVersion)
{
writer.WriteStartElement("xx");
writer.WriteXmlAttribute("xmlns", "http://xx");
writer.WriteString("xx");
writer.WriteEndElement();
}
SoapHeader authSoapdHd = new SoapHeader(); BasicHttpBinding binding = new BasicHttpBinding(BasicHttpSecurityMode.None);
MyPrintWebServiceSoapClient ws = new MyPrintWebServiceSoapClient();
ws.ChannelFactory.Endpoint.Address = new EndpointAddress(new Uri(xxx.asmx"));
ws.InnerChannel.OperationTimeout = TimeSpan.FromMilliseconds(6000);
using (OperationContextScope scope = new OperationContextScope(ws.InnerChannel))
{
OperationContext.Current.OutgoingMessageHeaders.Add(authSoapdHd);
ws.LogInCompleted += ws_LogInCompleted;
LogInRequest request = new LogInRequest(xxx, yyy);
ws.LogInAsync(request);
}