我对访问和处理云存储服务中的数据存有疑虑。
1.我可以使用任何通用API为主流云存储提供商(亚马逊s3,谷歌云存储,Windows Azure)编写应用程序。请指出我在此列表中遗漏的提供商。我专注于仅限企业域,而非个人存储)
2.现在是sdk部分。如果我想编写一个在iCloud中处理数据的应用程序(让我们说一个j2ee应用程序),iCloud sdk是否为我提供了这种灵活性?
3.云存储服务是否会为我提供交易支持?我的意思是支持ACID属性。或者我必须承担责任吗?
答案 0 :(得分:2)
以下是如何使用jClouds存储上下文:
import static
org.jclouds.aws.s3.options.PutObjectOptions.Builder.withAcl;
// get a context with amazon that offers the portable BlobStore API
BlobStoreContext context = new BlobStoreContextFactory().
createContext("aws-s3", accesskeyid, secretkey);
// create a container in the default location
BlobStore blobStore = context.getBlobStore();
blobStore.createContainerInLocation(null, bucket);
// add blob
Blob blob = blobStore.newBlob("test");
blob.setPayload("test data");
blobStore.putBlob(bucket, blob);
// when you need access to s3-specific features,
// use the provider-specific context
AWSS3Client s3Client =
AWSS3Client.class.cast(context.getProviderSpecificContext().getApi());
// make the object world readable
String publicReadWriteObjectKey = "public-read-write-acl";
S3Object object = s3Client.newS3Object();
object.getMetadata().setKey(publicReadWriteObjectKey);
object.setPayload("hello world");
s3Client.putObject(bucket, object, withAcl(CannedAccessPolicy.PUBLIC_READ));
context.close();
答案 1 :(得分:1)
任何云服务提供商的基础都是使用REST接口。只要该语言支持网络和PKI安全基础结构,您就可以使用任何语言来包装REST请求。所有现代语言都有这样的功能。
在大多数情况下,任何SDK都只是这些REST接口的包装器,因此您可以非常轻松地编写编码器,同步或异步方式并获得您正在查找的内容。 SDK只是将工作加速到多方面,与直接使用REST相比。这并不意味着你不能使用REST direclty,它只是一个SDK来帮助你连接到特定的云服务。
如何实施SDK以及它提供的功能类型,从提供商到提供商以及他们拥有的服务各不相同。您无法使用适用于Amazon Cloud的Windows Azure SDK,因为内部服务连接端点和底层接口都封装在SDK本身中。这并不意味着无法创建SDK来连接所有提供的云服务,但是每个云服务都为其云服务提供个性化的SDK。
云服务为用户提供部署其应用程序和ACID的基础架构和平台,您将不得不处理应用程序级别的工作,但ACID可能是一个完全独立且冗长的讨论。
答案 2 :(得分:0)
关于你的3个问题:
答案 3 :(得分:0)
问题1.如果您询问列出的所有服务是否共享一个通用API,请参阅。他们都使用REST,这意味着你可以使用任何一个JSON,但调用将有不同的名称和可能的语法。
答案 4 :(得分:-1)
您只能通过Apple的iOs和Mac OS X SDK使用iCloud。我几乎可以肯定您无法从j2ee应用程序访问它。