Web服務軟體工廠(WSSF)演練之二:建立資料契約和實現業務實體

來源:互聯網
上載者:User

關鍵字:Web Services Software Factory,Data Contracts,Business Entities

如果你已經錯過了本系列的第一部分,請單擊這裡。您將需要完成的第一部分的教程,安裝和設定好您的環境。在這部分您將建立的資料契約、服務契約及業務實體。就像典型的web services,您應該只關注您的商務邏輯和業務實體。以構建自己的WCF。我們繼續,載入您的MyCryptographyService解決方案項目。

按右鍵MyCryptographyService.model項目(注意,不是解決方案,而是下面帶小表徵圖的),並選擇Add –> New Model。

選擇建立一個新的“Data Contract Model”(資料契約模組) 。填寫Mode name(模組名稱)為CryptographyService.DataContracts和XML Namespace(XML命名空間)為http://www.cnblogs.com/LiYunQi/ 。

你現在應該有一個空白的設計地區。並且右側將出現新的Data Contract Exploeer 視窗。點擊該空白色設計地區,然後查看屬性視窗。單擊“Implementation Technology”,並選擇“WCF Extension” 。

您還需要設定 Project Mapping table項目映射表的合約。這是XML文檔(預設情況下,在ProjectMapping.xml,標記了 WSSF中作用於每一個項目和自動產生代碼的說明。此檔案可以編輯和修改)。設定Project Mapping table為我們剛剛建立的MyCryptographyService 。

開啟左側的工具箱,您會發現適應當前設計地區的一些工具,包括用於可序列化對象的Data Contract(資料契約)。用於枚舉類型的Data Contract Enumeration(資料契約枚舉)。用於NET資料類型的Primitive Data Type Collections(未經處理資料類型)。用於Data Contract Collections(資料契約集合)。用於異常的Fault Contracts(故障契約)等。

接下來您需要從工具箱中將一個Data Contract Enumeration”(資料合約枚舉)拖動到設計地區。單擊頂端上的名稱(預設是DataContractEnum1 ) ,並改名為HashType 。按右鍵並選擇添加- > Value 分別添加MD5和SHA256的枚舉。

拖曳另一資料契約枚舉到設計地區,並將其命名為EncryptionAlgorithm1 。添加兩個值為DES和Rijndael演算法的枚舉。當您完成時您設計地區應該是這個樣子。

現在,從工具箱上拖動一個“Data Contract”到設計地區。改名為HashObject以相同的方式重新命名列舉。按右鍵添加新的Primitive Data Type。此屬性名稱“StringToHash”。

讓我們現在就看看你剛剛添加的Primitive Data Type。它有一個Type屬性是System.String及order屬性為0 。今後可以在這裡添加、修改這些屬性,現在我們可以接受預設值。

現在,從工具箱選擇Aggregation工具,然後按一下HashType枚舉,按住滑鼠按鍵,拖動串連到HashObject 。HashObject將建立一個新的HashType。設定其order為1 。

在設計地區,您的HashObject和HashType看起來應該如所示。

您還應該通過拖動建立另一個“Data Contract”,命名為 EncryptionObject。添加Text member 建立好與EncryptionType關聯。當您完成時,你應該有這四個對象在您的設計地區。

按右鍵空白設計地區的任何地區,並點擊“全部驗證” 。應該沒有任何錯誤。否則,請檢查上述操作步驟。

下一步,右鍵點擊一些空白,並點擊“Generate Code”。

在MyCryptographyService.DataContracts項目(在解決方案檔案夾Service Interface下)的“Generated Code”檔案夾中你會發現,一些類庫項目已經產生。請記住,每當您更改您的資料契約,這些類庫項目及自動產生的程式碼將被覆蓋。

按右鍵MyCryptographyService.BusinessEntities類庫項目(Business Logic解決方案檔案夾下),並添加一個類。命名為CryptographicEntities.cs 。在這個檔案中,我們將確定所有的商務邏輯實體的資料模型,使他們能夠在其他地方使用我們的解決方案。通常,你會採取一些你自己的方式來構建業務實體層,本教程中請用以下代碼來替換。CryptographicEntities.cs (using部分除外)以下為代碼。

namespace MyCryptographyService.BusinessEntities{    public enum EncryptionAlgorithm    {        DES = 0,        Rijndael = 1    }    public enum HashType    {        MD5 = 0,        SHA256 = 1    }    public class EncryptionObject    {        public string Text { get; set; }        public EncryptionAlgorithm EncryptionAlgorithm { get; set; }    }    public class HashObject    {        public string StringToHash { get; set; }        public HashType HashType { get; set; }    }}

現在,右鍵點擊MyCryptographyService.ServiceImplemenation項目,並選擇“Create Translator”。

在First Class to map,選擇DataContracts.EncryptionObject 。在Second Class to map,選擇BusinessEntities.EncryptionObject 。Mapping class name 輸入EncryptionObjectTranslator ,Mapping class XNL namespace保持MyCryptographyService.ServiceImplementation 。

在每一個列表框中選擇Text屬性,並單擊map。然後單擊完成。你不能手動修改map對話方塊產生的手動。只要你不在此運行“Create Translator”,您不必擔心覆蓋手動更改。事實上,我建議一旦你的指導方針和維護手動這樣。

重複此過程,這次我們選擇HashObjects 。Mapping class name 輸入HashObjectTranslator ,在每一個列表框中選擇圖StringToHash屬性。下一步,開啟MyCryptographyService.ServiceImplementation項目下產生的程式碼。應該如下所示: (請注意,我的命名空間別名,使其短,容易與) 。

HashObjectTranslator:

using System;using MyCryptographyService.DataContracts;using MyCryptographyService.BusinessEntities;namespace MyCryptographyService.ServiceImplementation{    public static class HashObjectTranslator    {        public static MyCryptographyService.DataContracts.HashObject TranslateHashObjectToHashObject(MyCryptographyService.BusinessEntities.HashObject from)        {            MyCryptographyService.DataContracts.HashObject to = new MyCryptographyService.DataContracts.HashObject();            to.StringToHash = from.StringToHash;            return to;        }        public static MyCryptographyService.BusinessEntities.HashObject TranslateHashObjectToHashObject(MyCryptographyService.DataContracts.HashObject from)        {            MyCryptographyService.BusinessEntities.HashObject to = new MyCryptographyService.BusinessEntities.HashObject();            to.StringToHash = from.StringToHash;            return to;        }    }}

EncryptionObjectTranslator:

using System;using MyCryptographyService.DataContracts;using MyCryptographyService.BusinessEntities;namespace MyCryptographyService.ServiceImplementation{    public static class EncryptionObjectTranslator    {        public static MyCryptographyService.DataContracts.EncryptionObject TranslateEncryptionObjectToEncryptionObject(MyCryptographyService.BusinessEntities.EncryptionObject from)        {            MyCryptographyService.DataContracts.EncryptionObject to = new MyCryptographyService.DataContracts.EncryptionObject();            to.Text = from.Text;            return to;        }        public static MyCryptographyService.BusinessEntities.EncryptionObject TranslateEncryptionObjectToEncryptionObject(MyCryptographyService.DataContracts.EncryptionObject from)        {            MyCryptographyService.BusinessEntities.EncryptionObject to = new MyCryptographyService.BusinessEntities.EncryptionObject();            to.Text = from.Text;            return to;        }    }}

現在您應該能夠成功地產生您的項目並為第3部分做好了準備。如果您有任何問題,請留下您的評論,我會儘快回複您。下一步,我們將建立和實現服務契約。

Web服務軟體工廠(WSSF)演練之三:建立服務契約和實現方法

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.