У меня есть служба WCF, которую я создал и работает. На данный момент это очень базовая услуга и имеет следующий код:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Runtime.Serialization;
using System.ServiceModel;
using System.Text;
using System.ServiceModel.Activation;
[ServiceContract(Namespace = "TestServiceNameSpace")]
[AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Allowed)]
public class MyTestService
{
[OperationContract]
public MyNamespace.MyCompoundType ReturnMyCompoundType()
{
return new MyNamespace.MyCompoundType { DateVal = DateTime.Now, IntegerVal = 256, StringVal = "Pedro's test" };
}
}
Ниже приведен класс MyCompoundType
using System.Runtime.Serialization;
using System;
using System.ComponentModel;
namespace MyNamespace
{
[DataContract]
public class MyCompoundType : IMyCompoundType
{
[DataMember]
public int IntegerVal { get; set; }
[DataMember]
public string StringVal { get; set; }
[DataMember]
public DateTime DateVal { get; set; }
}
}
Теперь, когда я посмотрел на файл JS для этой службы, перейдя к http://localhost/MyTestService.svc/jsdebug (который я затем использую для выполнения своих вызовов Ajax), я заметил, что для MyCompoundType не создан прокси-сервер. поэтому, когда я включаю этот JS-файл, все работает нормально, и я могу позвонить в службу, но я не могу объявить переменную javascript типа MyCompoundType (это прокси-тип). Это вообще возможно? Основная часть этого заключается в том, чтобы мы использовали функциональность intellisense в javascript, чтобы избежать ошибок, подобных тому, что кто-то печатает:
var mycompundTypeReturn = returnValueFromWCFCall;
alert(mycompoundTypeReturn.StrVal); //this will give us an error because mycompoundTypeReturn.StrVal does not exist, only mycompoundTypeReturn.StringVal exists
Можно ли сгенерировать прокси-файл JS, используя svcutil.exe и указав более подробную информацию? Есть ли какие-то атрибуты, которые я пропустил? Это вообще возможно? Имеет ли это смысл при использовании WCF?
Любая помощь будет принята с благодарностью, или даже ответ «Вы тратите свое время на это, это невозможно, и вы упустили смысл WCF» будет оценен.
Спасибо