我有一个问题,希望有人可以告诉我。
我正在创建一个企业iPhone应用程序,它将捕获信息并将其写入本地服务器。
取决于用户所在的站点,取决于写入信息的服务器。
我创建了一个web服务,我可以在monotouch中使用它并传递信息,然后将其写入本地服务器上的SQL数据库。我面临的问题是如何为我们所有的位置做这个?如果我在每个位置放置一个Web服务,那么每个位置都需要自己的应用程序版本,该应用程序使用他们的webservice进行编写(所有服务器都位于同一网络上并且不是分开的)
我可以通过传递相关的URL来动态使用Web服务吗?
我应该采取其他方法吗?
任何建议都将受到赞赏。
答案 0 :(得分:1)
编辑 - 我可能应该提到我们使用WCF样式的Web服务,这些服务需要使用SISvcUtil.exe
生成绑定(这是WebServiceClient类的来源)。
我们做了类似的事情,我们有一个测试服务器和生产服务器,并且更改Web服务指向的URL很简单。显然,这确实假设在所有不同位置托管的Web服务是相同的......
在创建使用Web服务的Client对象时,您需要指定绑定和endpointaddress,您只需将endpointaddress字符串更改为指向相应的服务器即可。下面的代码应该让您了解如何执行此操作...
BasicHttpBinding binding = new BasicHttpBinding();
binding.OpenTimeout = new TimeSpan(0,1,0);
binding.CloseTimeout = new TimeSpan(0,1,0);
binding.SendTimeout = new TimeSpan(0,1,0);
//snip - any other bindings you need to specify...
string fullDomain;
string domain;
if (local)
domain = "local.server.com";
else
domain = "production.server.com";
fullDomain = string.Format("https://{0}/WebService/Service.svc", domain);
EndpointAddress endpointAddress = new EndpointAddress(fullDomain);
WebServiceClient client = new WebServiceClient(binding, endpointAddress);
答案 1 :(得分:0)
是。应该可以设置构造函数或Url属性,这使您可以在运行时将URL传递给不同的服务端点。
(我在此假设您正在讨论在不同URL上托管的同一Web服务的多个实例)