实例来自:JustACoderWCF博客简单实例一:1. Service1.csview plaincopy to clipboardprint? namespace WCFStudy1
{
问题一: [ServiceContract]
表示的什么?有什么作用,怎么很多方法的上上面都有这个?
public interface IService1
{
[OperationContract]
string SendMessage(string clientInput);
}
public class Service1 : IService1
{
#region IService1 Members
public string SendMessage(string clientInput)
{
return string.Format("Server Get Message: {0}", clientInput);
}
#endregion
}
} namespace WCFStudy1
{ [ServiceContract] public interface IService1
{ [OperationContract] string SendMessage(string clientInput); } public class Service1 : IService1
{ #region IService1 Members
public string SendMessage(string clientInput) { return string.Format("Server Get Message: {0}", clientInput); }
#endregion } }2. Program.cs 1. using System;
2. using System.Collections.Generic;
3. using System.Linq;
4. using System.Text;
5. using System.ServiceModel;
6.
7. namespace WCFStudy1
8. {
9. class Program
10. {
11. static void Main(string[] args)
12. {
13. // 创建一个独立AppDomain作为服务端。
14. AppDomain.CreateDomain("Server1").DoCallBack(delegate
15. {
16. ServiceHost host = new ServiceHost(typeof(Service1));
17. host.AddServiceEndpoint(typeof(IService1), //契约(C)
18. new BasicHttpBinding(), //绑定(B)
19. "http://localhost:9999/myservice"); //地址(A)
问题二:这里的AppDomain指什么?
契约、绑定、地址有什么怎么回事?
20.
21. host.Open();
22. });
23.
24. // 下面是客户端
25. ChannelFactory<IService1> factory = new ChannelFactory<IService1>(
26. new BasicHttpBinding(),
27. "http://localhost:9999/myservice");
28. IService1 client = factory.CreateChannel();
问题三:“ ChannelFactory<IService1> ”表示什么?有什么功能?
29.
30. var reply = client.SendMessage("Hello WCF");
31. Console.WriteLine(reply);
32.
33. Console.Read();
34. }
35. }
36. }
问题四:“.NetFramwork3.5”下WCF有五个项目类型,分别是“WCF Service Library、Sequential Workflow Service Library、”State Machine Workflow Service Library、WCF Service Application、Syndication Service Library“,这五种项目类型分别表示什么?这个实例应该是哪一种类型的项目?问题五:为什么”客户端“和”服务器端“都在一个类里面。问题六:谁能给俺讲讲这个实例的表是什么意思?
{
问题一: [ServiceContract]
表示的什么?有什么作用,怎么很多方法的上上面都有这个?
public interface IService1
{
[OperationContract]
string SendMessage(string clientInput);
}
public class Service1 : IService1
{
#region IService1 Members
public string SendMessage(string clientInput)
{
return string.Format("Server Get Message: {0}", clientInput);
}
#endregion
}
} namespace WCFStudy1
{ [ServiceContract] public interface IService1
{ [OperationContract] string SendMessage(string clientInput); } public class Service1 : IService1
{ #region IService1 Members
public string SendMessage(string clientInput) { return string.Format("Server Get Message: {0}", clientInput); }
#endregion } }2. Program.cs 1. using System;
2. using System.Collections.Generic;
3. using System.Linq;
4. using System.Text;
5. using System.ServiceModel;
6.
7. namespace WCFStudy1
8. {
9. class Program
10. {
11. static void Main(string[] args)
12. {
13. // 创建一个独立AppDomain作为服务端。
14. AppDomain.CreateDomain("Server1").DoCallBack(delegate
15. {
16. ServiceHost host = new ServiceHost(typeof(Service1));
17. host.AddServiceEndpoint(typeof(IService1), //契约(C)
18. new BasicHttpBinding(), //绑定(B)
19. "http://localhost:9999/myservice"); //地址(A)
问题二:这里的AppDomain指什么?
契约、绑定、地址有什么怎么回事?
20.
21. host.Open();
22. });
23.
24. // 下面是客户端
25. ChannelFactory<IService1> factory = new ChannelFactory<IService1>(
26. new BasicHttpBinding(),
27. "http://localhost:9999/myservice");
28. IService1 client = factory.CreateChannel();
问题三:“ ChannelFactory<IService1> ”表示什么?有什么功能?
29.
30. var reply = client.SendMessage("Hello WCF");
31. Console.WriteLine(reply);
32.
33. Console.Read();
34. }
35. }
36. }
问题四:“.NetFramwork3.5”下WCF有五个项目类型,分别是“WCF Service Library、Sequential Workflow Service Library、”State Machine Workflow Service Library、WCF Service Application、Syndication Service Library“,这五种项目类型分别表示什么?这个实例应该是哪一种类型的项目?问题五:为什么”客户端“和”服务器端“都在一个类里面。问题六:谁能给俺讲讲这个实例的表是什么意思?
绑定就像你指定调用服务的方法方式(飞机,轮船,火车,汽车,都可以到目的地,但总要选一个吧)
通过契约暴露服务,这是WCF的约定,也就是服务必须用 [ServiceContract] 里面必须有 [OperationContract] 数据契约必须用 [DataContract](也不是必须,Serializable就可以)
对于 Contract 理解不了,就死记就好了。1+1必须等于2一样。ChannelFactory就是一个工厂类。通过我指定的A,B,C创建一个客户端代理的实例。
(因为我知道地址,服务的定义(接口),还指定了调用的方式:BasicHttpBinding)还有个AppDomain的概念(简单的说AppDomain就相当于一个“进程”)
这个最简单实例,可能对初学者来说反而不好理解了。总之这个示例就是偷懒的最终结果,不符合实际的WCF应用。不看也罢~呵呵
补充一下,还有寄宿这个概念 也就是那个AppDomain的运用
在某一个进程中划分一段空间,把wcf的服务程序放进该空间中运行