介尘部落

文学|音乐|休闲娱乐|计算机技术|地球科学|社会学——知识成就命运


概念

具象状态传输 (Representational State Transfer, REST) 的体系结构风格。

Windows Communication Foundation (WCF)。

REST 的约束采用的就是掌控 Web 的基本原则。这些原则是:

  • 用户代理与资源交互,任何可命名和表达的事物都可称为资源。每项资源都有一个唯一的统一资源标识符 (URI)。
  • 与资源的交互(通过其唯一的 URI 定位)使用 HTTP 标准动词(GET、POST、PUT 和 DELETE)的统一接口完成。交互中声明资源的媒体类型也很重要,它使用 HTTP 内容类型标头指定。(XHTML、XML、JPG、PNG 和 JSON 就是一些广为人知的媒体类型。)
  • 资源是自我描述的。处理资源请求所需的全部信息均包含在请求本身内(这样服务可以没有状态)。
  • 资源包含到其他资源的链接(超媒体)。

model定义

using System.Runtime.Serialization;
namespace Model
{
    [DataContract]
    public class UserModel
    {
        [DataMember]
        public int ID { get; set; }
        [DataMember]
        public string UserName { get; set; }
        [DataMember]
        public string PassWord { get; set; }
        [DataMember]
        public int Age { get; set; }
        public override string ToString()
        {
            return string.Format("ID:{0};姓名: {1};年龄:{2};密码:{3}",ID, UserName, Age, PassWord);
        }
    }
}

此处要注意[DataContract],[DataMember]在命名空间using System.Runtime.Serialization下面;

WCF ServiceContract 定义

[ServiceContract]
public interface IMSDNMagazineService
{
    [OperationContract]
    [WebGet(UriTemplate="/")]
    IssuesCollection GetAllIssues();
    [OperationContract]
    [WebGet(UriTemplate = "/{year}")]
    IssuesData GetIssuesByYear(string year);
    [OperationContract]
    [WebGet(UriTemplate = "/{year}/{issue}")]
    Articles GetIssue(string year, string issue);
    [OperationContract]
    [WebGet(UriTemplate = "/{year}/{issue}/{article}")]
    Article GetArticle(string year, string issue, string article);
    [OperationContract]
    [WebInvoke(UriTemplate = "/{year}/{issue}",Method="POST")]
    Article AddArticle(string year, string issue, Article article);
}
[OperationContract]
[WebHelp(Comment = "Returns the item in JSON format.")]
[WebGet(UriTemplate = "?format=json", ResponseFormat = WebMessageFormat.Json)]
TItem GetItemInJson();
[OperationContract]
[WebHelp(Comment = "Returns the item in XML format.")]
[WebGet(UriTemplate = "")]
TItem GetItemInXml();
[WebHelp(Comment = "Initializes the item based on the incoming JSON.")]
[OperationContract]
[WebInvoke(Method = "POST", UriTemplate = "?format=json", ResponseFormat=WebMessageFormat.Json)]
TItem AddItemInJson(TItem initialValue);

WCF服务宿主方式

1、ServiceHost方式

阅读全文
公众号-介尘阅读时光
赞赏支持

0 Responses to “基于WCF的Restful架构简述”

Leave a Reply

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

(required)

(required)

×