|
Программирование >> Программирование с использованием ajax
практическое заиятм Контракты WCF 1. Создайте новый проект типа прможения службы WCF (WCF Service Application) по имени Ch35Ex02 и сохраните его в каталоге С: \BegVCSharp\Chapter35. 2. Добавьте в решение проект типа библиотеки классов по имени Ch35ExO IContracts и удалите из него файл Classl. cs. 3. Добавьте в проект Ch35ExOIContracts ссылки на сборки System.Runtime. Serialization.dll и System.ServiceModel.dll. 4. Далее добавьте в этот проект класс с именем Person и измените код в представляющем этот класс файле Person. сs: using System; using System.Collections .Generic-using System.Linq; using System.Text; using System.Runtime.Serialization; namespace Ch35Ex02Contracts { [DataContract] public class Person [DataMember] public string Name { get; set; ) [DataMember] public int Mark { get; set; ) 5. Теперь добавьте в проект класс lAwardService и измените код в представляющем его файле lAwardService. cs следующим образом: using System.Collections.Generic; using System.Linq; using System.Text; using System.ServiceModel; namespace Ch35Ex02Contracts { [ServiceContract(SessionMode=SessionMode.Required)] public interface lAwardService [OperationContract(IsOneWay=true,Islnitiating=true)] void SetPassMar]c(int passMark) ; [OperationContract] Person[] GetAwardedPeople(Person[] peopleToTest); 6. Что касается проекта Ch35Ex01, то сначала добавьте в него ссылку на проект Ch35Ex01Contracts. 7. Затем удалите из проекта Ch35Ex01 файлы IServicel .cs и Servicel.svc. 8. Теперь добавьте в него новую службу WCF с именем AwardService. 11. Измените отвечающий за конфигурацию этой службы раздел в Web. conf ig следующим образом: <system.serviceModel> <services> <service name= Ch35Ex02.AwardService > <endpoint address= binding= wsHttpBinding contract= Ch35Ex02Contracts.lAwardService /> </service> </services> </system.serviceModel> 12. Сделайте AwardService. svc стартовой страницей проекта Ch35Ex02. 13. Запустите проект Ch35Ex02 в режиме отладки и зафиксируйте где-то используемый в браузере URL-адрес (вместе с номером порта, который вскоре потребуется). 14. Остановите процесс отладки и добавьте в решение новый проект типа консольного приложения по имени Ch35Ex02Client. 15. Добавьте в этот проект Ch35Ex02Client ссылку на сборку System. ServiceModel. dll и проект Ch35Ex02Contracts. 16. Измените код в файле Program.cs в этом проекте следующим образом: 9. Далее удалите из него файл lAwardService. cs. 10. Измените код в файле AwardService. svc. cs следующим образом: using System; using System.Collections .Generic-using System.Ling; . using System.Runtime.Serialization; using System.ServiceModel; using System.Text; using Ch35Ex02Contracts; namespace Ch35Ex02 { public class AwardService : lAwardService { private int passMark; public void SetPassMarlc(int passMark) this.passMark = passMark; public Person[] GetAwardedPeople(Person[] peopleToTest) { List<Person> result = new List<Person> () ; foreach (Person person in peopleToTest) { if (person.Mark > passMark) { result.Add(person); return result.ToArray(); using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.ServiceModel; using Ch35Ex02Contracts; namespace Ch35E02Client class Program { static void Mam (string [ ] args) { Person [] people = new Person [] { new Person { Mark = AS, Naine= Jixn ], new Person { Mark = 73, Naine= Mike }, new Person { Mark = 92, Naine= Stefan }, new Person { Mark = 84, Naine= George ), new Person { Mark = 24, Name= Arthur }, new Person { Mark = 58, Name= Nigel } Console.WriteLine( People: ); OutputPeople(people); lAwardService client = ChannelFactory<IAwardService>. CreateChannel ( new WSHttpBinding 0 , new EndpointAddress ( http: localhost: 51425/AwardService. svc )) ; client.SetPassMark(70) ; Person[] awardedPeople = client.GetAwardedPeople(people); Console .WriteLine 0 ; Console.WriteLine ( Awarded people: ) ; OutputPeople(awardedPeople); Console.ReadKey(); static void OutputPeople (Person [] people) foreach (Person person in people) Console.WriteLine( {0}, mark: {!} , person.Name, person.Mark); 17. Запустите приложение. На рис. 35.6 показан результат, который должен получиться. Рис. 35.6. Приложение Ch35Ex02Client в действии
|
© 2006 - 2024 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки. |