0

我有一个在 Azure App Service 上运行的 Servlet(Jersey2 + Jax-rs) API 应用程序。

此 API 正在从 Azure 表存储中检索数据并将其发送回客户端。

所以这是我的问题,在实现 Azure Storage SDK 的“静态方法”和“实例”之间哪个更好。

例如我的代码是什么样的,

public class AzureTableStorage {

    private static final String storageConnectionString = "DefaultEndpointsProtocol=http;" + "AccountName=;"
            + "AccountKey=";

    public static CloudTable getTable() {
        try {

            CloudStorageAccount storageAccount = CloudStorageAccount.parse(storageConnectionString);

            CloudTableClient tableClient = storageAccount.createCloudTableClient();

            CloudTable cloudTable = tableClient.getTableReference("");

            return cloudTable;

        } catch (Exception e) {

            e.printStackTrace();

            return null;
        }
    }

    public static Entity getEntity(String rowKey) {
        // TODO Auto-generated method stub

        try {


            TableOperation operation = TableOperation.retrieve("", "", xxx.class);


            Entity entity = AzureTableStorage.getTable().execute(operation).getResultAsType();
            // Output the entity.

            return entity;

        } catch (Exception e) {
            // Output the stack trace.
            e.printStackTrace();
            return null;
        }

    }

}

并使用喜欢

AzureTableStorage.getEntity(rowKey);

这是个坏主意吗?

请问谁能给我一些答案?

顺便说一句,我已经看过了,

Java 静态与实例

Java:何时使用静态方法

但是还是查不出来。

4

1 回答 1

0

根据我的经验,我认为使用 Azure 表存储的设计模式与用于 RDBMS 的 ORM 非常相似,但似乎不再需要考虑性能优化,因为 Azure Java SDK 包装了相关的 REST API。

所以在我看来,在某些情况下使用单例模式来声明static对象CloudClient,例如批处理任务或计划任务。并创建一个容器作为池来控制CloudClient对象的数量,并从池中获取一个Client实例来执行用户会话的操作,包括创建、读取、更新和删除。

GitHub上有一些官方示例作为最佳实践,我认为您可以参考,请参阅https://github.com/Azure/azure-storage-java/tree/master/microsoft-azure-storage-samples/src/ com/microsoft/azure/storage/tablehttps://github.com/Azure-Samples/storage-table-java-getting-started

于 2016-07-13T11:26:33.263 回答