在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
Calling Web Service Methods from Script 为了简化Web Services方法调用,客户端代理的设计被改变了,它在方法调用和回调函数设置方面提供了强大的灵活性。 下面的例子展示了CTP版本中Web Services方法的客户端调用,以及回调函数的使用方式。第一个例子展示了在CTP版本中Web service的定义方式。如下:
public class MyService: System.Web.Services.WebService
{ [WebMethod] public string MyWebMethod(int param1, string param2) { ... } } 下一个例子展示了CTP版本中调用上述方法的客户端代码。如下:
// Invoke method, specifying a "succeeded" callback function.
MyNS.MyService.MyMethod(126, "my value", OnComplete, OnTimeout, OnError, onAborted, "MyUserContext"); // Callback function. function OnComplete(result, response, userContext) { // Use result. } 下面的两个例子展示了上述代码在RTM版本的相应的定义与使用方式。RTM版本中服务器端方法的定义方式和下面的例子类似。如下:
[ScriptService]
public class MyService: System.Web.Services.WebService { [WebMethod] public string MyMethod(int param1, string param2) { ... } } RTM版本中访问服务器端方法的客户端代码与下面的例子类似。如下:
// Invoke method, specifying callback functions and user context.
MyNS.MyService.MyMethod(126, "my value", OnSuccess, OnFailure, "MyUserContext"); // Callback function function OnSuccess(result, userContext, methodName) { // Use result. } 在RTM版本中,您能够指定一个默认的回调函数和默认的user context,这样访问Web Service方法时就无需指定那些参数了。下面的客户端代码设置了默认的回调函数和user context,然后使用不同的参数连续调用了两次Web Services方法。
var Fs = MyNS.MyService;
Fs.set_defaultSucceededCallback(OnSuccess); Fs.set_defaultFailedCallback(OnFailure); Fs.set_defaultUserContext("MyUserContext"); Fs.set_timeout(100); // Invoke method without specifying callback functions or user context. Fs.MyMethod(126, "value one"); Fs.MyMethod(456, "value two"); Server Attributes 在CTP版本中,使用了.NET Framework中服务器端的自定义属性,以此对Web Services方法进行特定的控制。在RTM版本中引入了新的自定义属性来提供这些功能。这些改变的原因是考虑到安全因素,以及避免复用现有类库所带来的语义上的差别。 针对Web Service方法的改变有:
Support for WCF Web Services 在RTM版本里,您已经无法从客户端访问Windows Communication Foundation (WCF) Web Services(.svc文件)了。访问WCF的能力将会被一个增强的实现所替代,在接下来的“Orcas”CTP中将有对于WCF的完全集成。 Advanced Networking Scenarios Not Available in the RTM Release CTP版本内的下列功能在RTM版本中被取消了:
Application Services 在RTM版本中,我们为客户端使用Authentication服务和Profile服务提供了一个简化的并且更为灵活的设计。这个设计与前面讲过的客户端访问Web Services方法保持了统一。 Profile Services RTM版本的Profile服务使用了Web Service客户端代理的模型,而没有单独作为一个组件而实现。但是,Value-add包内提供了一个Profile服务组件的实现。 CTP版本和RTM版本中关于Profile服务的主要改变有以下几点:
Value-add包提供的Profile服务缩小了CTP版本中的Profile组件和RTM版本中Profile代理之间的距离。它有以下一些功能:
下列示例展示了Profile服务的使用方式。第一个示例展示了如何加载Profile信息。如下:
// Load specific properties, after setting default completed
// and failed callback functions. Sys.Services.ProfileService.load(["SimpleProperty", "Group.GroupedProperty"]); // Load all properties marked as "read access" in the Web service, // after setting default completed and failed callback functions. Sys.Services.ProfileService.load(); // Specify explicit callbacks rather than using defaults. "88" is // passed to the callback function as user context. Sys.Services.ProfileService.load(props, loadCompletedCallback, failedCallback, 88); 下面的示例展示了访问Profile属性的方法。如下:
var x = Sys.Services.ProfileService.properties.SimpleProperty;
var x = Sys.Services.ProfileService.properties.Group.GroupedProperty1; var x = Sys.Services.ProfileService.properties.Group.GroupedComplexTypeProperty.AddressLine1; 下面的示例展示了改变Profile属性的方式。如下:
Sys.Services.ProfileService.properties.SimpleProperty = "value";
if(!Sys.Services.ProfileService.properties.Group) { Sys.Services.ProfileService.properties.Group = new Sys.Services.ProfileGroup(); } Sys.Services.ProfileService.properties.Group.GroupedProperty1 = "group value"; Sys.Services.ProfileService.properties.Group.GroupedComplexTypeProperty = { AddressLine1: "abc", AddressLine2: "xyz" }; 下面的示例展示了保存Profile属性的方式。如下:
// Save specific properties, after setting default success and
// fail callback functions. Sys.Services.ProfileService.save(["SimpleProperty", "Group.GroupedProperty"]); // Save all properties in the .properties object, after // setting default completed and failed callback functions. Sys.Services.ProfileService.save(); // Specify explicit callbacks, rather than using defaults. "88" is // passed to the callback function as user context. Sys.Services.ProfileService.save(props, saveCompletedCallback, failedCallback, 88); 下面的示例展示了completed回调函数参数信息。如下:
function loadCompletedCallback(numPropertiesLoaded, userContext, methodName) {...}
function saveCompletedCallback(numPropertiesSaved, userContext, methodName) {...} 下面的示例展示了failed回调函数的参数信息。如下:
function failedCallback(errorObject, userContext, methodName) {...}
Autentication Service CTP版本和RTM版本中Authentication服务的改变有以下几点:
下面的示例表示了如何在RTM版本如何使用Authentication服务。如下:
var loggedIn = Sys.Services.AuthenticationService.get_isLoggedIn();
Sys.Services.AuthenticationService.login(userLogin, userPassword, isPersistentCookie, customInfo, redirectUrl, loginCompletedCallback, failedCallback, userContext); Sys.Services.AuthenticationService.logout(redirectUrl, logoutCompletedCallback, failedCallback, userContext); 下面的示例展示了completed回调函数的参数信息。如下:
function loginCompleted(validCredentials, userContext, methodName) {...}
下面的示例展示了failed回调函数的参数信息。如下:
function loginFailed(errorObject, userContext, methodName) {...}
|
请发表评论