目前,我有一個將消息放入存儲隊列(由另一個雲服務拉動)的Windows Azure雲服務項目(Service1),然後再將消息從不同的存儲隊列。根據此服務接收到的消息,可以將對象添加到SQL Azure數據庫。到目前爲止,我已經添加到隊列工作中,並且我創建了一個服務庫,其中包含SQL數據庫的實體數據模型,目前爲止只有一個表tblCustomers。該項目具有Web角色來顯示進入的客戶,以及一個工作人員角色以將客戶發送到另一個服務進行處理。我使用XMLSerializer將客戶對象序列化爲xml,並將該xml消息發送到隊列。序列化代碼:在Azure雲服務之間共享實體框架
//Serialize Lead to XML
StringBuilder sbLead = new StringBuilder();
var serializer = new XmlSerializer(typeof(Lead));
using (var writer = XmlWriter.Create(sbLead))
{
serializer.Serialize(writer, objLead);
}
String xml = sbLead.ToString();
//Create and send message
var message = new CloudQueueMessage(xml);
clarityQueue.AddMessage(message);
客戶實體對象:
public partial class Customer
{
public int ID { get; set; }
public string FirstName { get; set; }
public string MiddleName { get; set; }
public string LastName { get; set; }
public string AddressLine1 { get; set; }
public string AddressLine2 { get; set; }
public string ZipCode { get; set; }
public string EmailAddress { get; set; }
public string HomePhone { get; set; }
public string CellPhone { get; set; }
public string SSN { get; set; }
public string DateOfBirth { get; set; }
public string IDState { get; set; }
public string IDNum { get; set; }
public string Status { get; set; }
public Nullable<System.DateTime> DateCreated { get; set; }
public Nullable<System.DateTime> DateApproved { get; set; }
}
現在我需要拉該消息從隊列中與不同的服務(服務2)和反序列化。問題是,到目前爲止,Service2並不知道如何對Lead進行反序列化,因爲它不知道Lead是如何構建的。我知道我可以將服務庫DLL從Service1添加到服務2中,並且我的問題將得到解決,但是隨後每次實體框架更改時都必須複製一個DLL,這可能會經常發生。我認爲在兩個項目中都有一個單獨的實體模型是不好的做法,但我也不覺得WCF服務庫是合適的,因爲我需要Cloud服務和WCF服務都運行,並且在那時我可能會以及使整個項目成爲WCF服務。那不是目標。
我的問題是,在多種不同解決方案中使用實體對象的最佳做法是什麼(Service1和Service2必須位於不同的解決方案中)?我覺得這是一個比較常見的問題,但通過Azure培訓套件並在網上搜索幾個小時後,我還沒有提出任何問題。
編輯: 要明確的事情了,所有我在尋找的是一個方法,從一個Azure雲服務發送一個實體對象到另一個使用存儲隊列。即將客戶對象從Service1發送到StorageQueue,然後使用Service 2從StorageQueue中檢索同一個客戶對象。服務分爲兩個獨立的解決方案。我需要知道如何在Service1和Service2中定義Customer(它是數據庫中的表格表示的對象)
此問題不是特定於Azure,SQL Azure或實體框架。您的問題很簡單:跨項目共享數據合同的最佳做法是什麼?有什麼方法可以使這個更簡潔一點? –
問題是如何在雲服務項目中做到這一點。我假設項目類型之間的最佳做法不同。例如,如果我正在構建一個WCF服務,我將創建一個服務庫,並讓其他項目添加服務引用,但我不知道如何執行與雲服務等效的操作。我可以在包含我的雲服務項目的解決方案中添加一個wcf服務庫,但是在一個解決方案中,我有兩種不同的服務。如果這樣做不是理想的......我想用天藍色的雲服務和存儲隊列來實現一切。 –