C# WCF简单入门图文教程(VS2010版)
WCF(Windows Communication Foundation)是一个用于构建分布式应用程序的框架。它提供了一种统一的编程模型,使得开发人员可以使用不同的传输协议和编码方式来实现分布式应用程序。本文将详细讲解如何使用C# WCF进行简单入门,并提供两个示例。
1. 创建WCF服务
首先,我们需要创建一个WCF服务。可以使用Visual Studio来创建一个基本的WCF服务。在创建服务时,需要选择一些基本的配置,如服务名称、服务契约、绑定、终结点等。创建完成后,可以在Visual Studio中打开服务,并运行它。
2. 创建服务契约
接下来,我们需要创建一个服务契约。服务契约用于定义服务的操作和数据类型。可以使用ServiceContract和OperationContract属性来标记服务契约和操作。在服务契约中,可以定义一些方法来实现服务的操作。可以使用DataContract和DataMember属性来标记数据类型和数据成员。
[ServiceContract]
public interface IMyService {
[OperationContract]
string SayHello(string name);
}
[DataContract]
public class Person {
[DataMember]
public string Name { get; set; }
[DataMember]
public int Age { get; set; }
}
在上面的代码中,我们创建了一个名为IMyService的服务契约,并使用ServiceContract和OperationContract属性标记它。我们还创建了一个名为Person的数据类型,并使用DataContract和DataMember属性标记它的数据成员。
3. 实现服务契约
在创建服务契约后,我们需要实现它。可以创建一个类来实现服务契约,并使用ServiceBehavior属性来标记它。在实现类中,可以实现服务契约中定义的方法。
[ServiceBehavior]
public class MyService : IMyService {
public string SayHello(string name) {
return "Hello, " + name + "!";
}
}
在上面的代码中,我们创建了一个名为MyService的类,并使用ServiceBehavior属性标记它。我们还实现了IMyService服务契约中定义的SayHello方法。
4. 配置服务
在实现服务契约后,我们需要配置服务。可以使用Web.config或App.config文件来配置服务。在配置文件中,可以指定服务的绑定、终结点、行为等。
<system.serviceModel>
<services>
<service name="MyService">
<endpoint address="" binding="basicHttpBinding" contract="IMyService" />
</service>
</services>
</system.serviceModel>
在上面的代码中,我们使用services元素来指定服务的名称和终结点。我们还使用endpoint元素来指定终结点的地址、绑定和契约。
5. 运行服务
在完成上述步骤后,我们可以运行服务,并访问它的终结点。可以使用浏览器或者其他HTTP客户端工具来访问终结点。由于我们在服务契约中定义了SayHello方法,并实现了它,因此服务可以正常处理请求,并返回"Hello, name!"字符串。
6. 示例1:使用WCF创建RESTful API
以下是使用WCF创建RESTful API的基本流程:
- 创建一个WCF服务。
在Visual Studio中创建一个WCF服务。
- 创建服务契约。
[ServiceContract]
public interface IMyService {
[OperationContract]
[WebInvoke(Method = "GET", UriTemplate = "/hello/{name}")]
string SayHello(string name);
}
在上面的代码中,我们在服务契约中使用WebInvoke属性来标记SayHello方法,并指定了HTTP方法和URI模板。
- 实现服务契约。
[ServiceBehavior]
public class MyService : IMyService {
public string SayHello(string name) {
return "Hello, " + name + "!";
}
}
在上面的代码中,我们实现了IMyService服务契约中定义的SayHello方法。
- 配置服务。
在Web.config文件中添加以下配置:
<system.serviceModel>
<services>
<service name="MyService">
<endpoint address="" binding="webHttpBinding" contract="IMyService" behaviorConfiguration="webBehavior" />
</service>
</services>
<behaviors>
<endpointBehaviors>
<behavior name="webBehavior">
<webHttp />
</behavior>
</endpointBehaviors>
</behaviors>
</system.serviceModel>
在上面的代码中,我们使用endpoint元素来指定终结点的地址、绑定和契约。我们还使用behaviorConfiguration属性来指定终结点的行为。
- 运行服务,并访问/hello/{name}接口。
在完成上述步骤后,我们可以运行服务,并访问/hello/{name}接口。由于我们在服务契约中定义了SayHello方法,并实现了它,因此服务可以正常处理请求,并返回"Hello, name!"字符串。
7. 示例2:使用WCF连接MySQL数据库
以下是使用WCF连接MySQL数据库的基本流程:
- 添加MySQL依赖。
在Visual Studio中添加MySQL连接器的依赖。
- 创建一个实体类。
[DataContract]
public class User {
[DataMember]
public int Id { get; set; }
[DataMember]
public string Name { get; set; }
[DataMember]
public int Age { get; set; }
}
在上面的代码中,我们创建了一个名为User的实体类,并使用DataContract和DataMember属性标记它的数据成员。
- 创建一个Repository类。
public class UserRepository {
private MySqlConnection connection;
public UserRepository(string connectionString) {
connection = new MySqlConnection(connectionString);
}
public List<User> FindAll() {
List<User> users = new List<User>();
string query = "SELECT * FROM user";
MySqlCommand command = new MySqlCommand(query, connection);
connection.Open();
MySqlDataReader reader = command.ExecuteReader();
while (reader.Read()) {
User user = new User();
user.Id = reader.GetInt32(0);
user.Name = reader.GetString(1);
user.Age = reader.GetInt32(2);
users.Add(user);
}
reader.Close();
connection.Close();
return users;
}
}
在上面的代码中,我们创建了一个名为UserRepository的Repository类,并实现了FindAll方法。在FindAll方法中,我们使用MySQL连接器来查询数据库中的所有用户信息,并将其转换为User对象。
- 创建一个服务契约。
[ServiceContract]
public interface IUserService {
[OperationContract]
List<User> FindAll();
}
在上面的代码中,我们创建了一个名为IUserService的服务契约,并定义了一个名为FindAll的方法。
- 实现服务契约。
[ServiceBehavior]
public class UserService : IUserService {
private UserRepository userRepository;
public UserService() {
string connectionString = "server=localhost;user=root;database=mydb;port=3306;password=123456;";
userRepository = new UserRepository(connectionString);
}
public List<User> FindAll() {
return userRepository.FindAll();
}
}
在上面的代码中,我们创建了一个名为UserService的类,并实现了IUserService服务契约中定义的FindAll方法。在UserService类的构造函数中,我们创建了一个UserRepository对象,并传入MySQL数据库的连接字符串。
- 配置服务。
在Web.config文件中添加以下配置:
<system.serviceModel>
<services>
<service name="UserService">
<endpoint address="" binding="basicHttpBinding" contract="IUserService" />
</service>
</services>
</system.serviceModel>
在上面的代码中,我们使用endpoint元素来指定终结点的地址、绑定和契约。
- 运行服务,并访问/users接口。
在完成上述步骤后,我们可以运行服务,并访问/users接口。由于我们在服务契约中定义了FindAll方法,并实现了它,因此服务可以正常处理请求,并返回数据库中的所有用户信息。
8. 总结
本文详细讲解了如何使用C# WCF进行简单入门,并提供了两个示例。在使用WCF时,我们可以快速创建服务、轻松连接数据库、方便地创建RESTful API等。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:C# WCF简单入门图文教程(VS2010版) - Python技术站