我想實現類似於WCF OData提供程序的東西,但使用NetTcpBinding而不是WebHttpBinding/REST。我希望客戶端能夠編寫透明序列化併發送到服務器(或可能是多個服務器,以整合分佈式數據庫實例)的linq查詢。通過WCF傳遞查詢表達式
執行此操作的一種方法是實現自定義IQueryable提供程序。你可以越過線查詢表達式中(至少)有兩種方式:
1)序列化的表達,XML,發送和反序列化服務器
2)傳遞更有甚者,或無論是DataContracts形式的服務器的原始SQL的前兆
1是困難和簡單的工作,2顯然可能構成安全風險(SQL注入)。例如說一「位置」表達包封並傳遞到像這樣的服務器,
[DataContract]
public class WhereFilter
{
[DataMember]
public string Property { get; set; }
[DataMember]
public string Operation { get; set; }
[DataMember]
public string Value { get; set; }
}
當上述最終表示,指出「在哪裏[SomeColumn] =‘someValue中’的SQL查詢的一部分。
我的問題是WCF客戶端服務器連接是否足夠安全以保證這種方法不會出現太多的安全風險?或者,如果有任何其他方式通過NetTcpBinding實現OData類提供程序,我會感興趣。