What is the Difference between ‘Word Automation’ and ‘Word Automation Services’?

http://blogs.msdn.com/b/ericwhite/archive/2010/12/07/what-is-the-difference-between-word-automation-and-word-automation-services.aspx


‘Word Automation’ and ‘Word Automation Services’ are two developer building blocks that have similar names, and have overlapping functionality, but are very different pieces of technology.  I received some email about the post Understanding the Three Approaches to Office Development using VSTO where readers were confused about this, so here is the scoop.


This post is one in a series on Microsoft Office 2010 application development. These posts will be published in the future as part of an MSDN article. As usual, after the MSDN article is published, I’ll place pointers in the blog posts to the article on MSDN.

  1. Office/SharePoint Building Blocks and Developer Stories
  2. Overview of Office 2010 Application Development
  3. Office Application Scenarios
  4. Understanding the Three Approaches to Office Development using VSTO
  5. What is the Difference between ‘Word Automation’ and ‘Word Automation Services’?
  6. Understanding the Architecture of Office 2010 Managed Add-Ins and Customizations
  7. Understanding the Difference between Custom Task Panes and Action Panes
  8. Microsoft Word 2010 Developer Building Blocks
  9. Comparing Excel Automation to Excel Services

Word Automation

Word Automation is a technology where you can write a .NET application that uses the Word client executable to accomplish some task such as creating a document, querying a document for content, or modifying the content of a document.  Its roots are COM – in addition to using .NET to link to the Primary Interop Assemblies, you can use C++ or VB6 (or any other technology that can consume COM) to automate the Word client application.  In other words, you write a program that runs Word.  There is a rich object model that you can use to manipulate paragraphs, ranges, comments, etc.  This technology has been around for years.  If you are an experienced Office developer who needed to generate a large number of documents (prior to the introduction of the Open XML SDK), then you have probably used Word Automation at one time or another.

The user operates a .NET managed application that in turn runs the Word 2007 or Word 2010 client.

To make this completely clear, the following small console application starts Word, adds a paragraph, saves it, and then causes the Word application to quit.  You need to add a reference to the Word 2010 PIA.  You find this on the COM tab.

Note that the following sample uses the feature C# 4.0 that allows you to omit arguments that have default values.

using Word = Microsoft.Office.Interop.Word;
 
class Program
{
    static void Main(string[] args)
    {
        Word.Application app = new Word.Application();
        app.Visible = true;
        Word.Document doc = app.Documents.Add();
        Word.Range range = doc.Content;
        Word.Paragraph paragraph = range.Paragraphs.Add();
        paragraph.Range.Text = "Hello World!";
        object saveChanges = true;
        doc.SaveAs2(@"E:\Temp\Test.docx");
        ((Microsoft.Office.Interop.Word._Application)app).Quit();
    }
}
 

This scenario, where you are programmatically generating word-processing documents, is where you should be using the Open XML SDK instead of Word automation.

Word Automation Services

Word Automation Services is a service that runs under SharePoint Server 2010 (both Standard and Enterprise) that can convert documents to and from various formats, and can update content inside Word documents, such as calculated fields (like the table-of-contents).  Word Automation Services is specifically designed to complement the Open XML SDK for server-side scenarios.  Some tasks, such as repagination, updating fields, and importing altChunk elements are difficult to accomplish when using the Open XML SDK, so if your scenario requires those areas of functionality, it’s great to use the Open XML SDK together with Word Automation Services.  Both the Open XML SDK and Word Automation Services are ‘server hardened’.  You can build systems that generate and process hundreds or thousands of documents per day.

To use Word Automation Services, you must write code that runs on the SharePoint server; you cannot directly access Word Automation Services from a client computer.  The Managed Client Object Model does not include a programming interface to Word Automation Services.  See Developing with SharePoint 2010 Word Automation Services for more information.

However, there is an easy way to work around the server-side limitation of Word Automation Services:

  • Write a WCF service that runs on the SharePoint server computer that exposes the functionality that you need in your client application.
  • Write your client application to consume that WCF service, integrating Word Automation Services functionality into the client application.

You might have a scenario where you want to generate a PDF or XPS document based on user input in the client application.  To implement this, you need to expose functions in the WCF service that can take a Word document as input, and returns a PDF or XPS document.  You can then use the Open XML SDK to generate an Open XML word-processing document, and then use your WCF service to do the conversion.

Excel Automation vs Excel Services

Excel has the same possibilities.  You can write a program that automates the Excel client application to accomplish certain scenarios.  Alternatively, you can use Excel Services (part of SharePoint Server 2010 Enterprise) to implement functionality.

In contrast to Word, there are scenarios where using Excel automation is the only way to accomplish specific tasks.  If you need to modify a spreadsheet, such as inserting or deleting a row or column, then the appropriate technology may be to automate the Excel client application.  Inserting a row or column using the Open XML SDK would involve parsing formulas and modifying the parsed formulas, a fairly involved operation.


内容概要:该论文聚焦于6G通信中20-100GHz频段的电磁场(EMF)暴露评估问题,提出了一种基于自适应可重构架构神经网络(RAWA-NN)的预测框架。该框架通过集成权重分析模块和优化模块,能够自动优化网络超参数,显著减少训练时间。模型使用70%的前臂数据进行训练,其余数据用于测试,并用腹部和股四头肌数据验证模型泛化能力。结果显示,该模型在不同参数下的相对差异(RD)在前臂低于2.6%,其他身体部位低于9.5%,可有效预测皮肤表面的温升和吸收功率密度(APD)。此外,论文还提供了详细的代码实现,涵盖数据预处理、权重分析模块、自适应优化模块、RAWA-NN模型构建及训练评估等内容。 适合人群:从事电磁兼容性研究、6G通信技术研发以及对神经网络优化感兴趣的科研人员和工程师。 使用场景及目标:①研究6G通信中高频段电磁暴露对人体的影响;②开发更高效的电磁暴露评估工具;③优化神经网络架构以提高模型训练效率和预测精度。 其他说明:论文不仅提出了理论框架,还提供了完整的代码实现,方便读者复现实验结果。此外,论文还讨论了未来的研究方向,包括扩展到更高频段(如300GHz)的数据处理、引入强化学习优化超参数、以及实现多物理场耦合的智能电磁暴露评估系统。建议读者在实际应用中根据具体需求调整模型架构和参数,并结合真实数据进行验证。
内容概要:本文是北京金融科技产业联盟发布的《基于数据空间的金融数据可信流通研究报告》,探讨了金融数据可信流通的现状、挑战和发展前景。文章首先介绍了金融数据在数字化转型中的重要性及其面临的隐私保护和安全挑战。接着,文章详细阐述了数据空间的概念及其发展历程,尤其是可信数据空间(TDM)在我国的发展情况。文中还深入分析了金融数据可信流通的典型应用场景、关键技术和方案架构,如数据访问控制、数据使用控制、智能合约、数据脱敏等。最后,文章展示了多个典型场景应用案例,如中信银行总分行数据流通管控、工银金租数据流通、银联安全生物特征支付等,并总结了当前可信数据空间建设中存在的法规、技术、标准和商业模式挑战,提出了相应的政策建议。 适用人群:金融行业从业者、数据安全管理人员、政策制定者、科技研发人员等。 使用场景及目标:①理解金融数据可信流通的重要性和挑战;②学习可信数据空间的关键技术和应用场景;③探索金融数据可信流通的具体实践案例;④了解当前可信数据空间建设的瓶颈和未来发展方向。 其他说明:本文不仅提供了详尽的技术和应用分析,还提出了具体的政策建议,有助于推动金融数据可信流通的健康发展。阅读本文可以帮助读者深入了解金融数据安全保护和高效利用的最佳实践,为相关政策和技术的发展提供参考。
### U-Boot Root Filesystem Configuration and Information #### Understanding the Role of U-Boot in Booting a System with RootFS U-Boot (Universal Boot Loader) plays an essential role during system boot-up by initializing hardware components before handing over control to the operating system kernel. For systems that require loading a root file system from various storage devices or network interfaces, configuring U-Boot appropriately is crucial. The NXP-provided version of U-Boot can be obtained through their GitHub repository[^1]. This source code serves as the foundation for customizing U-Boot according to specific needs such as supporting different boards like `s5p_goni` which has been successfully configured using: ```bash make s5p_goni_config ``` This command sets up default configurations suitable for this particular board type[^3]. #### Setting Up Environment Variables for RootFS Loading To configure U-Boot so it knows where to find the root filesystem after starting Linux Kernel, environment variables must be set within U-Boot's configuration space. Commonly used settings include specifying paths related to device trees (`fdt_file`) and root partitions (`bootargs`). An example setup might look like this: ```bash setenv fdt_high 0xffffffff setenv initrd_high 0xffffffff setenv bootcmd 'fatload mmc 0:1 $kernel_addr_r uImage; fatload mmc 0:1 $fdt_addr_r dtb.img; bootm $kernel_addr_r - $fdt_addr_r' setenv bootargs 'console=ttySAC2,115200 root=/dev/mmcblk0p2 rw rootwait' saveenv ``` In this snippet: - The console setting ensures serial output. - The `root=` parameter points to the partition containing the root filesystem on the SD card. - `rw` enables read-write access mode. - `rootwait` delays mounting until the device becomes available. These commands prepare U-Boot to load both the kernel image and device tree binary from FAT-formatted media while passing necessary parameters to initialize the correct block device as the root directory upon startup. #### Handling Different Storage Media Types Depending on whether the target platform uses eMMC, NAND flash, SPI NOR Flash, USB drives, etc., adjustments may need to occur when defining how data should get loaded into memory prior to execution. In some cases, additional drivers could also become required based on chosen peripherals involved in transferring files between external storages and internal RAM buffers. For instance, if working with older versions lacking certain features mentioned earlier regarding unsupported protocols like Kermit, alternative methods involving other supported ones would have to suffice instead[^4]: ```bash loadx 0x05000000 115200 ``` However, more recent releases typically offer broader compatibility across multiple transfer standards including TFTP, NFS, Ymodem among others making integration simpler without requiring manual intervention each time new binaries are introduced onto platforms running customized instances derived from upstream sources provided via repositories similar to what was referenced initially concerning availability channels offered by manufacturers supplying SoCs utilized inside embedded products designed around ARM architectures specifically targeted here today discussing aspects surrounding initialization routines executed early stages preceding full OS takeovers post-power-on sequences initiated either automatically following reset conditions met internally once power rails stabilize sufficiently enough allowing microprocessor cores begin executing instructions stored ROM regions mapped low addresses reserved special purposes outlined technical documentation accompanying chipsets employed throughout design cycles leading final assembly steps completed manufacturing facilities responsible producing units eventually shipped customers worldwide seeking solutions leveraging advanced processing capabilities delivered modern semiconductor technologies implemented silicon wafers fabricated state-of-the-art foundries adhering strict quality assurance practices ensuring reliability performance metrics meet expectations end-users deploying these systems real-world applications ranging consumer electronics industrial automation automotive infotainment medical instrumentation telecommunications infrastructure server farms cloud computing services internet things edge analytics machine learning workloads artificial intelligence research projects educational tools hobbyist experiments maker movements open-source communities collaborative development efforts spanning global networks interconnected researchers developers engineers scientists enthusiasts contributing knowledge sharing innovations accelerating pace discovery pushing boundaries human ingenuity shaping future possibilities emerging tech landscapes continuously evolving digital age characterized rapid advancements unprecedented connectivity pervasive computation transforming societies cultures economies environments globally. --related questions-- 1. How does one modify U-Boot to support newer communication protocols not included out-of-the-box? 2. What considerations exist when choosing between different types of root filesystem implementations for embedded systems? 3. Can you provide examples of common pitfalls encountered during U-Boot customization processes? 4. Is there any difference in handling rootfs configuration between bare metal programming versus using RTOSes? 5. Are there best practices recommended for maintaining secure yet flexible U-Boot setups?
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值